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