More on hotplug issue w/HAL

David Zeuthen david at fubar.dk
Mon Jan 5 02:09:18 EET 2004


On Mon, 2004-01-05 at 00:27, Matthew Mastracci wrote:
> I'm learning a lot by taking a look inside the guts of hald.  :)
> 
> I've taken a look and it seems as if my removable drive is also having
> trouble being picked up by hal when hotplugged.  The SCSI host and
> interface devices appear, but no disk appears beneath.  When starting
> hald, the probing correctly picks up this disk.  
> 
> Note that I've added an extra HAL_INFO call before a few
> ds_device_async_find_by_key_value_string calls, and in some
> *_got_parent() methods to determine what it was actually looking for:
> 

Hi, I've just committed some more debug in CVS. Could you use this and
send the same output as well as the output from lshal? I'm quite sure
you found a bug, so let's try to fix it!

> /dev/hde5 mounted at /mnt/ext, major:minor=33:5, fstype=ext3,
> udi=/org/freedesktop/Hal/devices/block_33_5
> 
> and then, 30 seconds after plugin:
> 
> [I] linux/linux_class_block.c:220 visit_class_device_block_got_parent()
> : data2=0x00000000, d=0x091474a0,
> d->udi=/org/freedesktop/Hal/devices/temp/95, parent->udi=no parent,
> parent->in_gdl=42
> [W] linux/linux_class_block.c:224 visit_class_device_block_got_parent()
> : No parent for block device!
> 
> So, it seems like it can't find the parent for /initrd/sys/block/sdf, so
> it can't add sdf itself.  
> 
> I have noticed that there is a SCSI interface device underneath the USB
> drive's node with a path of:
> 
> /initrd/sys/devices/pci0000:00/0000:00:02.0/usb2/2-1/2-1.1/2-1.1:1.0/host20/20:0:0:0
> 
> The log line above (For xxx, parent = xxx) shows that we're looking for
> this node:
> 
> /initrd/sys/devices/pci0000:00/0000:00:02.0/usb2/2-1/2-1.1/2-1.1:1.0/host20/20:0:0:0
> 
> They match, but the node doesn't seem to get found.
> 

Yes, looks like a bug.

> I thought it was a race condition, but I can clearly see the SCSI
> device/host getting added before the block device.  It's just that the
> block device ends up getting no parent!
> 
> This device is definitely hotplugged:
> 
> [root at matt root]# cat /tmp/hal.txt | grep "DEVPATH"
> 
> DEVPATH=/devices/pci0000:00/0000:00:02.0/usb2/2-1/2-1.1
> DEVPATH=/class/scsi_host/host20
> DEVPATH=/devices/pci0000:00/0000:00:02.0/usb2/2-1/2-1.1/2-1.1:1.0/host20/20:0:0:0
> DEVPATH=/block/sdf
> DEVPATH=/block/sdf/sdf1
> DEVPATH=/class/scsi_device/20:0:0:0
> DEVPATH=/devices/pci0000:00/0000:00:02.0/usb2/2-1/2-1.1/2-1.1:1.0

You can actually see here that the devices are not added in order -
that's why I need to have asynchronous find_parent functions which kind
of complicates everything.

Thanks for testing so far!

Cheers,
David





More information about the xdg mailing list