Re: udev and ID_FS_UUID

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Investigation brought us to believe that there might be a circular
call of the function udev_device_read_uevent_file() because this
function tests at the beginning the value of
udev_device->uevent_loaded and afterwards sets it to true even though
all the other functions calling udev_device_read_uevent_file() are
testing the value of info_loaded. As far as I can see, uevent_loaded
is not used anywhere in udev outside udev_device_read_uevent_file()
function.
The issue presented in this bug repost is fixed if in
udev_device_read_uevent_file() we replace the 2 occurrences of
uevent_loaded with info_loaded. If not, then udev_device_get_devnum
will eventually get called before we have the valid dev_t devnum in
case we have a property with an empty value (in our case it was
PARTITION).


On Thu, Sep 22, 2011 at 4:48 PM, Foinel <flocirel@xxxxxxxxx> wrote:
> Hello,
> I am having some issues related to getting the udev env var ID_FS_UUID
> of a plugged usb stick using udev version 173 (same happens on udev
> 166, but not on 163) and kernel 2.6.36
>
> So here it goes: plug a usb stick and issue:
>
> "udevadm --debug info --query=all --name=sdb1" (in my case sdb is the
> newly inserted usb stick)
>
> this only prints the following:
>
>
> custom logging function 0x54ad2008 registered
> main: runtime dir '/run/udev'
> run_command: calling: info
> udev_device_new_from_syspath: device 0x54ad2090 has devpath [MY_DEVPATH]
> P: [MY_DEVPATH]
> udev_device_read_db: no db file to read /run/udev/data/+block:sdb1: No
> such file or directory
> N: sdb1
> E: UDEV_LOG=7
> E: DEVPATH=[MY_DEVPATH]
> E: MAJOR=8
> E: MINOR=17
> E: DEVNAME=/dev/sdb1
> E: DEVTYPE=partition
> E: PARTN=1
> E: SUBSYSTEM=block
>
>
> As you can see, udevamd --debug complains that the file
> /run/udev/data/+block:sdb1 does not exist. Version 163 uses devpath
> instead of the runpath used by version 173. Does the introduction of
> the runpath need something specific in the kernel which may not be
> present/stable in kernel 2.6.36 ?
>
> One more thing to mention. If I create a symlink such as:
>
>
> ln -sf /run/udev/data/b8:17 /run/udev/data/+block:sdb1   (where 8:17
> is the major:minor pair of the block device - usb stick inserted)
>
> then, I can get the ID_FS_UUID using udevadm. Any idea why
> udev_device_get_id_filename() returns +block:sdb1 instead of b8:17 ?
>
> Doing a little debugging in the udev code, it seems that the major and
> minor numbers are correct in the udev_device_read_uevent_file()
> function, however upon return in udev_device_get_devnum() major and
> minor numbers are 0 so in turn in udev_device_get_id_filename() it
> goes through the else branch hence the +block:sdb1 filename that does
> not exist and that brings up the error listed above.
> Any ideas?
>
> Thanks you in advance.
>
--
To unsubscribe from this list: send the line "unsubscribe linux-hotplug" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel]     [Linux DVB]     [Asterisk Internet PBX]     [DCCP]     [Netdev]     [X.org]     [Util Linux NG]     [Fedora Women]     [ALSA Devel]     [Linux USB]

  Powered by Linux