On 2019-10-24 02:50, Steffen Maier wrote:
On 10/24/19 1:51 AM, asutoshd@xxxxxxxxxxxxxx wrote:
Hi
I'm loading the ufs-qcom driver as a module but am not seeing the
/dev/sda* device nodes.
Looks like it's not being created.
I find the sda nodes in other paths being enumerated though:
/ # find /sys -name sda
/sys/kernel/debug/block/sda
/sys/class/block/sda
/sys/devices/platform/<...>/<xxx>.ufshc/host0/target0:0:0/0:0:0:0/block/sda
/sys/block/sda
All Luns are detected and I see sda is detected and prints for all the
Luns as below -:
sd 0:0:0:0: [sda] .... ....-byte logical blocks:
... so on ...
But if I link it statically instead of a module, it works fine. All
device nodes are created.
I'm trying to figure out where/how in SCSI does it create these device
nodes - /dev/sd<a/b/c/d> ?
That's from (systemd-)udevd user space based on uevents from the
kernel.
I've looked into sd.c but I couldn't figure out the exact place yet.
Yeah, based on the SCSI device probe and add lun, the high level
driver sd would emit udev events for block devices.
Thanks Steffen and Avri.
I understood that sd.c creates the devices based on scsi_device and
establishes a relation between scsi_device (sdp) and scsi_disk (sdkp).
But I couldn't figure out why it creates the device fine when the
ufs-qcom is linked statically, but is unable to create the devices when
inserted as a module.
Does it follow a different method to create the device nodes when
statically linked and needs (systemd-)udevd to handle the events during
dynamic insertion?
Thanks
asd