[dm-devel] Re: udev user specified or human readable /dev names

Kay Sievers kay.sievers at vrfy.org
Wed Nov 2 02:53:45 UTC 2005


On Tue, Nov 01, 2005 at 06:01:56PM -0800, Patrick Mansfield wrote:
> On Wed, Nov 02, 2005 at 02:06:15AM +0100, Kay Sievers wrote:
> > On Tue, Nov 01, 2005 at 04:35:31PM -0800, Patrick Mansfield wrote:
> 
> > > But it still would not match, per the issue below, right?
> > 
> > Right, it wouldn't work.
> > 
> > You want this:
> >   ENV{ID_FULL_PATH}=="disk/by-id/scsi-360a98000686f68656c6e7a416f4b6849" SYMLINK+="media-files"
> > 
> > but why don't you just do:
> >   ENV{ID_BUS}=="scsi", ENV{ID_SERIAL}=="360a98000686f68656c6e7a416f4b6849", SYMLINK+="media-files"
> > 
> > The second already works, is independent from all other rules and I think
> > is simpler.
> 
> Yes, I just disagree with it being simpler for all busses/devices.
> 
> I was thinking of the sys admin or a tool looking at the current
> /dev/disk/by-* and adding rule(s) based on those values to a udev rule
> file.

Sure, that may be easier.
But such a tool is only useful if the devices are already present on the
system, right? Then you can read all current available ID_* variables from
the udev database and compose a nice rule from it. :)

> And is there a way to rename or add /dev entries without removing and
> adding back a device?

You can run udevstart again, if its not configured to do some weird
stuff.

The current devel kernel has a "uevent" file, which triggers the
hotplug event again, this could be used to create additional configured
links.

Also:
  ACTION=add DEVPATH=/block/sdm /sbin/udev block
would do it.

Or do you mean adding a link temporarily, so that it get tracked and
removed when the device goes away?

> Using ID_BUS and ID_SERIAL via the following lines like this works:
> 
> KERNEL=="sd*[!0-9]", ENV{ID_BUS}=="scsi" ENV{ID_SERIAL}=="360a98000686f68656c6e7a416f4b6849", SYMLINK+="user/databaseA"
> KERNEL=="sd*[0-9]|dasd*[0-9]", ENV{ID_SERIAL}=="360a98000686f68656c6e7a416f4b6849", SYMLINK+="user/databaseA-part%n"
> 
> KERNEL=="sd*[!0-9]", ENV{ID_BUS}=="scsi" ENV{ID_SERIAL}=="360a98000686f68656c6e7a416f4b2f55", SYMLINK+="user/databaseB"
> KERNEL=="sd*[0-9]", ENV{ID_SERIAL}=="360a98000686f68656c6e7a416f4b2f55", SYMLINK+="user/databaseB-part%n"
> 
> Adding the devices then creates:
> 
> [root at elm3a49 rules.d]# ls -l /dev/user
> total 0
> lrwxrwxrwx  1 root root 6 Nov  1 17:46 databaseA -> ../sdm
> lrwxrwxrwx  1 root root 7 Nov  1 17:47 databaseA-part1 -> ../sdm1
> lrwxrwxrwx  1 root root 6 Nov  1 17:46 databaseB -> ../sdi
> lrwxrwxrwx  1 root root 7 Nov  1 17:46 databaseB-part1 -> ../sdi1
> lrwxrwxrwx  1 root root 7 Nov  1 17:46 databaseB-part2 -> ../sdi2

If you get a buch of these rules, it may be easier to enclose them like this:

  KERNEL!="sd*[!0-9]|dasd*[0-9]", GOTO="custom_end"
  ENV{ID_SERIAL}=="360a98000686f68656c6e7a416f4b2f55", SYMLINK+="user/databaseA-part%n"
  ENV{ID_SERIAL}=="360a98000686f68656c6e7a416f4b2f56", SYMLINK+="user/databaseB-part%n"
  ENV{ID_SERIAL}=="360a98000686f68656c6e7a416f4b2f57", SYMLINK+="user/databaseC-part%n"
  ENV{ID_SERIAL}=="360a98000686f68656c6e7a416f4b2f58", SYMLINK+="user/databaseE-part%n"
  ENV{ID_SERIAL}=="360a98000686f68656c6e7a416f4b2f59", SYMLINK+="user/databaseF-part%n"
  LABEL="custom_end"

Kay




More information about the dm-devel mailing list