From: Luis Chamberlain <mcgrof@kernel.org> Date: 2021-11-03 12:22:50
This is the last pending changes to address add_disk() error handling
completely. Changes on this v2 series:
o dropped all patches which folks have said they'd pick up on their
own trees or that I already see present on linux-next
o rebased onto next-20211103
o Added Reviewed-by tag by Dan Williams and addressed his recommended
changes.
o Re-added the nvdimm/blk changes given Dan Williams was not able to
remove the driver in time for v5.16
o Added new nvdimm/pmem driver changes, not sure how I missed addressing
this before.
o Just note that I keep Tetsuo Handa's patch in this series as it is
a requirement for the __register_blkdev() changes.
You can find all these changes on my git tree:
https://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/linux-next.git/log/?h=20211103-for-axboe-add-disk-error-handling
Luis Chamberlain (12):
nvdimm/btt: do not call del_gendisk() if not needed
nvdimm/btt: use goto error labels on btt_blk_init()
nvdimm/btt: add error handling support for add_disk()
nvdimm/blk: avoid calling del_gendisk() on early failures
nvdimm/blk: add error handling support for add_disk()
nvdimm/pmem: cleanup the disk if pmem_release_disk() is yet assigned
nvdimm/pmem: use add_disk() error handling
z2ram: add error handling support for add_disk()
block/sunvdc: add error handling support for add_disk()
mtd/ubi/block: add error handling support for add_disk()
block: make __register_blkdev() return an error
block: add __must_check for *add_disk*() callers
Tetsuo Handa (1):
ataflop: remove ataflop_probe_lock mutex
block/bdev.c | 5 +++-
block/genhd.c | 27 +++++++++++------
drivers/block/ataflop.c | 66 +++++++++++++++++++++++++----------------
drivers/block/brd.c | 7 +++--
drivers/block/floppy.c | 17 ++++++++---
drivers/block/loop.c | 11 +++++--
drivers/block/sunvdc.c | 14 +++++++--
drivers/block/z2ram.c | 7 +++--
drivers/md/md.c | 12 ++++++--
drivers/mtd/ubi/block.c | 8 ++++-
drivers/nvdimm/blk.c | 21 +++++++++----
drivers/nvdimm/btt.c | 21 ++++++++-----
drivers/nvdimm/pmem.c | 21 +++++++++----
drivers/scsi/sd.c | 3 +-
include/linux/genhd.h | 10 +++----
15 files changed, 172 insertions(+), 78 deletions(-)
--
2.33.0
From: Luis Chamberlain <mcgrof@kernel.org> Date: 2021-11-03 12:22:16
This will make it easier to share common error paths.
Reviewed-by: Dan Williams <redacted>
Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
---
drivers/nvdimm/btt.c | 16 ++++++++++------
1 file changed, 10 insertions(+), 6 deletions(-)
From: Luis Chamberlain <mcgrof@kernel.org> Date: 2021-11-03 12:22:30
If nd_integrity_init() fails we'd get del_gendisk() called,
but that's not correct as we should only call that if we're
done with device_add_disk(). Fix this by providing unwinding
prior to the devm call being registered and moving the devm
registration to the very end.
This should fix calling del_gendisk() if nd_integrity_init()
fails. I only spotted this issue through code inspection. It
does not fix any real world bug.
Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
---
drivers/nvdimm/blk.c | 17 ++++++++++++-----
1 file changed, 12 insertions(+), 5 deletions(-)
@@ -239,6 +239,7 @@ static int nsblk_attach_disk(struct nd_namespace_blk *nsblk)resource_size_tavailable_disk_size;structgendisk*disk;u64internal_nlba;+intrc;internal_nlba=div_u64(nsblk->size,nsblk_internal_lbasize(nsblk));available_disk_size=internal_nlba*nsblk_sector_size(nsblk);
@@ -255,20 +256,26 @@ static int nsblk_attach_disk(struct nd_namespace_blk *nsblk)blk_queue_logical_block_size(disk->queue,nsblk_sector_size(nsblk));blk_queue_flag_set(QUEUE_FLAG_NONROT,disk->queue);-if(devm_add_action_or_reset(dev,nd_blk_release_disk,disk))-return-ENOMEM;-if(nsblk_meta_size(nsblk)){-intrc=nd_integrity_init(disk,nsblk_meta_size(nsblk));+rc=nd_integrity_init(disk,nsblk_meta_size(nsblk));if(rc)-returnrc;+gotoout_before_devm_err;}set_capacity(disk,available_disk_size>>SECTOR_SHIFT);device_add_disk(dev,disk,NULL);++/* nd_blk_release_disk() is called if this fails */+if(devm_add_action_or_reset(dev,nd_blk_release_disk,disk))+return-ENOMEM;+nvdimm_check_and_set_ro(disk);return0;++out_before_devm_err:+blk_cleanup_disk(disk);+returnrc;}staticintnd_blk_probe(structdevice*dev)
From: Luis Chamberlain <mcgrof@kernel.org> Date: 2021-11-03 12:22:37
We never checked for errors on add_disk() as this function
returned void. Now that this is fixed, use the shiny new
error handling. Only the disk is cleaned up inside
z2ram_register_disk() as the caller deals with the rest.
Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
---
drivers/block/z2ram.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
From: Luis Chamberlain <mcgrof@kernel.org> Date: 2021-11-03 12:22:47
Now that device_add_disk() supports returning an error, use
that. We must unwind alloc_dax() on error.
Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
---
drivers/nvdimm/pmem.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
From: Luis Chamberlain <mcgrof@kernel.org> Date: 2021-11-03 12:22:53
Now that we have done a spring cleaning on all drivers and added
error checking / handling, let's keep it that way and ensure
no new drivers fail to stick with it.
Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
---
block/genhd.c | 6 +++---
include/linux/genhd.h | 6 +++---
2 files changed, 6 insertions(+), 6 deletions(-)
From: Luis Chamberlain <mcgrof@kernel.org> Date: 2021-11-03 12:22:55
Prior to devm being able to use pmem_release_disk() there are other
failure which can occur for which we must account for and release the
disk for. Address those few cases.
Fixes: 3dd60fb9d95d ("nvdimm/pmem: stop using q_usage_count as external pgmap refcount")
Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
---
drivers/nvdimm/pmem.c | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
From: Luis Chamberlain <mcgrof@kernel.org> Date: 2021-11-03 12:22:57
This makes __register_blkdev() return an error, and also changes the
probe() call to return an error as well.
We expand documentation for the probe call to ensure that if the block
device already exists we don't return on error on that condition. We do
this as otherwise we loose ability to handle concurrent requests if the
block device already existed.
Cc: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
---
block/bdev.c | 5 ++++-
block/genhd.c | 21 +++++++++++++++------
drivers/block/ataflop.c | 19 ++++++++++++++-----
drivers/block/brd.c | 7 +++++--
drivers/block/floppy.c | 17 +++++++++++++----
drivers/block/loop.c | 11 ++++++++---
drivers/md/md.c | 12 +++++++++---
drivers/scsi/sd.c | 3 ++-
include/linux/genhd.h | 4 ++--
9 files changed, 72 insertions(+), 27 deletions(-)
@@ -2008,22 +2008,31 @@ static int ataflop_alloc_disk(unsigned int drive, unsigned int type)return0;}-staticvoidataflop_probe(dev_tdev)+staticintataflop_probe(dev_tdev){intdrive=MINOR(dev)&3;inttype=MINOR(dev)>>2;+interr=0;if(type)type--;if(drive>=FD_MAX_UNITS||type>=NUM_DISK_MINORS)-return;+return-EINVAL;+if(!unit[drive].disk[type]){-if(ataflop_alloc_disk(drive,type)==0){-add_disk(unit[drive].disk[type]);-unit[drive].registered[type]=true;+err=ataflop_alloc_disk(drive,type);+if(err==0){+err=add_disk(unit[drive].disk[type]);+if(err){+blk_cleanup_disk(unit[drive].disk[type]);+unit[drive].disk[type]=NULL;+}else+unit[drive].registered[type]=true;}}++returnerr;}staticvoidatari_floppy_cleanup(void)
@@ -4518,21 +4518,30 @@ static int floppy_alloc_disk(unsigned int drive, unsigned int type)staticDEFINE_MUTEX(floppy_probe_lock);-staticvoidfloppy_probe(dev_tdev)+staticintfloppy_probe(dev_tdev){unsignedintdrive=(MINOR(dev)&3)|((MINOR(dev)&0x80)>>5);unsignedinttype=(MINOR(dev)>>2)&0x1f;+interr=0;if(drive>=N_DRIVE||!floppy_available(drive)||type>=ARRAY_SIZE(floppy_type))-return;+return-EINVAL;mutex_lock(&floppy_probe_lock);if(!disks[drive][type]){-if(floppy_alloc_disk(drive,type)==0)-add_disk(disks[drive][type]);+err=floppy_alloc_disk(drive,type);+if(err==0){+err=add_disk(disks[drive][type]);+if(err){+blk_cleanup_disk(disks[drive][type]);+disks[drive][type]=NULL;+}+}}mutex_unlock(&floppy_probe_lock);++returnerr;}staticint__initdo_floppy_init(void)
From: Luis Chamberlain <mcgrof@kernel.org> Date: 2021-11-03 12:22:58
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/mtd/ubi/block.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
@@ -447,12 +447,18 @@ int ubiblock_create(struct ubi_volume_info *vi)list_add_tail(&dev->list,&ubiblock_devices);/* Must be the last step: anyone can call file ops from now on */-add_disk(dev->gd);+ret=add_disk(dev->gd);+if(ret)+gotoout_destroy_wq;+dev_info(disk_to_dev(dev->gd),"created from ubi%d:%d(%s)",dev->ubi_num,dev->vol_id,vi->name);mutex_unlock(&devices_mutex);return0;+out_destroy_wq:+list_del(&dev->list);+destroy_workqueue(dev->wq);out_remove_minor:idr_remove(&ubiblock_minor_idr,gd->first_minor);out_cleanup_disk:
From: Luis Chamberlain <mcgrof@kernel.org> Date: 2021-11-03 12:23:01
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 re-use the same free tag call, so we also add a label for
that as well.
Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
---
drivers/block/sunvdc.c | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
@@ -826,8 +826,8 @@ static int probe_disk(struct vdc_port *port)if(IS_ERR(g)){printk(KERN_ERRPFX"%s: Could not allocate gendisk.\n",port->vio.name);-blk_mq_free_tag_set(&port->tag_set);-returnPTR_ERR(g);+err=PTR_ERR(g);+gotoout_free_tag;}port->disk=g;
@@ -879,9 +879,17 @@ static int probe_disk(struct vdc_port *port)port->vdisk_size,(port->vdisk_size>>(20-9)),port->vio.ver.major,port->vio.ver.minor);-device_add_disk(&port->vio.vdev->dev,g,NULL);+err=device_add_disk(&port->vio.vdev->dev,g,NULL);+if(err)+gotoout_cleanup_disk;return0;++out_cleanup_disk:+blk_cleanup_disk(g);+out_free_tag:+blk_mq_free_tag_set(&port->tag_set);+returnerr;}staticstructldc_channel_configvdc_ldc_cfg={
From: Luis Chamberlain <mcgrof@kernel.org> Date: 2021-11-03 12:23:03
del_gendisk() is not required if the disk has not been added.
On kernels prior to commit 40b3a52ffc5bc3 ("block: add a sanity
check for a live disk in del_gendisk") it is mandatory to not
call del_gendisk() if the underlying device has not been through
device_add().
Fixes: 41cd8b70c37a ("libnvdimm, btt: add support for blk integrity")
Reviewed-by: Dan Williams <redacted>
Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
---
drivers/nvdimm/btt.c | 1 -
1 file changed, 1 deletion(-)
From: Luis Chamberlain <mcgrof@kernel.org> Date: 2021-11-03 12:23:07
We never checked for errors on add_disk() as this function
returned void. Now that this is fixed, use the shiny new
error handling.
Since nvdimm/blk uses devm we just need to move the devm
registration towards the end. And in hindsight, that seems
to also provide a fix given del_gendisk() should not be
called unless the disk was already added via add_disk().
The probably of that issue happening is low though, like
OOM while calling devm_add_action(), so the fix is minor.
We manually unwind in case of add_disk() failure prior
to the devm registration.
Reviewed-by: Dan Williams <redacted>
Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
---
drivers/nvdimm/blk.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
@@ -264,7 +264,9 @@ static int nsblk_attach_disk(struct nd_namespace_blk *nsblk)}set_capacity(disk,available_disk_size>>SECTOR_SHIFT);-device_add_disk(dev,disk,NULL);+rc=device_add_disk(dev,disk,NULL);+if(rc)+gotoout_before_devm_err;/* nd_blk_release_disk() is called if this fails */if(devm_add_action_or_reset(dev,nd_blk_release_disk,disk))
From: Luis Chamberlain <mcgrof@kernel.org> Date: 2021-11-03 12:23:10
From: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
Commit bf9c0538e485b591 ("ataflop: use a separate gendisk for each media
format") introduced ataflop_probe_lock mutex, but forgot to unlock the
mutex when atari_floppy_init() (i.e. module loading) succeeded. This will
result in double lock deadlock if ataflop_probe() is called. Also,
unregister_blkdev() must not be called from atari_floppy_init() with
ataflop_probe_lock held when atari_floppy_init() failed, for
ataflop_probe() waits for ataflop_probe_lock with major_names_lock held
(i.e. AB-BA deadlock).
__register_blkdev() needs to be called last in order to avoid calling
ataflop_probe() when atari_floppy_init() is about to fail, for memory for
completing already-started ataflop_probe() safely will be released as soon
as atari_floppy_init() released ataflop_probe_lock mutex.
As with commit 8b52d8be86d72308 ("loop: reorder loop_exit"),
unregister_blkdev() needs to be called first in order to avoid calling
ataflop_alloc_disk() from ataflop_probe() after del_gendisk() from
atari_floppy_exit().
By relocating __register_blkdev() / unregister_blkdev() as explained above,
we can remove ataflop_probe_lock mutex, for probe function and __exit
function are serialized by major_names_lock mutex.
Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Fixes: bf9c0538e485b591 ("ataflop: use a separate gendisk for each media format")
Reviewed-by: Luis Chamberlain <mcgrof@kernel.org>
Tested-by: Michael Schmitz <schmitzmic@gmail.com>
---
drivers/block/ataflop.c | 47 +++++++++++++++++++++++------------------
1 file changed, 27 insertions(+), 20 deletions(-)
@@ -2008,8 +2008,6 @@ static int ataflop_alloc_disk(unsigned int drive, unsigned int type)return0;}-staticDEFINE_MUTEX(ataflop_probe_lock);-staticvoidataflop_probe(dev_tdev){intdrive=MINOR(dev)&3;
From: Luis Chamberlain <mcgrof@kernel.org> Date: 2021-11-03 12:23:11
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/nvdimm/btt.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
From: Christoph Hellwig <hch@lst.de> Date: 2021-11-03 16:02:53
On Wed, Nov 03, 2021 at 05:21:45AM -0700, Luis Chamberlain wrote:
del_gendisk() is not required if the disk has not been added.
On kernels prior to commit 40b3a52ffc5bc3 ("block: add a sanity
check for a live disk in del_gendisk") it is mandatory to not
call del_gendisk() if the underlying device has not been through
device_add().
And even with the sanity check is it wrong, and will trigger a WARN_ON.
So maybe this commit log could use a little update?
With that fixed I think this should go into 5.16 and -stable.
Reviewed-by: Christoph Hellwig <hch@lst.de>
From: Christoph Hellwig <hch@lst.de> Date: 2021-11-03 16:05:56
On Wed, Nov 03, 2021 at 05:21:48AM -0700, Luis Chamberlain wrote:
If nd_integrity_init() fails we'd get del_gendisk() called,
but that's not correct as we should only call that if we're
done with device_add_disk(). Fix this by providing unwinding
prior to the devm call being registered and moving the devm
registration to the very end.
This should fix calling del_gendisk() if nd_integrity_init()
fails. I only spotted this issue through code inspection. It
does not fix any real world bug.
Looks good,
Reviewed-by: Christoph Hellwig <hch@lst.de>
Should this grow a Fixes tag for the commit adding the problem?
From: Christoph Hellwig <hch@lst.de> Date: 2021-11-03 16:06:40
On Wed, Nov 03, 2021 at 05:21:50AM -0700, Luis Chamberlain wrote:
Prior to devm being able to use pmem_release_disk() there are other
failure which can occur for which we must account for and release the
disk for. Address those few cases.
Fixes: 3dd60fb9d95d ("nvdimm/pmem: stop using q_usage_count as external pgmap refcount")
Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
Looks good,
Reviewed-by: Christoph Hellwig <hch@lst.de>
From: Christoph Hellwig <hch@lst.de> Date: 2021-11-03 16:07:12
On Wed, Nov 03, 2021 at 05:21:52AM -0700, Luis Chamberlain wrote:
We never checked for errors on add_disk() as this function
returned void. Now that this is fixed, use the shiny new
error handling. Only the disk is cleaned up inside
z2ram_register_disk() as the caller deals with the rest.
Looks good,
Reviewed-by: Christoph Hellwig <hch@lst.de>
From: Christoph Hellwig <hch@lst.de> Date: 2021-11-03 16:07:37
On Wed, Nov 03, 2021 at 05:21:53AM -0700, Luis Chamberlain wrote:
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 re-use the same free tag call, so we also add a label for
that as well.
Looks good,
Reviewed-by: Christoph Hellwig <hch@lst.de>
From: Christoph Hellwig <hch@lst.de> Date: 2021-11-03 16:09:39
On Wed, Nov 03, 2021 at 05:21:56AM -0700, Luis Chamberlain wrote:
This makes __register_blkdev() return an error, and also changes the
probe() call to return an error as well.
We expand documentation for the probe call to ensure that if the block
device already exists we don't return on error on that condition. We do
this as otherwise we loose ability to handle concurrent requests if the
block device already existed.
I'm still not really sold on this - if the probe fails no bdev will
be registered and the lookup will fail. What is the benefit of
propagating the exact error here?
From: Luis Chamberlain <mcgrof@kernel.org> Date: 2021-11-03 16:45:14
On Wed, Nov 03, 2021 at 05:09:33PM +0100, Christoph Hellwig wrote:
On Wed, Nov 03, 2021 at 05:21:56AM -0700, Luis Chamberlain wrote:
quoted
This makes __register_blkdev() return an error, and also changes the
probe() call to return an error as well.
We expand documentation for the probe call to ensure that if the block
device already exists we don't return on error on that condition. We do
this as otherwise we loose ability to handle concurrent requests if the
block device already existed.
I'm still not really sold on this - if the probe fails no bdev will
be registered and the lookup will fail. What is the benefit of
propagating the exact error here?
Here's the thing, prober call a form of add_disk(), and so do we want
to always ignore the errors on probe? If so we should document why that
is sane then. I think this approach is a bit more sane though.
Luis
From: Luis Chamberlain <mcgrof@kernel.org> Date: 2021-11-03 16:47:54
On Wed, Nov 03, 2021 at 05:05:47PM +0100, Christoph Hellwig wrote:
On Wed, Nov 03, 2021 at 05:21:48AM -0700, Luis Chamberlain wrote:
quoted
If nd_integrity_init() fails we'd get del_gendisk() called,
but that's not correct as we should only call that if we're
done with device_add_disk(). Fix this by providing unwinding
prior to the devm call being registered and moving the devm
registration to the very end.
This should fix calling del_gendisk() if nd_integrity_init()
fails. I only spotted this issue through code inspection. It
does not fix any real world bug.
Looks good,
Reviewed-by: Christoph Hellwig <hch@lst.de>
Should this grow a Fixes tag for the commit adding the problem?
Given this driver is going to be removed, do we care? The only
reason I re-added the patch was Dan could not remove the driver
on time.
Luis
From: Luis Chamberlain <mcgrof@kernel.org> Date: 2021-11-03 16:59:15
On Wed, Nov 03, 2021 at 05:02:43PM +0100, Christoph Hellwig wrote:
On Wed, Nov 03, 2021 at 05:21:45AM -0700, Luis Chamberlain wrote:
quoted
del_gendisk() is not required if the disk has not been added.
On kernels prior to commit 40b3a52ffc5bc3 ("block: add a sanity
check for a live disk in del_gendisk") it is mandatory to not
call del_gendisk() if the underlying device has not been through
device_add().
And even with the sanity check is it wrong, and will trigger a WARN_ON.
So maybe this commit log could use a little update?
With that fixed I think this should go into 5.16 and -stable.
Reviewed-by: Christoph Hellwig <hch@lst.de>
OK true, the first WARN_ON() was added on v5.11 through commit 6b3ba9762f9f9
("block: cleanup del_gendisk a bit") though, before that, it is still
wrong. Will send a v3 for this patch alone.
Luis
From: Christoph Hellwig <hch@lst.de> Date: 2021-11-03 17:00:57
On Wed, Nov 03, 2021 at 09:44:53AM -0700, Luis Chamberlain wrote:
Here's the thing, prober call a form of add_disk(), and so do we want
to always ignore the errors on probe? If so we should document why that
is sane then. I think this approach is a bit more sane though.
I suspect the right thing is to just kill of ->probe.
The only thing it supports is pre-devtmpfs, pre-udev semantics that
want to magically create disks when their pre-created device node
is accesses. But if we don't remove it, yes I think not reporting
the error is best. Just clean up whatever local resources were set
up in the ->probe method and let the open fail without the need of
passing on the actual error.
From: Luis Chamberlain <mcgrof@kernel.org> Date: 2021-11-03 17:04:28
On Wed, Nov 03, 2021 at 06:00:49PM +0100, Christoph Hellwig wrote:
On Wed, Nov 03, 2021 at 09:44:53AM -0700, Luis Chamberlain wrote:
quoted
Here's the thing, prober call a form of add_disk(), and so do we want
to always ignore the errors on probe? If so we should document why that
is sane then. I think this approach is a bit more sane though.
I suspect the right thing is to just kill of ->probe.
The only thing it supports is pre-devtmpfs, pre-udev semantics that
want to magically create disks when their pre-created device node
is accesses.
That sounds like a possible userspace impact? And so not for v5.16 for
sure.
But if we don't remove it, yes I think not reporting
the error is best. Just clean up whatever local resources were set
up in the ->probe method and let the open fail without the need of
passing on the actual error.
Alright, I'll do that and send a final v3 for the last 2 patches.
Luis
From: Luis Chamberlain <mcgrof@kernel.org> Date: 2021-11-03 17:41:24
On Wed, Nov 03, 2021 at 05:21:44AM -0700, Luis Chamberlain wrote:
This is the last pending changes to address add_disk() error handling
completely. Changes on this v2 series:
o dropped all patches which folks have said they'd pick up on their
own trees or that I already see present on linux-next
o rebased onto next-20211103
o Added Reviewed-by tag by Dan Williams and addressed his recommended
changes.
o Re-added the nvdimm/blk changes given Dan Williams was not able to
remove the driver in time for v5.16
o Added new nvdimm/pmem driver changes, not sure how I missed addressing
this before.
o Just note that I keep Tetsuo Handa's patch in this series as it is
a requirement for the __register_blkdev() changes.
I'll just send a v3 series which collects all reviewed-by tags and with
the updates.
Luis