Re : Query on UFS Lun detection

From: vhiren
Date: Thu Jun 10 2021 - 09:28:32 EST


Hi Community,

We are using UFS as a boot device, and we encountered an error, mentioned below while booting through UFS.


APPS Crash - Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(8,7)

Here in Kernel command line we are passing "root=sda7", this is our Filesystem partition to be mounted.

While debugging the same we observed the partition which is suppose to be mounted as Filesystem is not enumerated itself.
The reason behind not enumerating of partition is, the other Lun got detected first instead of one which is having FS partition.

We are using async probe, hence we know the detection will happen in async way,


In working case : it looks like below

sd 0:0:0:0: sda1 sda2 sda3 sda4 …..sda8

sd 0:0:0:1: sdb1 sdb2
Here, sd 0:0:0:0 Lun got detected first and enumerated as "sdaN", we have FS partition as "sda7" and so we don’t see above mentioned error.


In non working case : it looks like below

sd 0:0:0:0: sdb1 sdb2 sdb3 sdb4 …..sdb8

sd 0:0:0:1: sda1 sda2
Here, sd 0:0:0:1 Lun got detected first and enumerated as "sdaN" but we don’t have FS partition in this Lun. Instead FS partition now became "sdb7".


Observation here is, which ever Lun gets detected first it will have "sda" enumeration and so on.
However, sdx’s driver scsi/sd.c uses async probe to improve performance, meaning sdx disks are created in parallel. Whoever calls device_add_disk() first becomes sda, the next become sdb….


Is there any way, where we can fix this in the Lun detection part of code?

Thank You,
Regards,
Hiren Gohel