linux-block.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/9] block: reviewed add_disk() error handling set
@ 2021-10-15 23:30 Luis Chamberlain
  2021-10-15 23:30 ` [PATCH 1/9] scsi/sd: add error handling support for add_disk() Luis Chamberlain
                   ` (10 more replies)
  0 siblings, 11 replies; 16+ messages in thread
From: Luis Chamberlain @ 2021-10-15 23:30 UTC (permalink / raw)
  To: axboe, jejb, martin.petersen, agk, snitzer, colyli,
	kent.overstreet, boris.ostrovsky, jgross, sstabellini, roger.pau,
	geert, ulf.hansson, tj, hare, jdike, richard, anton.ivanov,
	johannes.berg, krisman, chris.obbard, thehajime, zhuyifei1999,
	haris.iqbal, jinpu.wang, miquel.raynal, vigneshr, linux-mtd
  Cc: linux-scsi, dm-devel, linux-bcache, xen-devel, linux-m68k,
	linux-um, linux-block, linux-kernel, Luis Chamberlain

Jens,

I had last split up patches into 7 groups, but at this point now
most changes are merged except a few more drivers. Instead of creating
a new patch set for each of the 7 groups I'm creating 3 new groups of
patches now:

  * This set, for which we already have an Acked-by or Reviewed-by tag,
    it would be nice to get clarification of driver maintainers want
    these to go through you or if a the maintainers want to pick these
    changes up themselves.

  * A second set will deal with patches which have no reviews done for
    them yet 

  * The last set deals with the __register_blkdev() change and the
    __must_check change which ensures we don't let in new drivers
    which don't deal with error handling.

If you're a maintainer of any of the below patches and wish for them to
go through Jens' tree directly now would be a good time to say so or
you can just pick the patch up yourself.

Luis Chamberlain (9):
  scsi/sd: add error handling support for add_disk()
  scsi/sr: add error handling support for add_disk()
  dm: add add_disk() error handling
  bcache: add error handling support for add_disk()
  xen-blkfront: add error handling support for add_disk()
  m68k/emu/nfblock: add error handling support for add_disk()
  um/drivers/ubd_kern: add error handling support for add_disk()
  rnbd: add error handling support for add_disk()
  mtd: add add_disk() error handling

 arch/m68k/emu/nfblock.c       |  9 +++++++--
 arch/um/drivers/ubd_kern.c    | 13 +++++++++----
 drivers/block/rnbd/rnbd-clt.c | 13 +++++++++----
 drivers/block/xen-blkfront.c  |  8 +++++++-
 drivers/md/bcache/super.c     | 17 ++++++++++++-----
 drivers/md/dm.c               |  4 +++-
 drivers/mtd/mtd_blkdevs.c     |  6 +++++-
 drivers/scsi/sd.c             |  8 +++++++-
 drivers/scsi/sr.c             |  7 ++++++-
 9 files changed, 65 insertions(+), 20 deletions(-)

-- 
2.30.2


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 1/9] scsi/sd: add error handling support for add_disk()
  2021-10-15 23:30 [PATCH 0/9] block: reviewed add_disk() error handling set Luis Chamberlain
@ 2021-10-15 23:30 ` Luis Chamberlain
  2021-10-17  2:51   ` Martin K. Petersen
  2021-10-15 23:30 ` [PATCH 2/9] scsi/sr: " Luis Chamberlain
                   ` (9 subsequent siblings)
  10 siblings, 1 reply; 16+ messages in thread
From: Luis Chamberlain @ 2021-10-15 23:30 UTC (permalink / raw)
  To: axboe, jejb, martin.petersen, agk, snitzer, colyli,
	kent.overstreet, boris.ostrovsky, jgross, sstabellini, roger.pau,
	geert, ulf.hansson, tj, hare, jdike, richard, anton.ivanov,
	johannes.berg, krisman, chris.obbard, thehajime, zhuyifei1999,
	haris.iqbal, jinpu.wang, miquel.raynal, vigneshr, linux-mtd
  Cc: linux-scsi, dm-devel, linux-bcache, xen-devel, linux-m68k,
	linux-um, linux-block, linux-kernel, Luis Chamberlain,
	Christoph Hellwig

We never checked for errors on add_disk() as this function
returned void. Now that this is fixed, use the shiny new
error handling.

As with the error handling for device_add() we follow the same
logic and just put the device so that cleanup is done via the
scsi_disk_release().

Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
---
 drivers/scsi/sd.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
index a646d27df681..d69f2e626e76 100644
--- a/drivers/scsi/sd.c
+++ b/drivers/scsi/sd.c
@@ -3457,7 +3457,13 @@ static int sd_probe(struct device *dev)
 		pm_runtime_set_autosuspend_delay(dev,
 			sdp->host->hostt->rpm_autosuspend_delay);
 	}
-	device_add_disk(dev, gd, NULL);
+
+	error = device_add_disk(dev, gd, NULL);
+	if (error) {
+		put_device(&sdkp->dev);
+		goto out;
+	}
+
 	if (sdkp->capacity)
 		sd_dif_config_host(sdkp);
 
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH 2/9] scsi/sr: add error handling support for add_disk()
  2021-10-15 23:30 [PATCH 0/9] block: reviewed add_disk() error handling set Luis Chamberlain
  2021-10-15 23:30 ` [PATCH 1/9] scsi/sd: add error handling support for add_disk() Luis Chamberlain
@ 2021-10-15 23:30 ` Luis Chamberlain
  2021-10-17  2:53   ` Martin K. Petersen
  2021-10-15 23:30 ` [PATCH 3/9] dm: add add_disk() error handling Luis Chamberlain
                   ` (8 subsequent siblings)
  10 siblings, 1 reply; 16+ messages in thread
From: Luis Chamberlain @ 2021-10-15 23:30 UTC (permalink / raw)
  To: axboe, jejb, martin.petersen, agk, snitzer, colyli,
	kent.overstreet, boris.ostrovsky, jgross, sstabellini, roger.pau,
	geert, ulf.hansson, tj, hare, jdike, richard, anton.ivanov,
	johannes.berg, krisman, chris.obbard, thehajime, zhuyifei1999,
	haris.iqbal, jinpu.wang, miquel.raynal, vigneshr, linux-mtd
  Cc: linux-scsi, dm-devel, linux-bcache, xen-devel, linux-m68k,
	linux-um, linux-block, linux-kernel, Luis Chamberlain,
	Christoph Hellwig

We never checked for errors on add_disk() as this function
returned void. Now that this is fixed, use the shiny new
error handling.

Just put the cdrom kref and have the unwinding be done by
sr_kref_release().

Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
---
 drivers/scsi/sr.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/scsi/sr.c b/drivers/scsi/sr.c
index 115f7ef7a5de..4e5515848fa6 100644
--- a/drivers/scsi/sr.c
+++ b/drivers/scsi/sr.c
@@ -728,7 +728,12 @@ static int sr_probe(struct device *dev)
 	dev_set_drvdata(dev, cd);
 	disk->flags |= GENHD_FL_REMOVABLE;
 	sr_revalidate_disk(cd);
-	device_add_disk(&sdev->sdev_gendev, disk, NULL);
+
+	error = device_add_disk(&sdev->sdev_gendev, disk, NULL);
+	if (error) {
+		kref_put(&cd->kref, sr_kref_release);
+		goto fail;
+	}
 
 	sdev_printk(KERN_DEBUG, sdev,
 		    "Attached scsi CD-ROM %s\n", cd->cdi.name);
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH 3/9] dm: add add_disk() error handling
  2021-10-15 23:30 [PATCH 0/9] block: reviewed add_disk() error handling set Luis Chamberlain
  2021-10-15 23:30 ` [PATCH 1/9] scsi/sd: add error handling support for add_disk() Luis Chamberlain
  2021-10-15 23:30 ` [PATCH 2/9] scsi/sr: " Luis Chamberlain
@ 2021-10-15 23:30 ` Luis Chamberlain
  2021-10-15 23:30 ` [PATCH 4/9] bcache: add error handling support for add_disk() Luis Chamberlain
                   ` (7 subsequent siblings)
  10 siblings, 0 replies; 16+ messages in thread
From: Luis Chamberlain @ 2021-10-15 23:30 UTC (permalink / raw)
  To: axboe, jejb, martin.petersen, agk, snitzer, colyli,
	kent.overstreet, boris.ostrovsky, jgross, sstabellini, roger.pau,
	geert, ulf.hansson, tj, hare, jdike, richard, anton.ivanov,
	johannes.berg, krisman, chris.obbard, thehajime, zhuyifei1999,
	haris.iqbal, jinpu.wang, miquel.raynal, vigneshr, linux-mtd
  Cc: linux-scsi, dm-devel, linux-bcache, xen-devel, linux-m68k,
	linux-um, linux-block, linux-kernel, Luis Chamberlain

We never checked for errors on add_disk() as this function
returned void. Now that this is fixed, use the shiny new
error handling.

There are two calls to dm_setup_md_queue() which can fail then,
one on dm_early_create() and we can easily see that the error path
there calls dm_destroy in the error path. The other use case is on
the ioctl table_load case. If that fails userspace needs to call
the DM_DEV_REMOVE_CMD to cleanup the state - similar to any other
failure.

Reviewed-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
---
 drivers/md/dm.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/md/dm.c b/drivers/md/dm.c
index 245fa4153306..6d3265ed37c0 100644
--- a/drivers/md/dm.c
+++ b/drivers/md/dm.c
@@ -2086,7 +2086,9 @@ int dm_setup_md_queue(struct mapped_device *md, struct dm_table *t)
 	if (r)
 		return r;
 
-	add_disk(md->disk);
+	r = add_disk(md->disk);
+	if (r)
+		return r;
 
 	r = dm_sysfs_init(md);
 	if (r) {
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH 4/9] bcache: add error handling support for add_disk()
  2021-10-15 23:30 [PATCH 0/9] block: reviewed add_disk() error handling set Luis Chamberlain
                   ` (2 preceding siblings ...)
  2021-10-15 23:30 ` [PATCH 3/9] dm: add add_disk() error handling Luis Chamberlain
@ 2021-10-15 23:30 ` Luis Chamberlain
  2021-10-15 23:30 ` [PATCH 5/9] xen-blkfront: " Luis Chamberlain
                   ` (6 subsequent siblings)
  10 siblings, 0 replies; 16+ messages in thread
From: Luis Chamberlain @ 2021-10-15 23:30 UTC (permalink / raw)
  To: axboe, jejb, martin.petersen, agk, snitzer, colyli,
	kent.overstreet, boris.ostrovsky, jgross, sstabellini, roger.pau,
	geert, ulf.hansson, tj, hare, jdike, richard, anton.ivanov,
	johannes.berg, krisman, chris.obbard, thehajime, zhuyifei1999,
	haris.iqbal, jinpu.wang, miquel.raynal, vigneshr, linux-mtd
  Cc: linux-scsi, dm-devel, linux-bcache, xen-devel, linux-m68k,
	linux-um, linux-block, linux-kernel, Luis Chamberlain

We never checked for errors on add_disk() as this function
returned void. Now that this is fixed, use the shiny new
error handling.

This driver doesn't do any unwinding with blk_cleanup_disk()
even on errors after add_disk() and so we follow that
tradition.

Acked-by: Coly Li <colyli@suse.de>
Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
---
 drivers/md/bcache/super.c | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/drivers/md/bcache/super.c b/drivers/md/bcache/super.c
index f2874c77ff79..f0c32cdd6594 100644
--- a/drivers/md/bcache/super.c
+++ b/drivers/md/bcache/super.c
@@ -1082,7 +1082,9 @@ int bch_cached_dev_run(struct cached_dev *dc)
 		closure_sync(&cl);
 	}
 
-	add_disk(d->disk);
+	ret = add_disk(d->disk);
+	if (ret)
+		goto out;
 	bd_link_disk_holder(dc->bdev, dc->disk.disk);
 	/*
 	 * won't show up in the uevent file, use udevadm monitor -e instead
@@ -1534,10 +1536,11 @@ static void flash_dev_flush(struct closure *cl)
 
 static int flash_dev_run(struct cache_set *c, struct uuid_entry *u)
 {
+	int err = -ENOMEM;
 	struct bcache_device *d = kzalloc(sizeof(struct bcache_device),
 					  GFP_KERNEL);
 	if (!d)
-		return -ENOMEM;
+		goto err_ret;
 
 	closure_init(&d->cl, NULL);
 	set_closure_fn(&d->cl, flash_dev_flush, system_wq);
@@ -1551,9 +1554,12 @@ static int flash_dev_run(struct cache_set *c, struct uuid_entry *u)
 	bcache_device_attach(d, c, u - c->uuids);
 	bch_sectors_dirty_init(d);
 	bch_flash_dev_request_init(d);
-	add_disk(d->disk);
+	err = add_disk(d->disk);
+	if (err)
+		goto err;
 
-	if (kobject_add(&d->kobj, &disk_to_dev(d->disk)->kobj, "bcache"))
+	err = kobject_add(&d->kobj, &disk_to_dev(d->disk)->kobj, "bcache");
+	if (err)
 		goto err;
 
 	bcache_device_link(d, c, "volume");
@@ -1567,7 +1573,8 @@ static int flash_dev_run(struct cache_set *c, struct uuid_entry *u)
 	return 0;
 err:
 	kobject_put(&d->kobj);
-	return -ENOMEM;
+err_ret:
+	return err;
 }
 
 static int flash_devs_run(struct cache_set *c)
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH 5/9] xen-blkfront: add error handling support for add_disk()
  2021-10-15 23:30 [PATCH 0/9] block: reviewed add_disk() error handling set Luis Chamberlain
                   ` (3 preceding siblings ...)
  2021-10-15 23:30 ` [PATCH 4/9] bcache: add error handling support for add_disk() Luis Chamberlain
@ 2021-10-15 23:30 ` Luis Chamberlain
  2021-10-15 23:30 ` [PATCH 6/9] m68k/emu/nfblock: " Luis Chamberlain
                   ` (5 subsequent siblings)
  10 siblings, 0 replies; 16+ messages in thread
From: Luis Chamberlain @ 2021-10-15 23:30 UTC (permalink / raw)
  To: axboe, jejb, martin.petersen, agk, snitzer, colyli,
	kent.overstreet, boris.ostrovsky, jgross, sstabellini, roger.pau,
	geert, ulf.hansson, tj, hare, jdike, richard, anton.ivanov,
	johannes.berg, krisman, chris.obbard, thehajime, zhuyifei1999,
	haris.iqbal, jinpu.wang, miquel.raynal, vigneshr, linux-mtd
  Cc: linux-scsi, dm-devel, linux-bcache, xen-devel, linux-m68k,
	linux-um, linux-block, linux-kernel, Luis Chamberlain

We never checked for errors on device_add_disk() as this function
returned void. Now that this is fixed, use the shiny new error
handling. The function xlvbd_alloc_gendisk() typically does the
unwinding on error on allocating the disk and creating the tag,
but since all that error handling was stuffed inside
xlvbd_alloc_gendisk() we must repeat the tag free'ing as well.

We set the info->rq to NULL to ensure blkif_free() doesn't crash
on blk_mq_stop_hw_queues() on device_add_disk() error as the queue
will be long gone by then.

Reviewed-by: Juergen Gross <jgross@suse.com>
Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
---
 drivers/block/xen-blkfront.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/drivers/block/xen-blkfront.c b/drivers/block/xen-blkfront.c
index df0deb927760..8e3983e456f3 100644
--- a/drivers/block/xen-blkfront.c
+++ b/drivers/block/xen-blkfront.c
@@ -2386,7 +2386,13 @@ static void blkfront_connect(struct blkfront_info *info)
 	for_each_rinfo(info, rinfo, i)
 		kick_pending_request_queues(rinfo);
 
-	device_add_disk(&info->xbdev->dev, info->gd, NULL);
+	err = device_add_disk(&info->xbdev->dev, info->gd, NULL);
+	if (err) {
+		blk_cleanup_disk(info->gd);
+		blk_mq_free_tag_set(&info->tag_set);
+		info->rq = NULL;
+		goto fail;
+	}
 
 	info->is_ready = 1;
 	return;
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH 6/9] m68k/emu/nfblock: add error handling support for add_disk()
  2021-10-15 23:30 [PATCH 0/9] block: reviewed add_disk() error handling set Luis Chamberlain
                   ` (4 preceding siblings ...)
  2021-10-15 23:30 ` [PATCH 5/9] xen-blkfront: " Luis Chamberlain
@ 2021-10-15 23:30 ` Luis Chamberlain
  2021-10-15 23:30 ` [PATCH 7/9] um/drivers/ubd_kern: " Luis Chamberlain
                   ` (4 subsequent siblings)
  10 siblings, 0 replies; 16+ messages in thread
From: Luis Chamberlain @ 2021-10-15 23:30 UTC (permalink / raw)
  To: axboe, jejb, martin.petersen, agk, snitzer, colyli,
	kent.overstreet, boris.ostrovsky, jgross, sstabellini, roger.pau,
	geert, ulf.hansson, tj, hare, jdike, richard, anton.ivanov,
	johannes.berg, krisman, chris.obbard, thehajime, zhuyifei1999,
	haris.iqbal, jinpu.wang, miquel.raynal, vigneshr, linux-mtd
  Cc: linux-scsi, dm-devel, linux-bcache, xen-devel, linux-m68k,
	linux-um, linux-block, linux-kernel, Luis Chamberlain

We never checked for errors on add_disk() as this function
returned void. Now that this is fixed, use the shiny new
error handling.

Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org>
Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
---
 arch/m68k/emu/nfblock.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/arch/m68k/emu/nfblock.c b/arch/m68k/emu/nfblock.c
index 9a8394e96388..4de5a6087034 100644
--- a/arch/m68k/emu/nfblock.c
+++ b/arch/m68k/emu/nfblock.c
@@ -100,6 +100,7 @@ static int __init nfhd_init_one(int id, u32 blocks, u32 bsize)
 {
 	struct nfhd_device *dev;
 	int dev_id = id - NFHD_DEV_OFFSET;
+	int err = -ENOMEM;
 
 	pr_info("nfhd%u: found device with %u blocks (%u bytes)\n", dev_id,
 		blocks, bsize);
@@ -130,16 +131,20 @@ static int __init nfhd_init_one(int id, u32 blocks, u32 bsize)
 	sprintf(dev->disk->disk_name, "nfhd%u", dev_id);
 	set_capacity(dev->disk, (sector_t)blocks * (bsize / 512));
 	blk_queue_logical_block_size(dev->disk->queue, bsize);
-	add_disk(dev->disk);
+	err = add_disk(dev->disk);
+	if (err)
+		goto out_cleanup_disk;
 
 	list_add_tail(&dev->list, &nfhd_list);
 
 	return 0;
 
+out_cleanup_disk:
+	blk_cleanup_disk(dev->disk);
 free_dev:
 	kfree(dev);
 out:
-	return -ENOMEM;
+	return err;
 }
 
 static int __init nfhd_init(void)
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH 7/9] um/drivers/ubd_kern: add error handling support for add_disk()
  2021-10-15 23:30 [PATCH 0/9] block: reviewed add_disk() error handling set Luis Chamberlain
                   ` (5 preceding siblings ...)
  2021-10-15 23:30 ` [PATCH 6/9] m68k/emu/nfblock: " Luis Chamberlain
@ 2021-10-15 23:30 ` Luis Chamberlain
  2021-10-15 23:30 ` [PATCH 8/9] rnbd: " Luis Chamberlain
                   ` (3 subsequent siblings)
  10 siblings, 0 replies; 16+ messages in thread
From: Luis Chamberlain @ 2021-10-15 23:30 UTC (permalink / raw)
  To: axboe, jejb, martin.petersen, agk, snitzer, colyli,
	kent.overstreet, boris.ostrovsky, jgross, sstabellini, roger.pau,
	geert, ulf.hansson, tj, hare, jdike, richard, anton.ivanov,
	johannes.berg, krisman, chris.obbard, thehajime, zhuyifei1999,
	haris.iqbal, jinpu.wang, miquel.raynal, vigneshr, linux-mtd
  Cc: linux-scsi, dm-devel, linux-bcache, xen-devel, linux-m68k,
	linux-um, linux-block, linux-kernel, Luis Chamberlain

We never checked for errors on add_disk() as this function
returned void. Now that this is fixed, use the shiny new
error handling.

ubd_disk_register() never returned an error, so just fix
that now and let the caller handle the error condition.

Reviewed-by: Gabriel Krisman Bertazi <krisman@collabora.com>
Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
---
 arch/um/drivers/ubd_kern.c | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/arch/um/drivers/ubd_kern.c b/arch/um/drivers/ubd_kern.c
index fefd343412c7..69d2d0049a61 100644
--- a/arch/um/drivers/ubd_kern.c
+++ b/arch/um/drivers/ubd_kern.c
@@ -855,8 +855,8 @@ static const struct attribute_group *ubd_attr_groups[] = {
 	NULL,
 };
 
-static void ubd_disk_register(int major, u64 size, int unit,
-			      struct gendisk *disk)
+static int ubd_disk_register(int major, u64 size, int unit,
+			     struct gendisk *disk)
 {
 	disk->major = major;
 	disk->first_minor = unit << UBD_SHIFT;
@@ -873,7 +873,7 @@ static void ubd_disk_register(int major, u64 size, int unit,
 
 	disk->private_data = &ubd_devs[unit];
 	disk->queue = ubd_devs[unit].queue;
-	device_add_disk(&ubd_devs[unit].pdev.dev, disk, ubd_attr_groups);
+	return device_add_disk(&ubd_devs[unit].pdev.dev, disk, ubd_attr_groups);
 }
 
 #define ROUND_BLOCK(n) ((n + (SECTOR_SIZE - 1)) & (-SECTOR_SIZE))
@@ -920,10 +920,15 @@ static int ubd_add(int n, char **error_out)
 	blk_queue_write_cache(ubd_dev->queue, true, false);
 	blk_queue_max_segments(ubd_dev->queue, MAX_SG);
 	blk_queue_segment_boundary(ubd_dev->queue, PAGE_SIZE - 1);
-	ubd_disk_register(UBD_MAJOR, ubd_dev->size, n, disk);
+	err = ubd_disk_register(UBD_MAJOR, ubd_dev->size, n, disk);
+	if (err)
+		goto out_cleanup_disk;
+
 	ubd_gendisk[n] = disk;
 	return 0;
 
+out_cleanup_disk:
+	blk_cleanup_disk(disk);
 out_cleanup_tags:
 	blk_mq_free_tag_set(&ubd_dev->tag_set);
 out:
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH 8/9] rnbd: add error handling support for add_disk()
  2021-10-15 23:30 [PATCH 0/9] block: reviewed add_disk() error handling set Luis Chamberlain
                   ` (6 preceding siblings ...)
  2021-10-15 23:30 ` [PATCH 7/9] um/drivers/ubd_kern: " Luis Chamberlain
@ 2021-10-15 23:30 ` Luis Chamberlain
  2021-10-15 23:30 ` [PATCH 9/9] mtd: add add_disk() error handling Luis Chamberlain
                   ` (2 subsequent siblings)
  10 siblings, 0 replies; 16+ messages in thread
From: Luis Chamberlain @ 2021-10-15 23:30 UTC (permalink / raw)
  To: axboe, jejb, martin.petersen, agk, snitzer, colyli,
	kent.overstreet, boris.ostrovsky, jgross, sstabellini, roger.pau,
	geert, ulf.hansson, tj, hare, jdike, richard, anton.ivanov,
	johannes.berg, krisman, chris.obbard, thehajime, zhuyifei1999,
	haris.iqbal, jinpu.wang, miquel.raynal, vigneshr, linux-mtd
  Cc: linux-scsi, dm-devel, linux-bcache, xen-devel, linux-m68k,
	linux-um, linux-block, linux-kernel, Luis Chamberlain

We never checked for errors on add_disk() as this function
returned void. Now that this is fixed, use the shiny new
error handling.

Acked-by: Jack Wang <jinpu.wang@ionos.com>
Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
---
 drivers/block/rnbd/rnbd-clt.c | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/drivers/block/rnbd/rnbd-clt.c b/drivers/block/rnbd/rnbd-clt.c
index 5864c9b46cb9..3b78dc55a9a2 100644
--- a/drivers/block/rnbd/rnbd-clt.c
+++ b/drivers/block/rnbd/rnbd-clt.c
@@ -1384,8 +1384,10 @@ static void setup_request_queue(struct rnbd_clt_dev *dev)
 	blk_queue_write_cache(dev->queue, dev->wc, dev->fua);
 }
 
-static void rnbd_clt_setup_gen_disk(struct rnbd_clt_dev *dev, int idx)
+static int rnbd_clt_setup_gen_disk(struct rnbd_clt_dev *dev, int idx)
 {
+	int err;
+
 	dev->gd->major		= rnbd_client_major;
 	dev->gd->first_minor	= idx << RNBD_PART_BITS;
 	dev->gd->minors		= 1 << RNBD_PART_BITS;
@@ -1410,7 +1412,11 @@ static void rnbd_clt_setup_gen_disk(struct rnbd_clt_dev *dev, int idx)
 
 	if (!dev->rotational)
 		blk_queue_flag_set(QUEUE_FLAG_NONROT, dev->queue);
-	add_disk(dev->gd);
+	err = add_disk(dev->gd);
+	if (err)
+		blk_cleanup_disk(dev->gd);
+
+	return err;
 }
 
 static int rnbd_client_setup_device(struct rnbd_clt_dev *dev)
@@ -1426,8 +1432,7 @@ static int rnbd_client_setup_device(struct rnbd_clt_dev *dev)
 	rnbd_init_mq_hw_queues(dev);
 
 	setup_request_queue(dev);
-	rnbd_clt_setup_gen_disk(dev, idx);
-	return 0;
+	return rnbd_clt_setup_gen_disk(dev, idx);
 }
 
 static struct rnbd_clt_dev *init_dev(struct rnbd_clt_session *sess,
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH 9/9] mtd: add add_disk() error handling
  2021-10-15 23:30 [PATCH 0/9] block: reviewed add_disk() error handling set Luis Chamberlain
                   ` (7 preceding siblings ...)
  2021-10-15 23:30 ` [PATCH 8/9] rnbd: " Luis Chamberlain
@ 2021-10-15 23:30 ` Luis Chamberlain
  2021-10-21  3:42 ` [PATCH 0/9] block: reviewed add_disk() error handling set Martin K. Petersen
  2021-10-21 15:01 ` (subset) " Jens Axboe
  10 siblings, 0 replies; 16+ messages in thread
From: Luis Chamberlain @ 2021-10-15 23:30 UTC (permalink / raw)
  To: axboe, jejb, martin.petersen, agk, snitzer, colyli,
	kent.overstreet, boris.ostrovsky, jgross, sstabellini, roger.pau,
	geert, ulf.hansson, tj, hare, jdike, richard, anton.ivanov,
	johannes.berg, krisman, chris.obbard, thehajime, zhuyifei1999,
	haris.iqbal, jinpu.wang, miquel.raynal, vigneshr, linux-mtd
  Cc: linux-scsi, dm-devel, linux-bcache, xen-devel, linux-m68k,
	linux-um, linux-block, linux-kernel, Luis Chamberlain

We never checked for errors on add_disk() as this function
returned void. Now that this is fixed, use the shiny new
error handling.

Acked-by: Miquel Raynal <miquel.raynal@bootlin.com>
Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
---
 drivers/mtd/mtd_blkdevs.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/mtd/mtd_blkdevs.c b/drivers/mtd/mtd_blkdevs.c
index b8ae1ec14e17..4eaba6f4ec68 100644
--- a/drivers/mtd/mtd_blkdevs.c
+++ b/drivers/mtd/mtd_blkdevs.c
@@ -384,7 +384,9 @@ int add_mtd_blktrans_dev(struct mtd_blktrans_dev *new)
 	if (new->readonly)
 		set_disk_ro(gd, 1);
 
-	device_add_disk(&new->mtd->dev, gd, NULL);
+	ret = device_add_disk(&new->mtd->dev, gd, NULL);
+	if (ret)
+		goto out_cleanup_disk;
 
 	if (new->disk_attributes) {
 		ret = sysfs_create_group(&disk_to_dev(gd)->kobj,
@@ -393,6 +395,8 @@ int add_mtd_blktrans_dev(struct mtd_blktrans_dev *new)
 	}
 	return 0;
 
+out_cleanup_disk:
+	blk_cleanup_disk(new->disk);
 out_free_tag_set:
 	blk_mq_free_tag_set(new->tag_set);
 out_kfree_tag_set:
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* Re: [PATCH 1/9] scsi/sd: add error handling support for add_disk()
  2021-10-15 23:30 ` [PATCH 1/9] scsi/sd: add error handling support for add_disk() Luis Chamberlain
@ 2021-10-17  2:51   ` Martin K. Petersen
  2021-10-18 20:31     ` Luis Chamberlain
  0 siblings, 1 reply; 16+ messages in thread
From: Martin K. Petersen @ 2021-10-17  2:51 UTC (permalink / raw)
  To: Luis Chamberlain
  Cc: axboe, jejb, martin.petersen, agk, snitzer, colyli,
	kent.overstreet, boris.ostrovsky, jgross, sstabellini, roger.pau,
	geert, ulf.hansson, tj, hare, jdike, richard, anton.ivanov,
	johannes.berg, krisman, chris.obbard, thehajime, zhuyifei1999,
	haris.iqbal, jinpu.wang, miquel.raynal, vigneshr, linux-mtd,
	linux-scsi, dm-devel, linux-bcache, xen-devel, linux-m68k,
	linux-um, linux-block, linux-kernel, Christoph Hellwig


Luis,

> We never checked for errors on add_disk() as this function returned
> void. Now that this is fixed, use the shiny new error handling.
>
> As with the error handling for device_add() we follow the same logic
> and just put the device so that cleanup is done via the
> scsi_disk_release().

Acked-by: Martin K. Petersen <martin.petersen@oracle.com>

-- 
Martin K. Petersen	Oracle Linux Engineering

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH 2/9] scsi/sr: add error handling support for add_disk()
  2021-10-15 23:30 ` [PATCH 2/9] scsi/sr: " Luis Chamberlain
@ 2021-10-17  2:53   ` Martin K. Petersen
  0 siblings, 0 replies; 16+ messages in thread
From: Martin K. Petersen @ 2021-10-17  2:53 UTC (permalink / raw)
  To: Luis Chamberlain
  Cc: axboe, jejb, martin.petersen, agk, snitzer, colyli,
	kent.overstreet, boris.ostrovsky, jgross, sstabellini, roger.pau,
	geert, ulf.hansson, tj, hare, jdike, richard, anton.ivanov,
	johannes.berg, krisman, chris.obbard, thehajime, zhuyifei1999,
	haris.iqbal, jinpu.wang, miquel.raynal, vigneshr, linux-mtd,
	linux-scsi, dm-devel, linux-bcache, xen-devel, linux-m68k,
	linux-um, linux-block, linux-kernel, Christoph Hellwig


Luis,

> We never checked for errors on add_disk() as this function returned
> void. Now that this is fixed, use the shiny new error handling.
>
> Just put the cdrom kref and have the unwinding be done by
> sr_kref_release().

Acked-by: Martin K. Petersen <martin.petersen@oracle.com>

-- 
Martin K. Petersen	Oracle Linux Engineering

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH 1/9] scsi/sd: add error handling support for add_disk()
  2021-10-17  2:51   ` Martin K. Petersen
@ 2021-10-18 20:31     ` Luis Chamberlain
  2021-10-19  2:52       ` Martin K. Petersen
  0 siblings, 1 reply; 16+ messages in thread
From: Luis Chamberlain @ 2021-10-18 20:31 UTC (permalink / raw)
  To: Martin K. Petersen, axboe
  Cc: jejb, agk, snitzer, colyli, kent.overstreet, boris.ostrovsky,
	jgross, sstabellini, roger.pau, geert, ulf.hansson, tj, hare,
	jdike, richard, anton.ivanov, johannes.berg, krisman,
	chris.obbard, thehajime, zhuyifei1999, haris.iqbal, jinpu.wang,
	miquel.raynal, vigneshr, linux-mtd, linux-scsi, dm-devel,
	linux-bcache, xen-devel, linux-m68k, linux-um, linux-block,
	linux-kernel, Christoph Hellwig

On Sat, Oct 16, 2021 at 10:51:48PM -0400, Martin K. Petersen wrote:
> 
> Luis,
> 
> > We never checked for errors on add_disk() as this function returned
> > void. Now that this is fixed, use the shiny new error handling.
> >
> > As with the error handling for device_add() we follow the same logic
> > and just put the device so that cleanup is done via the
> > scsi_disk_release().
> 
> Acked-by: Martin K. Petersen <martin.petersen@oracle.com>

Thanks, would you like Jens to pick this up and the other scsi/sr patch
or are you taking it through your tree?

  Luis

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH 1/9] scsi/sd: add error handling support for add_disk()
  2021-10-18 20:31     ` Luis Chamberlain
@ 2021-10-19  2:52       ` Martin K. Petersen
  0 siblings, 0 replies; 16+ messages in thread
From: Martin K. Petersen @ 2021-10-19  2:52 UTC (permalink / raw)
  To: Luis Chamberlain
  Cc: Martin K. Petersen, axboe, jejb, agk, snitzer, colyli,
	kent.overstreet, boris.ostrovsky, jgross, sstabellini, roger.pau,
	geert, ulf.hansson, tj, hare, jdike, richard, anton.ivanov,
	johannes.berg, krisman, chris.obbard, thehajime, zhuyifei1999,
	haris.iqbal, jinpu.wang, miquel.raynal, vigneshr, linux-mtd,
	linux-scsi, dm-devel, linux-bcache, xen-devel, linux-m68k,
	linux-um, linux-block, linux-kernel, Christoph Hellwig


Luis,

> Thanks, would you like Jens to pick this up and the other scsi/sr patch
> or are you taking it through your tree?

Didn't think I had the relevant add_disk() patch in my baseline tree but
it turns out I do. So I queued them up.

Thanks!

-- 
Martin K. Petersen	Oracle Linux Engineering

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH 0/9] block: reviewed add_disk() error handling set
  2021-10-15 23:30 [PATCH 0/9] block: reviewed add_disk() error handling set Luis Chamberlain
                   ` (8 preceding siblings ...)
  2021-10-15 23:30 ` [PATCH 9/9] mtd: add add_disk() error handling Luis Chamberlain
@ 2021-10-21  3:42 ` Martin K. Petersen
  2021-10-21 15:01 ` (subset) " Jens Axboe
  10 siblings, 0 replies; 16+ messages in thread
From: Martin K. Petersen @ 2021-10-21  3:42 UTC (permalink / raw)
  To: zhuyifei1999, thehajime, hare, jinpu.wang, jgross, johannes.berg,
	geert, linux-mtd, miquel.raynal, axboe, Luis Chamberlain, jdike,
	kent.overstreet, richard, colyli, agk, haris.iqbal, krisman,
	roger.pau, anton.ivanov, sstabellini, ulf.hansson, vigneshr,
	chris.obbard, jejb, boris.ostrovsky, tj, snitzer
  Cc: Martin K . Petersen, linux-um, linux-block, xen-devel,
	linux-scsi, linux-kernel, linux-m68k, dm-devel, linux-bcache

On Fri, 15 Oct 2021 16:30:19 -0700, Luis Chamberlain wrote:

> Jens,
> 
> I had last split up patches into 7 groups, but at this point now
> most changes are merged except a few more drivers. Instead of creating
> a new patch set for each of the 7 groups I'm creating 3 new groups of
> patches now:
> 
> [...]

Applied to 5.16/scsi-queue, thanks!

[1/9] scsi/sd: add error handling support for add_disk()
      https://git.kernel.org/mkp/scsi/c/2a7a891f4c40
[2/9] scsi/sr: add error handling support for add_disk()
      https://git.kernel.org/mkp/scsi/c/e9d658c2175b

-- 
Martin K. Petersen	Oracle Linux Engineering

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: (subset) [PATCH 0/9] block: reviewed add_disk() error handling set
  2021-10-15 23:30 [PATCH 0/9] block: reviewed add_disk() error handling set Luis Chamberlain
                   ` (9 preceding siblings ...)
  2021-10-21  3:42 ` [PATCH 0/9] block: reviewed add_disk() error handling set Martin K. Petersen
@ 2021-10-21 15:01 ` Jens Axboe
  10 siblings, 0 replies; 16+ messages in thread
From: Jens Axboe @ 2021-10-21 15:01 UTC (permalink / raw)
  To: thehajime, zhuyifei1999, haris.iqbal, johannes.berg, roger.pau,
	miquel.raynal, jdike, anton.ivanov, geert, krisman, vigneshr,
	richard, hare, jinpu.wang, jgross, sstabellini, ulf.hansson, agk,
	linux-mtd, Luis Chamberlain, tj, colyli, jejb, chris.obbard,
	snitzer, boris.ostrovsky, kent.overstreet, martin.petersen
  Cc: linux-block, dm-devel, xen-devel, linux-um, linux-bcache,
	linux-kernel, linux-m68k, linux-scsi

On Fri, 15 Oct 2021 16:30:19 -0700, Luis Chamberlain wrote:
> Jens,
> 
> I had last split up patches into 7 groups, but at this point now
> most changes are merged except a few more drivers. Instead of creating
> a new patch set for each of the 7 groups I'm creating 3 new groups of
> patches now:
> 
> [...]

Applied, thanks!

[3/9] dm: add add_disk() error handling
      commit: e7089f65dd51afeda5eb760506b5950d95f9ec29
[4/9] bcache: add error handling support for add_disk()
      commit: 2961c3bbcaec0ed7fb7b9a465b3796f37f2294e5
[5/9] xen-blkfront: add error handling support for add_disk()
      commit: 293a7c528803321479593d42d0898bb5a9769db1
[6/9] m68k/emu/nfblock: add error handling support for add_disk()
      commit: 21fd880d3da7564bab68979417cab7408e4f9642
[7/9] um/drivers/ubd_kern: add error handling support for add_disk()
      commit: 66638f163a2b5c5b462ca38525129b14a20117eb
[8/9] rnbd: add error handling support for add_disk()
      commit: 2e9e31bea01997450397d64da43b6675e0adb9e3
[9/9] mtd: add add_disk() error handling
      commit: 83b863f4a3f0de4ece7802d9121fed0c3e64145f

Best regards,
-- 
Jens Axboe



^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2021-10-21 15:01 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-15 23:30 [PATCH 0/9] block: reviewed add_disk() error handling set Luis Chamberlain
2021-10-15 23:30 ` [PATCH 1/9] scsi/sd: add error handling support for add_disk() Luis Chamberlain
2021-10-17  2:51   ` Martin K. Petersen
2021-10-18 20:31     ` Luis Chamberlain
2021-10-19  2:52       ` Martin K. Petersen
2021-10-15 23:30 ` [PATCH 2/9] scsi/sr: " Luis Chamberlain
2021-10-17  2:53   ` Martin K. Petersen
2021-10-15 23:30 ` [PATCH 3/9] dm: add add_disk() error handling Luis Chamberlain
2021-10-15 23:30 ` [PATCH 4/9] bcache: add error handling support for add_disk() Luis Chamberlain
2021-10-15 23:30 ` [PATCH 5/9] xen-blkfront: " Luis Chamberlain
2021-10-15 23:30 ` [PATCH 6/9] m68k/emu/nfblock: " Luis Chamberlain
2021-10-15 23:30 ` [PATCH 7/9] um/drivers/ubd_kern: " Luis Chamberlain
2021-10-15 23:30 ` [PATCH 8/9] rnbd: " Luis Chamberlain
2021-10-15 23:30 ` [PATCH 9/9] mtd: add add_disk() error handling Luis Chamberlain
2021-10-21  3:42 ` [PATCH 0/9] block: reviewed add_disk() error handling set Martin K. Petersen
2021-10-21 15:01 ` (subset) " Jens Axboe

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).