vdev_id support for device link aliases

Add a vdev_id feature to map device names based on already defined
udev device links.  To increase the odds that vdev_id will run after
the rules it depends on, increase the vdev.rules rule number from 60
to 69.  With this change, vdev_id now provides functionality analogous
to zpool_id and zpool_layout, paving the way to retire those tools.

A defined alias takes precedence over a topology-derived name, but the
two naming methods can otherwise coexist. For example, one might name
drives in a JBOD with the sas_direct topology while naming an internal
L2ARC device with an alias.

For example, the following lines in vdev_id.conf will result in the
creation of links /dev/disk/by-vdev/{d1,d2}, each pointing to the same
target as the device link specified in the third field.

  #     by-vdev
  #     name     fully qualified or base name of device link
  alias d1       /dev/disk/by-id/wwn-0x5000c5002de3b9ca
  alias d2       wwn-0x5000c5002def789e

Also perform some minor vdev_id cleanup, such as removal of the unused
-s command line option.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #981
This commit is contained in:
Ned Bass
2012-11-29 11:08:37 -08:00
committed by Brian Behlendorf
parent e89260a1c8
commit 2957f38d78
7 changed files with 262 additions and 151 deletions
@@ -1,5 +1,5 @@
#
# @udevdir@/rules.d/60-vdev.rules
# @udevdir@/rules.d/69-vdev.rules
#
ENV{DEVTYPE}=="disk", IMPORT{program}="@udevdir@/vdev_id -d %k"
+2 -2
View File
@@ -1,11 +1,11 @@
udevrule_DATA = \
$(top_srcdir)/udev/rules.d/60-vdev.rules \
$(top_srcdir)/udev/rules.d/69-vdev.rules \
$(top_srcdir)/udev/rules.d/60-zpool.rules \
$(top_srcdir)/udev/rules.d/60-zvol.rules \
$(top_srcdir)/udev/rules.d/90-zfs.rules
EXTRA_DIST = \
$(top_srcdir)/udev/rules.d/60-vdev.rules.in \
$(top_srcdir)/udev/rules.d/69-vdev.rules.in \
$(top_srcdir)/udev/rules.d/60-zpool.rules.in \
$(top_srcdir)/udev/rules.d/60-zvol.rules.in \
$(top_srcdir)/udev/rules.d/90-zfs.rules.in