On Wed, Sep 24, 2008 at 13:01, Tino Keitel <tino.keitel@xxxxxx> wrote: > what's the intention of /dev/disk/by-id/? > > My firewire hard disk seems to have different names with different > kernels. > > With 2.6.26.3, it's name is > /dev/disk/by-id/ieee1394-0030e001e0006585:00043c:0000. > > With someting after 2.6.27-rc7, merged with Arjan's fastboot branch, > the disk has the same name. > > With 2.6.27-rc7, it is called > /dev/disk/by-id/scsi-1WDC_WD10EACS-00D6B0_WD-WCAU41668315. Seems, for some reason, the "ieee1394_id" attribute becomes readable because of lucky timing, which wasn't the case before. > One major config difference is that 2.6.26.3 has CONFIG_FIREWIRE and > CONFIG_FIREWIRE_SBP2 set to "m", whereas the 2.6.27 kernels have set > them to "y". But that doesn't explain the difference between both > 2.6.27-rc kernels. I guess, it's just a not-easy-to-reproduce timing issue with the sysfs attribute. > Shouldn't these names be somewhat constant? Otherwise they would be > totally useless. Yeah, sure they should not change like this. We could just drop the ieee1394-* link creation entirely, if they never worked as expected. Or we can provide it as an additional link instead of making it skip the scsi-* link creation. Tino, care to try if something like the attached works for your setup and creates at least the scsi-links, and, if luckily timed, the ieee1394 links? Stefan, ieee1394 hooks into scsi logic which, i guess, creates the attribute _after_ event time, so udev will not see the attribute when the device is announced. Any idea how to fix that? Thanks, Kay
diff --git a/rules/rules.d/60-persistent-storage.rules b/rules/rules.d/60-persistent-storage.rules index 5218b2c..dec83cf 100644 --- a/rules/rules.d/60-persistent-storage.rules +++ b/rules/rules.d/60-persistent-storage.rules @@ -31,13 +31,16 @@ KERNEL=="hd*[!0-9]", IMPORT{program}="ata_id --export $tempnode" KERNEL=="hd*[!0-9]", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/ata-$env{ID_MODEL}_$env{ID_SERIAL}" KERNEL=="hd*[0-9]", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/ata-$env{ID_MODEL}_$env{ID_SERIAL}-part%n" -KERNEL=="sd*[!0-9]|sr*", ATTRS{ieee1394_id}=="?*", ENV{ID_SERIAL}="$attr{ieee1394_id}", ENV{ID_BUS}="ieee1394" KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="usb", IMPORT{program}="usb_id --export %p" KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", IMPORT{program}="scsi_id --export --whitelisted -d $tempnode", ENV{ID_BUS}="scsi" KERNEL=="cciss?c[0-9]d[0-9]*", ENV{ID_SERIAL}!="?*", IMPORT{program}="scsi_id --export --whitelisted -d $tempnode", ENV{ID_BUS}="cciss" KERNEL=="sd*[!0-9]|sr*|cciss?c[0-9]d[0-9]*", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_SERIAL}" KERNEL=="sd*[0-9]|cciss*p[0-9]*", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_SERIAL}-part%n" +# firewire +KERNEL=="sd*[!0-9]|sr*", ATTRS{ieee1394_id}=="?*", SYMLINK+="disk/by-id/ieee1394-$attr{ieee1394_id}" +KERNEL=="sd*[0-9]", ATTRS{ieee1394_id}=="?*", SYMLINK+="disk/by-id/ieee1394-$attr{ieee1394_id}-part%n" + # libata compat (ata-* links, like old hd* devices did create) KERNEL=="sd*[!0-9]|sr*", ENV{ID_VENDOR}=="ATA", PROGRAM="ata_id $tempnode", RESULT=="?*", ENV{ID_ATA_COMPAT}="$result", SYMLINK+="disk/by-id/ata-$env{ID_ATA_COMPAT}" KERNEL=="sd*[0-9]", ENV{ID_ATA_COMPAT}=="?*", SYMLINK+="disk/by-id/ata-$env{ID_ATA_COMPAT}-part%n"