Re: [PATCH 5.15] dm init: add dm-mod.waitfor to wait for asynchronously probed block devices

Mark-PK Tsai
2023-07-17T01:57:47Z

> On Sun, Jul 16, 2023, 11:16 AM Greg KH <gregkh@linuxfoundation.org> wrote:
>
> > On Thu, Jul 13, 2023 at 01:58:37PM +0800, Mark-PK Tsai wrote:
> > > From: Peter Korsgaard <peter@korsgaard.com>
> > >
> > > Just calling wait_for_device_probe() is not enough to ensure that
> > > asynchronously probed block devices are available (E.G. mmc, usb), so
> > > add a "dm-mod.waitfor=<device1>[,..,<deviceN>]" parameter to get
> > > dm-init to explicitly wait for specific block devices before
> > > initializing the tables with logic similar to the rootwait logic that
> > > was introduced with commit cc1ed7542c8c ("init: wait for
> > > asynchronously scanned block devices").
> > >
> > > E.G. with dm-verity on mmc using:
> > > dm-mod.waitfor="PARTLABEL=hash-a,PARTLABEL=root-a"
> > >
> > > [ 0.671671] device-mapper: init: waiting for all devices to be
> > available before creating mapped devices
> > > [ 0.671679] device-mapper: init: waiting for device PARTLABEL=hash-a
> > ...
> > > [ 0.710695] mmc0: new HS200 MMC card at address 0001
> > > [ 0.711158] mmcblk0: mmc0:0001 004GA0 3.69 GiB
> > > [ 0.715954] mmcblk0boot0: mmc0:0001 004GA0 partition 1 2.00 MiB
> > > [ 0.722085] mmcblk0boot1: mmc0:0001 004GA0 partition 2 2.00 MiB
> > > [ 0.728093] mmcblk0rpmb: mmc0:0001 004GA0 partition 3 512 KiB,
> > chardev (249:0)
> > > [ 0.738274] mmcblk0: p1 p2 p3 p4 p5 p6 p7
> > > [ 0.751282] device-mapper: init: waiting for device PARTLABEL=root-a
> > ...
> > > [ 0.751306] device-mapper: init: all devices available
> > > [ 0.751683] device-mapper: verity: sha256 using implementation
> > "sha256-generic"
> > > [ 0.759344] device-mapper: ioctl: dm-0 (vroot) is ready
> > > [ 0.766540] VFS: Mounted root (squashfs filesystem) readonly on
> > device 254:0.
> > >
> > > Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
> > > Signed-off-by: Mike Snitzer <snitzer@kernel.org>
> > > Cc: stable@vger.kernel.org
> > > Signed-off-by: Mark-PK Tsai <mark-pk.tsai@mediatek.com>
> > > ---
> > > .../admin-guide/device-mapper/dm-init.rst | 8 +++++++
> > > drivers/md/dm-init.c | 22 ++++++++++++++++++-
> > > 2 files changed, 29 insertions(+), 1 deletion(-)
> >
> > What is the git commit id of this change in Linus's tree?
> >
> > thanks,
> >
> > greg k-h
> >
> >
>
> Hey Greg,
>
> This change shouldn't be backported to stable@. It is a feature, if
> Mark-PK feels they need it older kernels they need to carry the change
> in their own tree. Or at a minimum they need to explain why this
> change is warranted in stable@.

Thanks for your comment.
The reason why we think this should be backported to stable kernel is
that it actually fix the potential race condition when make block
device probe async in stable kernel.
And we'd like to fix this upstream rather than just take it in
our custom tree.

>
> But to answer your original question the upstream commit is:
>
> 035641b01e72 dm init: add dm-mod.waitfor to wait for asynchronously probed block devices
>
> Thanks,
> Mike