diff options
-rw-r--r-- | block/blk-integrity.c | 22 | ||||
-rw-r--r-- | include/linux/blkdev.h | 2 | ||||
-rw-r--r-- | include/linux/genhd.h | 1 |
3 files changed, 12 insertions, 13 deletions
diff --git a/block/blk-integrity.c b/block/blk-integrity.c index 75f29cf70188..182bfd2383ea 100644 --- a/block/blk-integrity.c +++ b/block/blk-integrity.c | |||
@@ -249,8 +249,8 @@ struct integrity_sysfs_entry { | |||
249 | static ssize_t integrity_attr_show(struct kobject *kobj, struct attribute *attr, | 249 | static ssize_t integrity_attr_show(struct kobject *kobj, struct attribute *attr, |
250 | char *page) | 250 | char *page) |
251 | { | 251 | { |
252 | struct blk_integrity *bi = | 252 | struct gendisk *disk = container_of(kobj, struct gendisk, integrity_kobj); |
253 | container_of(kobj, struct blk_integrity, kobj); | 253 | struct blk_integrity *bi = blk_get_integrity(disk); |
254 | struct integrity_sysfs_entry *entry = | 254 | struct integrity_sysfs_entry *entry = |
255 | container_of(attr, struct integrity_sysfs_entry, attr); | 255 | container_of(attr, struct integrity_sysfs_entry, attr); |
256 | 256 | ||
@@ -261,8 +261,8 @@ static ssize_t integrity_attr_store(struct kobject *kobj, | |||
261 | struct attribute *attr, const char *page, | 261 | struct attribute *attr, const char *page, |
262 | size_t count) | 262 | size_t count) |
263 | { | 263 | { |
264 | struct blk_integrity *bi = | 264 | struct gendisk *disk = container_of(kobj, struct gendisk, integrity_kobj); |
265 | container_of(kobj, struct blk_integrity, kobj); | 265 | struct blk_integrity *bi = blk_get_integrity(disk); |
266 | struct integrity_sysfs_entry *entry = | 266 | struct integrity_sysfs_entry *entry = |
267 | container_of(attr, struct integrity_sysfs_entry, attr); | 267 | container_of(attr, struct integrity_sysfs_entry, attr); |
268 | ssize_t ret = 0; | 268 | ssize_t ret = 0; |
@@ -385,8 +385,8 @@ subsys_initcall(blk_dev_integrity_init); | |||
385 | 385 | ||
386 | static void blk_integrity_release(struct kobject *kobj) | 386 | static void blk_integrity_release(struct kobject *kobj) |
387 | { | 387 | { |
388 | struct blk_integrity *bi = | 388 | struct gendisk *disk = container_of(kobj, struct gendisk, integrity_kobj); |
389 | container_of(kobj, struct blk_integrity, kobj); | 389 | struct blk_integrity *bi = blk_get_integrity(disk); |
390 | 390 | ||
391 | kmem_cache_free(integrity_cachep, bi); | 391 | kmem_cache_free(integrity_cachep, bi); |
392 | } | 392 | } |
@@ -429,14 +429,14 @@ int blk_integrity_register(struct gendisk *disk, struct blk_integrity *template) | |||
429 | if (!bi) | 429 | if (!bi) |
430 | return -1; | 430 | return -1; |
431 | 431 | ||
432 | if (kobject_init_and_add(&bi->kobj, &integrity_ktype, | 432 | if (kobject_init_and_add(&disk->integrity_kobj, &integrity_ktype, |
433 | &disk_to_dev(disk)->kobj, | 433 | &disk_to_dev(disk)->kobj, |
434 | "%s", "integrity")) { | 434 | "%s", "integrity")) { |
435 | kmem_cache_free(integrity_cachep, bi); | 435 | kmem_cache_free(integrity_cachep, bi); |
436 | return -1; | 436 | return -1; |
437 | } | 437 | } |
438 | 438 | ||
439 | kobject_uevent(&bi->kobj, KOBJ_ADD); | 439 | kobject_uevent(&disk->integrity_kobj, KOBJ_ADD); |
440 | 440 | ||
441 | bi->flags |= BLK_INTEGRITY_VERIFY | BLK_INTEGRITY_GENERATE; | 441 | bi->flags |= BLK_INTEGRITY_VERIFY | BLK_INTEGRITY_GENERATE; |
442 | bi->interval = queue_logical_block_size(disk->queue); | 442 | bi->interval = queue_logical_block_size(disk->queue); |
@@ -479,9 +479,9 @@ void blk_integrity_unregister(struct gendisk *disk) | |||
479 | 479 | ||
480 | bi = disk->integrity; | 480 | bi = disk->integrity; |
481 | 481 | ||
482 | kobject_uevent(&bi->kobj, KOBJ_REMOVE); | 482 | kobject_uevent(&disk->integrity_kobj, KOBJ_REMOVE); |
483 | kobject_del(&bi->kobj); | 483 | kobject_del(&disk->integrity_kobj); |
484 | kobject_put(&bi->kobj); | 484 | kobject_put(&disk->integrity_kobj); |
485 | disk->integrity = NULL; | 485 | disk->integrity = NULL; |
486 | } | 486 | } |
487 | EXPORT_SYMBOL(blk_integrity_unregister); | 487 | EXPORT_SYMBOL(blk_integrity_unregister); |
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 19c2e947d4d1..830f9c07d4bb 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h | |||
@@ -1472,8 +1472,6 @@ struct blk_integrity { | |||
1472 | unsigned short tag_size; | 1472 | unsigned short tag_size; |
1473 | 1473 | ||
1474 | const char *name; | 1474 | const char *name; |
1475 | |||
1476 | struct kobject kobj; | ||
1477 | }; | 1475 | }; |
1478 | 1476 | ||
1479 | extern bool blk_integrity_is_initialized(struct gendisk *); | 1477 | extern bool blk_integrity_is_initialized(struct gendisk *); |
diff --git a/include/linux/genhd.h b/include/linux/genhd.h index 2adbfa6d02bc..9e6e0dfa97ad 100644 --- a/include/linux/genhd.h +++ b/include/linux/genhd.h | |||
@@ -199,6 +199,7 @@ struct gendisk { | |||
199 | struct disk_events *ev; | 199 | struct disk_events *ev; |
200 | #ifdef CONFIG_BLK_DEV_INTEGRITY | 200 | #ifdef CONFIG_BLK_DEV_INTEGRITY |
201 | struct blk_integrity *integrity; | 201 | struct blk_integrity *integrity; |
202 | struct kobject integrity_kobj; | ||
202 | #endif | 203 | #endif |
203 | int node_id; | 204 | int node_id; |
204 | }; | 205 | }; |