On Wed, 15 Nov 2023, Mike Snitzer wrote: > On Wed, Nov 15 2023 at 2:01P -0500, > Aaditya Raj Barnwal <abarnwal@xxxxxxxxxxxxxxxx> wrote: > > > Sorry if that statement confused you , It was debugging print > > that was added to check if the tight while loop has ended or not > > > > Code : dm-init.c > > dm_init_init() > > > > wait_for_device_probe(); > > for (i = 0; i < ARRAY_SIZE(waitfor); i++) { > > if (waitfor[i]) { > > dev_t dev; > > > > DMERR("waiting for device %s ...", waitfor[i]); > > while ((dev= name_to_dev_t(waitfor[i]) !=0)) > > fsleep(5000); > > } > > > > DMERR("exiting after %s ",waitfor[i]); <<<<<<<<<<<here it was added > > } > > > > if (waitfor[0]) > > DMINFO("all devices available"); > > > > list_for_each_entry(dev, &devices, list) { > > if (dm_early_create(&dev->dmi, dev->table, > > dev->target_args_array)) > > break; > > } > > > > > Mikulas wasn't confused. He was pointing out that you have made > changes to your kernel without sharing what they are. > > But your issue is that you configured the dm-mod.waitfor device > incorrectly. You must wait for the underlying physical device(s) that > the virtual DM device depends on. Yes, that's the problem. > Mike [ 9.785204][ T9] mmc0: CQHCI version 5.10 [ 9.826746][ T9] mmc0: SDHCI controller on 8804000.sdhci [8804000.sdhci] using ADMA 64-bit [ 9.835559][ T9] sdhci_msm 8804000.sdhci: mmc0: CQE init: success [ 9.842578][ T1] device-mapper: init: waiting for device /dev/dm-0 ... [ 9.849605][ T1] device-mapper: init: exiting after /dev/dm-0 <<<<<got dev/dm-0 [ 9.856689][ T1] device-mapper: init: all devices available [ 9.863061][ T1] device-mapper: table: 252:0: verity: Data device lookup failed [ 9.870868][ T1] device-mapper: ioctl: error adding target to table [ 9.895539][ T37] I'm wondering about another thing - here it succeeds finding /dev/dm-0 and immediatelly after that fails loading /dev/dm-0 table with the dm-verity target. So, how could we succeed finding /dev/dm-0 before it was created? I think that you backported that patch incorrectly - instead of while ((dev= name_to_dev_t(waitfor[i]) !=0)) fsleep(5000); there should be while ((dev= name_to_dev_t(waitfor[i]) ==0)) fsleep(5000); There was a change in the return value of devt_from_devname - in 6.7-rc1, it returns 0 on success and -ERROR on error. In 5.15.104, it returns 0 on error and a device nubmer on success. Mikulas