dm-devel.redhat.com archive mirror
 help / color / mirror / Atom feed
* [dm-devel] [PATCH v2 0/6] block: first batch of add_disk() error handling conversions
@ 2021-08-27 19:04 Luis Chamberlain
  2021-08-27 19:04 ` [dm-devel] [PATCH v2 1/6] scsi/sd: add error handling support for add_disk() Luis Chamberlain
                   ` (5 more replies)
  0 siblings, 6 replies; 8+ messages in thread
From: Luis Chamberlain @ 2021-08-27 19:04 UTC (permalink / raw)
  To: axboe, martin.petersen, jejb, kbusch, sagi, adrian.hunter,
	beanhuo, ulf.hansson, avri.altman, swboyd, agk, snitzer, josef
  Cc: linux-block, bvanassche, linux-scsi, linux-mmc, linux-kernel,
	linux-nvme, ming.lei, hch, dm-devel, nbd, Luis Chamberlain

This v2 drops two of the scsi patches which  Christoph pointed out were
not needed. It also fixes the nvme driver change to account for the
missing put of the ctrl. It also just appends the commits with the
respective reviewed tags. I've also dropped the mmc and dm patches
from this series as that is still pending discussion. I'll roll that
into the my next series after discussion is done.

The only patch which goes without a review tag is the nvme driver change.

These changes go rebased on Jen's latest axboe/for-next. The respective
full queue of my changes can be found on my git branch [0].

[0] https://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/linux-next.git/log/?h=20210827-for-axboe-add-disk-error-handling-next

Luis Chamberlain (6):
  scsi/sd: add error handling support for add_disk()
  scsi/sr: add error handling support for add_disk()
  nvme: add error handling support for add_disk()
  md: add error handling support for add_disk()
  loop: add error handling support for add_disk()
  nbd: add error handling support for add_disk()

 drivers/block/loop.c     | 9 ++++++++-
 drivers/block/nbd.c      | 6 +++++-
 drivers/md/md.c          | 7 ++++++-
 drivers/nvme/host/core.c | 9 ++++++++-
 drivers/scsi/sd.c        | 6 +++++-
 drivers/scsi/sr.c        | 5 ++++-
 6 files changed, 36 insertions(+), 6 deletions(-)

-- 
2.30.2

--
dm-devel mailing list
dm-devel@redhat.com
https://listman.redhat.com/mailman/listinfo/dm-devel


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

* [dm-devel] [PATCH v2 1/6] scsi/sd: add error handling support for add_disk()
  2021-08-27 19:04 [dm-devel] [PATCH v2 0/6] block: first batch of add_disk() error handling conversions Luis Chamberlain
@ 2021-08-27 19:04 ` Luis Chamberlain
  2021-08-27 19:05 ` [dm-devel] [PATCH v2 2/6] scsi/sr: " Luis Chamberlain
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 8+ messages in thread
From: Luis Chamberlain @ 2021-08-27 19:04 UTC (permalink / raw)
  To: axboe, martin.petersen, jejb, kbusch, sagi, adrian.hunter,
	beanhuo, ulf.hansson, avri.altman, swboyd, agk, snitzer, josef
  Cc: linux-block, bvanassche, linux-scsi, linux-mmc, linux-kernel,
	linux-nvme, ming.lei, hch, dm-devel, nbd, Christoph Hellwig,
	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: Christoph Hellwig <hch@lst.de>
Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
---
 drivers/scsi/sd.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
index 610ebba0d66e..8c1273fff23e 100644
--- a/drivers/scsi/sd.c
+++ b/drivers/scsi/sd.c
@@ -3487,7 +3487,11 @@ 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)
+		goto out_free_index;
+
 	if (sdkp->capacity)
 		sd_dif_config_host(sdkp);
 
-- 
2.30.2

--
dm-devel mailing list
dm-devel@redhat.com
https://listman.redhat.com/mailman/listinfo/dm-devel


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

* [dm-devel] [PATCH v2 2/6] scsi/sr: add error handling support for add_disk()
  2021-08-27 19:04 [dm-devel] [PATCH v2 0/6] block: first batch of add_disk() error handling conversions Luis Chamberlain
  2021-08-27 19:04 ` [dm-devel] [PATCH v2 1/6] scsi/sd: add error handling support for add_disk() Luis Chamberlain
@ 2021-08-27 19:05 ` Luis Chamberlain
  2021-08-27 19:05 ` [dm-devel] [PATCH v2 3/6] nvme: " Luis Chamberlain
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 8+ messages in thread
From: Luis Chamberlain @ 2021-08-27 19:05 UTC (permalink / raw)
  To: axboe, martin.petersen, jejb, kbusch, sagi, adrian.hunter,
	beanhuo, ulf.hansson, avri.altman, swboyd, agk, snitzer, josef
  Cc: linux-block, bvanassche, linux-scsi, linux-mmc, linux-kernel,
	linux-nvme, ming.lei, hch, dm-devel, nbd, Christoph Hellwig,
	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: Christoph Hellwig <hch@lst.de>
Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
---
 drivers/scsi/sr.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/scsi/sr.c b/drivers/scsi/sr.c
index 2942a4ec9bdd..72fd21844367 100644
--- a/drivers/scsi/sr.c
+++ b/drivers/scsi/sr.c
@@ -779,7 +779,10 @@ 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)
+		goto fail_minor;
 
 	sdev_printk(KERN_DEBUG, sdev,
 		    "Attached scsi CD-ROM %s\n", cd->cdi.name);
-- 
2.30.2

--
dm-devel mailing list
dm-devel@redhat.com
https://listman.redhat.com/mailman/listinfo/dm-devel


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

* [dm-devel] [PATCH v2 3/6] nvme: add error handling support for add_disk()
  2021-08-27 19:04 [dm-devel] [PATCH v2 0/6] block: first batch of add_disk() error handling conversions Luis Chamberlain
  2021-08-27 19:04 ` [dm-devel] [PATCH v2 1/6] scsi/sd: add error handling support for add_disk() Luis Chamberlain
  2021-08-27 19:05 ` [dm-devel] [PATCH v2 2/6] scsi/sr: " Luis Chamberlain
@ 2021-08-27 19:05 ` Luis Chamberlain
  2021-08-28  7:11   ` Christoph Hellwig
  2021-08-27 19:05 ` [dm-devel] [PATCH v2 4/6] md: " Luis Chamberlain
                   ` (2 subsequent siblings)
  5 siblings, 1 reply; 8+ messages in thread
From: Luis Chamberlain @ 2021-08-27 19:05 UTC (permalink / raw)
  To: axboe, martin.petersen, jejb, kbusch, sagi, adrian.hunter,
	beanhuo, ulf.hansson, avri.altman, swboyd, agk, snitzer, josef
  Cc: linux-block, bvanassche, linux-scsi, linux-mmc, linux-kernel,
	linux-nvme, ming.lei, hch, dm-devel, nbd, 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.

Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
---
 drivers/nvme/host/core.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
index 8679a108f571..687d3be563a3 100644
--- a/drivers/nvme/host/core.c
+++ b/drivers/nvme/host/core.c
@@ -3763,7 +3763,9 @@ static void nvme_alloc_ns(struct nvme_ctrl *ctrl, unsigned nsid,
 
 	nvme_get_ctrl(ctrl);
 
-	device_add_disk(ctrl->device, ns->disk, nvme_ns_id_attr_groups);
+	if (device_add_disk(ctrl->device, ns->disk, nvme_ns_id_attr_groups))
+		goto out_cleanup_ns_from_list;
+
 	if (!nvme_ns_head_multipath(ns->head))
 		nvme_add_ns_cdev(ns);
 
@@ -3773,6 +3775,11 @@ static void nvme_alloc_ns(struct nvme_ctrl *ctrl, unsigned nsid,
 
 	return;
 
+ out_cleanup_ns_from_list:
+	nvme_put_ctrl(ctrl);
+	down_write(&ctrl->namespaces_rwsem);
+	list_del_init(&ns->list);
+	up_write(&ctrl->namespaces_rwsem);
  out_unlink_ns:
 	mutex_lock(&ctrl->subsys->lock);
 	list_del_rcu(&ns->siblings);
-- 
2.30.2

--
dm-devel mailing list
dm-devel@redhat.com
https://listman.redhat.com/mailman/listinfo/dm-devel


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

* [dm-devel] [PATCH v2 4/6] md: add error handling support for add_disk()
  2021-08-27 19:04 [dm-devel] [PATCH v2 0/6] block: first batch of add_disk() error handling conversions Luis Chamberlain
                   ` (2 preceding siblings ...)
  2021-08-27 19:05 ` [dm-devel] [PATCH v2 3/6] nvme: " Luis Chamberlain
@ 2021-08-27 19:05 ` Luis Chamberlain
  2021-08-27 19:05 ` [dm-devel] [PATCH v2 5/6] loop: " Luis Chamberlain
  2021-08-27 19:05 ` [dm-devel] [PATCH v2 6/6] nbd: " Luis Chamberlain
  5 siblings, 0 replies; 8+ messages in thread
From: Luis Chamberlain @ 2021-08-27 19:05 UTC (permalink / raw)
  To: axboe, martin.petersen, jejb, kbusch, sagi, adrian.hunter,
	beanhuo, ulf.hansson, avri.altman, swboyd, agk, snitzer, josef
  Cc: linux-block, bvanassche, linux-scsi, linux-mmc, linux-kernel,
	linux-nvme, ming.lei, hch, dm-devel, nbd, Christoph Hellwig,
	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.

We just do the unwinding of what was not done before, and are
sure to unlock prior to bailing.

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

diff --git a/drivers/md/md.c b/drivers/md/md.c
index ae8fe54ea358..5c0d3536d7c7 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -5704,7 +5704,11 @@ static int md_alloc(dev_t dev, char *name)
 	 * through to md_open, so make sure it doesn't get too far
 	 */
 	mutex_lock(&mddev->open_mutex);
-	add_disk(disk);
+	error = add_disk(disk);
+	if (error) {
+		blk_cleanup_disk(disk);
+		goto abort_unlock;
+	}
 
 	error = kobject_add(&mddev->kobj, &disk_to_dev(disk)->kobj, "%s", "md");
 	if (error) {
@@ -5718,6 +5722,7 @@ static int md_alloc(dev_t dev, char *name)
 	if (mddev->kobj.sd &&
 	    sysfs_create_group(&mddev->kobj, &md_bitmap_group))
 		pr_debug("pointless warning\n");
+ abort_unlock:
 	mutex_unlock(&mddev->open_mutex);
  abort:
 	mutex_unlock(&disks_mutex);
-- 
2.30.2

--
dm-devel mailing list
dm-devel@redhat.com
https://listman.redhat.com/mailman/listinfo/dm-devel


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

* [dm-devel] [PATCH v2 5/6] loop: add error handling support for add_disk()
  2021-08-27 19:04 [dm-devel] [PATCH v2 0/6] block: first batch of add_disk() error handling conversions Luis Chamberlain
                   ` (3 preceding siblings ...)
  2021-08-27 19:05 ` [dm-devel] [PATCH v2 4/6] md: " Luis Chamberlain
@ 2021-08-27 19:05 ` Luis Chamberlain
  2021-08-27 19:05 ` [dm-devel] [PATCH v2 6/6] nbd: " Luis Chamberlain
  5 siblings, 0 replies; 8+ messages in thread
From: Luis Chamberlain @ 2021-08-27 19:05 UTC (permalink / raw)
  To: axboe, martin.petersen, jejb, kbusch, sagi, adrian.hunter,
	beanhuo, ulf.hansson, avri.altman, swboyd, agk, snitzer, josef
  Cc: linux-block, bvanassche, linux-scsi, linux-mmc, linux-kernel,
	linux-nvme, ming.lei, hch, dm-devel, nbd, Christoph Hellwig,
	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: Christoph Hellwig <hch@lst.de>
Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
---
 drivers/block/loop.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/drivers/block/loop.c b/drivers/block/loop.c
index fa1c298a8cfb..b8b9e2349e77 100644
--- a/drivers/block/loop.c
+++ b/drivers/block/loop.c
@@ -2393,10 +2393,17 @@ static int loop_add(int i)
 	disk->events		= DISK_EVENT_MEDIA_CHANGE;
 	disk->event_flags	= DISK_EVENT_FLAG_UEVENT;
 	sprintf(disk->disk_name, "loop%d", i);
-	add_disk(disk);
+
+	err = add_disk(disk);
+	if (err)
+		goto out_cleanup_disk;
+
 	mutex_unlock(&loop_ctl_mutex);
+
 	return i;
 
+out_cleanup_disk:
+	blk_cleanup_disk(disk);
 out_cleanup_tags:
 	blk_mq_free_tag_set(&lo->tag_set);
 out_free_idr:
-- 
2.30.2

--
dm-devel mailing list
dm-devel@redhat.com
https://listman.redhat.com/mailman/listinfo/dm-devel


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

* [dm-devel] [PATCH v2 6/6] nbd: add error handling support for add_disk()
  2021-08-27 19:04 [dm-devel] [PATCH v2 0/6] block: first batch of add_disk() error handling conversions Luis Chamberlain
                   ` (4 preceding siblings ...)
  2021-08-27 19:05 ` [dm-devel] [PATCH v2 5/6] loop: " Luis Chamberlain
@ 2021-08-27 19:05 ` Luis Chamberlain
  5 siblings, 0 replies; 8+ messages in thread
From: Luis Chamberlain @ 2021-08-27 19:05 UTC (permalink / raw)
  To: axboe, martin.petersen, jejb, kbusch, sagi, adrian.hunter,
	beanhuo, ulf.hansson, avri.altman, swboyd, agk, snitzer, josef
  Cc: linux-block, bvanassche, linux-scsi, linux-mmc, linux-kernel,
	linux-nvme, ming.lei, hch, dm-devel, nbd, Christoph Hellwig,
	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: Christoph Hellwig <hch@lst.de>
Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
---
 drivers/block/nbd.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c
index 5170a630778d..741365295157 100644
--- a/drivers/block/nbd.c
+++ b/drivers/block/nbd.c
@@ -1757,7 +1757,9 @@ static struct nbd_device *nbd_dev_add(int index, unsigned int refs)
 	disk->fops = &nbd_fops;
 	disk->private_data = nbd;
 	sprintf(disk->disk_name, "nbd%d", index);
-	add_disk(disk);
+	err = add_disk(disk);
+	if (err)
+		goto out_err_disk;
 
 	/*
 	 * Now publish the device.
@@ -1766,6 +1768,8 @@ static struct nbd_device *nbd_dev_add(int index, unsigned int refs)
 	nbd_total_devices++;
 	return nbd;
 
+out_err_disk:
+	blk_cleanup_disk(disk);
 out_free_idr:
 	mutex_lock(&nbd_index_mutex);
 	idr_remove(&nbd_index_idr, index);
-- 
2.30.2

--
dm-devel mailing list
dm-devel@redhat.com
https://listman.redhat.com/mailman/listinfo/dm-devel


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

* Re: [dm-devel] [PATCH v2 3/6] nvme: add error handling support for add_disk()
  2021-08-27 19:05 ` [dm-devel] [PATCH v2 3/6] nvme: " Luis Chamberlain
@ 2021-08-28  7:11   ` Christoph Hellwig
  0 siblings, 0 replies; 8+ messages in thread
From: Christoph Hellwig @ 2021-08-28  7:11 UTC (permalink / raw)
  To: Luis Chamberlain
  Cc: ulf.hansson, snitzer, linux-nvme, linux-kernel, dm-devel, agk,
	beanhuo, ming.lei, sagi, linux-scsi, hch, jejb, josef, nbd,
	linux-block, avri.altman, kbusch, swboyd, bvanassche, axboe,
	martin.petersen, linux-mmc, adrian.hunter

Looks good,

Reviewed-by: Christoph Hellwig <hch@lst.de>

--
dm-devel mailing list
dm-devel@redhat.com
https://listman.redhat.com/mailman/listinfo/dm-devel


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

end of thread, other threads:[~2021-08-28  7:36 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-27 19:04 [dm-devel] [PATCH v2 0/6] block: first batch of add_disk() error handling conversions Luis Chamberlain
2021-08-27 19:04 ` [dm-devel] [PATCH v2 1/6] scsi/sd: add error handling support for add_disk() Luis Chamberlain
2021-08-27 19:05 ` [dm-devel] [PATCH v2 2/6] scsi/sr: " Luis Chamberlain
2021-08-27 19:05 ` [dm-devel] [PATCH v2 3/6] nvme: " Luis Chamberlain
2021-08-28  7:11   ` Christoph Hellwig
2021-08-27 19:05 ` [dm-devel] [PATCH v2 4/6] md: " Luis Chamberlain
2021-08-27 19:05 ` [dm-devel] [PATCH v2 5/6] loop: " Luis Chamberlain
2021-08-27 19:05 ` [dm-devel] [PATCH v2 6/6] nbd: " Luis Chamberlain

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).