block: return errors from blk_integrity_add
authorLuis Chamberlain <mcgrof@kernel.org>
Wed, 18 Aug 2021 14:45:38 +0000 (16:45 +0200)
committerJens Axboe <axboe@kernel.dk>
Mon, 23 Aug 2021 18:55:45 +0000 (12:55 -0600)
Prepare for proper error handling in add_disk.

Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
[hch: split from a larger patch]
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Link: https://lore.kernel.org/r/20210818144542.19305-8-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-integrity.c
block/blk.h

index 410da060d1f5ad232d6ff80047642c88ba50ce95..69a12177dfb62f6d1f1fc3f1f1166ca52cceae5c 100644 (file)
@@ -431,13 +431,15 @@ void blk_integrity_unregister(struct gendisk *disk)
 }
 EXPORT_SYMBOL(blk_integrity_unregister);
 
-void blk_integrity_add(struct gendisk *disk)
+int blk_integrity_add(struct gendisk *disk)
 {
-       if (kobject_init_and_add(&disk->integrity_kobj, &integrity_ktype,
-                                &disk_to_dev(disk)->kobj, "%s", "integrity"))
-               return;
+       int ret;
 
-       kobject_uevent(&disk->integrity_kobj, KOBJ_ADD);
+       ret = kobject_init_and_add(&disk->integrity_kobj, &integrity_ktype,
+                                  &disk_to_dev(disk)->kobj, "%s", "integrity");
+       if (!ret)
+               kobject_uevent(&disk->integrity_kobj, KOBJ_ADD);
+       return ret;
 }
 
 void blk_integrity_del(struct gendisk *disk)
index 148bdcd3aa08493ce170211029f0032e635d5711..c9727dd56da799f3dcc9218806ae6ee3bbdd9f41 100644 (file)
@@ -132,7 +132,7 @@ static inline bool integrity_req_gap_front_merge(struct request *req,
                                bip_next->bip_vec[0].bv_offset);
 }
 
-void blk_integrity_add(struct gendisk *);
+int blk_integrity_add(struct gendisk *disk);
 void blk_integrity_del(struct gendisk *);
 #else /* CONFIG_BLK_DEV_INTEGRITY */
 static inline bool blk_integrity_merge_rq(struct request_queue *rq,
@@ -166,8 +166,9 @@ static inline bool bio_integrity_endio(struct bio *bio)
 static inline void bio_integrity_free(struct bio *bio)
 {
 }
-static inline void blk_integrity_add(struct gendisk *disk)
+static inline int blk_integrity_add(struct gendisk *disk)
 {
+       return 0;
 }
 static inline void blk_integrity_del(struct gendisk *disk)
 {