From 7df02c0f57188fc24af688a8d08bfd3eff9fba1b Mon Sep 17 00:00:00 2001
From: Brian Behlendorf <behlendorf1@llnl.gov>
Date: Mon, 1 Mar 2010 16:45:31 -0800
Subject: [PATCH] Split the udev rule from a specific configuration

While I completely agree the udev is the lesser of many possibles
evils when solving the device issue... it is still evil.  After
attempting to craft a single rule which will work for various
versions of udev in various distros.  I've come to the conclusion
the only maintainable way to solve this issue is to split the rule
from any particular configuration.

This commit provides a generic 60-zpool.rules file which use a
small helper util 'zpool_id' to parse a configuration file by
default located in /etc/zfs/zdev.conf.  The helper script maps
a by-path udev name to a more friendly name of <channel><rank>
for large configurations.

As part of this change all of the support scripts why rely on
this udev naming convention have been updated as needed.  Example
zdev.conf files have also been added for 3 different systems by
you will always need to add one for your exact hardware.

Finally, included in these changes are the proper tweaks to the
build system to ensure everything still get's packaged properly
in the rpms and can run in or out of tree.
---
 Makefile.am                                |   2 +-
 cmd/Makefile.am                            |   2 +-
 cmd/zpool_id/Makefile.am                   |   1 +
 cmd/zpool_id/zpool_id                      |  60 ++++
 config/zfs-build.m4                        |   3 +-
 configure.ac                               |   2 +
 etc/Makefile.am                            |   3 +
 etc/udev/rules.d/60-zpool.rules            |   8 +
 etc/zfs/zdev.conf                          |   9 +
 etc/zfs/zdev.conf.dragon.example           | 176 +++++++++++
 etc/zfs/zdev.conf.promise.example          |  26 ++
 etc/zfs/zdev.conf.x4550.example            |  66 ++++
 scripts/Makefile.am                        |   1 -
 scripts/common.sh                          |  26 +-
 scripts/udev-rules/99-zpool.rules.dragon   | 331 ---------------------
 scripts/udev-rules/99-zpool.rules.promise  |  41 ---
 scripts/udev-rules/99-zpool.rules.x4550    | 115 -------
 scripts/zpool-config/dragon-raid0-1x70.sh  |   2 +-
 scripts/zpool-config/dragon-raid10-35x2.sh |   2 +-
 scripts/zpool-config/dragon-raidz-7x10.sh  |   2 +-
 scripts/zpool-config/dragon-raidz2-7x10.sh |   2 +-
 scripts/zpool-config/promise-raid0-1x16.sh |   2 +-
 scripts/zpool-config/promise-raid10-8x2.sh |   2 +-
 scripts/zpool-config/promise-raidz-2x8.sh  |   2 +-
 scripts/zpool-config/promise-raidz2-2x8.sh |   2 +-
 scripts/zpool-config/x4550-raid0-1x48.sh   |   2 +-
 scripts/zpool-config/x4550-raid10-24x2.sh  |   2 +-
 scripts/zpool-config/x4550-raidz-8x6.sh    |   2 +-
 scripts/zpool-config/x4550-raidz2-8x6.sh   |   2 +-
 zfs.spec.in                                |   2 +
 30 files changed, 393 insertions(+), 505 deletions(-)
 create mode 100644 cmd/zpool_id/Makefile.am
 create mode 100755 cmd/zpool_id/zpool_id
 create mode 100644 etc/Makefile.am
 create mode 100644 etc/udev/rules.d/60-zpool.rules
 create mode 100644 etc/zfs/zdev.conf
 create mode 100644 etc/zfs/zdev.conf.dragon.example
 create mode 100644 etc/zfs/zdev.conf.promise.example
 create mode 100644 etc/zfs/zdev.conf.x4550.example
 delete mode 100644 scripts/udev-rules/99-zpool.rules.dragon
 delete mode 100644 scripts/udev-rules/99-zpool.rules.promise
 delete mode 100644 scripts/udev-rules/99-zpool.rules.x4550

diff --git a/Makefile.am b/Makefile.am
index f6d4121aed..c174e98d1c 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,7 +1,7 @@
 include $(top_srcdir)/config/rpm.am
 
 if CONFIG_USER
-USER_DIR = config man scripts lib cmd
+USER_DIR = config etc man scripts lib cmd
 endif
 if CONFIG_KERNEL
 KERNEL_DIR = module
diff --git a/cmd/Makefile.am b/cmd/Makefile.am
index 86ec885bc2..98794d574e 100644
--- a/cmd/Makefile.am
+++ b/cmd/Makefile.am
@@ -1 +1 @@
-SUBDIRS = zfs zpool zdb zinject ztest
+SUBDIRS = zfs zpool zpool_id zdb zinject ztest
diff --git a/cmd/zpool_id/Makefile.am b/cmd/zpool_id/Makefile.am
new file mode 100644
index 0000000000..023e1ab59a
--- /dev/null
+++ b/cmd/zpool_id/Makefile.am
@@ -0,0 +1 @@
+dist_bin_SCRIPTS = zpool_id
diff --git a/cmd/zpool_id/zpool_id b/cmd/zpool_id/zpool_id
new file mode 100755
index 0000000000..c3637847a8
--- /dev/null
+++ b/cmd/zpool_id/zpool_id
@@ -0,0 +1,60 @@
+#!/bin/bash
+
+CONFIG=${CONFIG:-/etc/zfs/zdev.conf}
+PATH_ID=${PATH_ID:-/lib/udev/path_id}
+AWK=${AWK:-/bin/awk}
+
+die() {
+	echo "Error: $*"
+	exit 1
+}
+
+usage() {
+	cat << EOF
+Usage: zpool_id [h] [-c configfile] <devpath>
+  -c    Alternate config file [default /etc/zfs/zdev.conf]
+  -d    Use path_id from device as the mapping key
+  -h    Show this message
+EOF
+	exit 1
+}
+
+while getopts 'c:d:h' OPTION; do
+	case ${OPTION} in
+	c)
+		CONFIG=${OPTARG}
+		;;
+	d)
+		DEVICE=${OPTARG}
+		;;
+	h)
+		usage
+		;;
+	esac
+done
+
+# Check that a device was requested
+[ -z ${DEVICE} ] && usage
+
+# Check for the existence of a configuration file
+[ ! -f ${CONFIG} ] && die "Missing config file: ${CONFIG}"
+
+# Use udev's path_id to generate a unique persistent key
+eval `${PATH_ID} ${DEVICE}`
+[ -z ${ID_PATH} ] && die "Missing ID_PATH for ${DEVICE}"
+
+# Use the persistent key to lookup the zpool device id in the
+# configuration file which is of the format <device id> <key>.
+# Lines starting with #'s are treated as comments and ignored.
+# Exact matches are required, wild cards are not supported,
+# and only the first match is returned.
+ID_ZPOOL=`${AWK} "/${ID_PATH}\>/ && !/^#/ { print \\$1; exit }" ${CONFIG}`
+[ -z ${ID_ZPOOL} ] && die "Missing ID_ZPOOL for ID_PATH: ${ID_PATH}"
+
+if [ ${ID_ZPOOL} ]; then
+	echo "ID_PATH=${ID_PATH}"
+	echo "ID_ZPOOL=${ID_ZPOOL}"
+	echo "ID_ZPOOL_PATH=disk/zpool/${ID_ZPOOL}"
+fi
+
+exit 0
diff --git a/config/zfs-build.m4 b/config/zfs-build.m4
index 4b47807790..d2ba2977fa 100644
--- a/config/zfs-build.m4
+++ b/config/zfs-build.m4
@@ -52,13 +52,14 @@ LIBDIR=${LIBDIR}
 CMDDIR=${CMDDIR}
 MODDIR=${MODDIR}
 SCRIPTDIR=${SCRIPTDIR}
-UDEVDIR=\${TOPDIR}/scripts/udev-rules
+ETCDIR=\${TOPDIR}/etc
 ZPOOLDIR=\${TOPDIR}/scripts/zpool-config
 
 ZDB=\${CMDDIR}/zdb/zdb
 ZFS=\${CMDDIR}/zfs/zfs
 ZINJECT=\${CMDDIR}/zinject/zinject
 ZPOOL=\${CMDDIR}/zpool/zpool
+ZPOOL_ID=\${CMDDIR}/zpool_id/zpool_id
 ZTEST=\${CMDDIR}/ztest/ztest
 
 COMMON_SH=\${SCRIPTDIR}/common.sh
diff --git a/configure.ac b/configure.ac
index 7bc41dc225..f49b09b764 100644
--- a/configure.ac
+++ b/configure.ac
@@ -52,6 +52,7 @@ ZFS_AC_DEBUG
 AC_CONFIG_FILES([ 
 	Makefile
 	config/Makefile
+	etc/Makefile
 	man/Makefile
 	man/man8/Makefile
 	lib/Makefile
@@ -68,6 +69,7 @@ AC_CONFIG_FILES([
 	cmd/zfs/Makefile
 	cmd/zinject/Makefile
 	cmd/zpool/Makefile
+	cmd/zpool_id/Makefile
 	cmd/ztest/Makefile
 	module/Makefile
 	module/avl/Makefile
diff --git a/etc/Makefile.am b/etc/Makefile.am
new file mode 100644
index 0000000000..1bc847d1a2
--- /dev/null
+++ b/etc/Makefile.am
@@ -0,0 +1,3 @@
+sysconfdir = /etc
+nobase_dist_sysconf_DATA  = zfs/*
+nobase_dist_sysconf_DATA += udev/rules.d/*
diff --git a/etc/udev/rules.d/60-zpool.rules b/etc/udev/rules.d/60-zpool.rules
new file mode 100644
index 0000000000..0f4a356dd6
--- /dev/null
+++ b/etc/udev/rules.d/60-zpool.rules
@@ -0,0 +1,8 @@
+#
+# /etc/udev/rules.d/99-zpool.rules
+#
+
+ENV{DEVTYPE}=="disk", IMPORT{program}="/usr/bin/zpool_id -d %p"
+
+KERNEL=="*[!0-9]", ENV{SUBSYSTEM}=="block", ENV{ID_ZPOOL}=="?*", SYMLINK+="$env{ID_ZPOOL_PATH}"
+KERNEL=="*[0-9]", ENV{SUBSYSTEM}=="block", ENV{ID_ZPOOL}=="?*", SYMLINK+="$env{ID_ZPOOL_PATH}-part%n"
diff --git a/etc/zfs/zdev.conf b/etc/zfs/zdev.conf
new file mode 100644
index 0000000000..236c342b3a
--- /dev/null
+++ b/etc/zfs/zdev.conf
@@ -0,0 +1,9 @@
+#
+# Custom by-path mapping for large JBOD configurations
+#
+# Example Config: Desktop
+#
+
+#<ID>	<by-path name>
+#disk1	pci-0000:61:06.1-scsi-0:0:0:0
+#disk2	pci-0000:61:06.1-scsi-0:0:0:1
diff --git a/etc/zfs/zdev.conf.dragon.example b/etc/zfs/zdev.conf.dragon.example
new file mode 100644
index 0000000000..23ef7f09d5
--- /dev/null
+++ b/etc/zfs/zdev.conf.dragon.example
@@ -0,0 +1,176 @@
+#
+# Custom by-path mapping for large JBOD configurations
+#
+# Example Config:
+# Quarter scale dragon drawer based SSU for RHEL6
+#
+
+# Channel A: PCI Bus 3, Enclosure 0x50001ff10e991000
+a1	pci-0000:03:00.0-sas-0x50001ff10e991000-34
+a2	pci-0000:03:00.0-sas-0x50001ff10e991000-35
+a3	pci-0000:03:00.0-sas-0x50001ff10e991000-39
+a4	pci-0000:03:00.0-sas-0x50001ff10e991000-40
+a5	pci-0000:03:00.0-sas-0x50001ff10e991000-44
+a6	pci-0000:03:00.0-sas-0x50001ff10e991000-45
+a7	pci-0000:03:00.0-sas-0x50001ff10e991000-48
+a8	pci-0000:03:00.0-sas-0x50001ff10e991000-49
+a9	pci-0000:03:00.0-sas-0x50001ff10e991000-50
+a10	pci-0000:03:00.0-sas-0x50001ff10e991000-53
+a11	pci-0000:03:00.0-sas-0x50001ff10e991000-54
+a12	pci-0000:03:00.0-sas-0x50001ff10e991000-55
+a13	pci-0000:03:00.0-sas-0x50001ff10e991000-58
+a14	pci-0000:03:00.0-sas-0x50001ff10e991000-59
+a15	pci-0000:03:00.0-sas-0x50001ff10e991000-60
+
+# Channel B: PCI Bus 3, Enclosure 0x50001ff10e9d1000
+b1	pci-0000:03:00.0-sas-0x50001ff10e9d1000-34
+b2	pci-0000:03:00.0-sas-0x50001ff10e9d1000-35
+b3	pci-0000:03:00.0-sas-0x50001ff10e9d1000-39
+b4	pci-0000:03:00.0-sas-0x50001ff10e9d1000-40
+b5	pci-0000:03:00.0-sas-0x50001ff10e9d1000-44
+b6	pci-0000:03:00.0-sas-0x50001ff10e9d1000-45
+b7	pci-0000:03:00.0-sas-0x50001ff10e9d1000-48
+b8	pci-0000:03:00.0-sas-0x50001ff10e9d1000-49
+b9	pci-0000:03:00.0-sas-0x50001ff10e9d1000-50
+b10	pci-0000:03:00.0-sas-0x50001ff10e9d1000-53
+b11	pci-0000:03:00.0-sas-0x50001ff10e9d1000-54
+b12	pci-0000:03:00.0-sas-0x50001ff10e9d1000-55
+b13	pci-0000:03:00.0-sas-0x50001ff10e9d1000-58
+b14	pci-0000:03:00.0-sas-0x50001ff10e9d1000-59
+b15	pci-0000:03:00.0-sas-0x50001ff10e9d1000-60
+
+# Channel C: PCI Bus 4, Enclosure 0x50001ff10e991000
+c1	pci-0000:04:00.0-sas-0x50001ff10e991000-31
+c2	pci-0000:04:00.0-sas-0x50001ff10e991000-32
+c3	pci-0000:04:00.0-sas-0x50001ff10e991000-33
+c4	pci-0000:04:00.0-sas-0x50001ff10e991000-36
+c5	pci-0000:04:00.0-sas-0x50001ff10e991000-37
+c6	pci-0000:04:00.0-sas-0x50001ff10e991000-38
+c7	pci-0000:04:00.0-sas-0x50001ff10e991000-41
+c8	pci-0000:04:00.0-sas-0x50001ff10e991000-42
+c9	pci-0000:04:00.0-sas-0x50001ff10e991000-43
+c10	pci-0000:04:00.0-sas-0x50001ff10e991000-46
+c11	pci-0000:04:00.0-sas-0x50001ff10e991000-47
+c12	pci-0000:04:00.0-sas-0x50001ff10e991000-51
+c13	pci-0000:04:00.0-sas-0x50001ff10e991000-52
+c14	pci-0000:04:00.0-sas-0x50001ff10e991000-56
+c15	pci-0000:04:00.0-sas-0x50001ff10e991000-57
+
+# Channel D: PCI Bus 4, Enclosure 0x50001ff10e9d1000
+d1	pci-0000:04:00.0-sas-0x50001ff10e9d1000-31
+d2	pci-0000:04:00.0-sas-0x50001ff10e9d1000-32
+d3	pci-0000:04:00.0-sas-0x50001ff10e9d1000-33
+d4	pci-0000:04:00.0-sas-0x50001ff10e9d1000-36
+d5	pci-0000:04:00.0-sas-0x50001ff10e9d1000-37
+d6	pci-0000:04:00.0-sas-0x50001ff10e9d1000-38
+d7	pci-0000:04:00.0-sas-0x50001ff10e9d1000-41
+d8	pci-0000:04:00.0-sas-0x50001ff10e9d1000-42
+d9	pci-0000:04:00.0-sas-0x50001ff10e9d1000-43
+d10	pci-0000:04:00.0-sas-0x50001ff10e9d1000-46
+d11	pci-0000:04:00.0-sas-0x50001ff10e9d1000-47
+d12	pci-0000:04:00.0-sas-0x50001ff10e9d1000-51
+d13	pci-0000:04:00.0-sas-0x50001ff10e9d1000-52
+d14	pci-0000:04:00.0-sas-0x50001ff10e9d1000-56
+d15	pci-0000:04:00.0-sas-0x50001ff10e9d1000-57
+
+# Channel E: PCI Bus 84, Enclosure 0x50001ff10e991000
+e1	pci-0000:84:00.0-sas-0x50001ff10e991000-3
+e2	pci-0000:84:00.0-sas-0x50001ff10e991000-4
+e3	pci-0000:84:00.0-sas-0x50001ff10e991000-5
+e4	pci-0000:84:00.0-sas-0x50001ff10e991000-8
+e5	pci-0000:84:00.0-sas-0x50001ff10e991000-9
+e6	pci-0000:84:00.0-sas-0x50001ff10e991000-10
+e7	pci-0000:84:00.0-sas-0x50001ff10e991000-13
+e8	pci-0000:84:00.0-sas-0x50001ff10e991000-14
+e9	pci-0000:84:00.0-sas-0x50001ff10e991000-15
+e10	pci-0000:84:00.0-sas-0x50001ff10e991000-19
+e11	pci-0000:84:00.0-sas-0x50001ff10e991000-20
+e12	pci-0000:84:00.0-sas-0x50001ff10e991000-24
+e13	pci-0000:84:00.0-sas-0x50001ff10e991000-25
+e14	pci-0000:84:00.0-sas-0x50001ff10e991000-29
+e15	pci-0000:84:00.0-sas-0x50001ff10e991000-30
+
+# Channel F: PCI Bus 84, Enclosure 0x50001ff10e9d1000
+f1	pci-0000:84:00.0-sas-0x50001ff10e9d1000-3
+f2	pci-0000:84:00.0-sas-0x50001ff10e9d1000-4
+f3	pci-0000:84:00.0-sas-0x50001ff10e9d1000-5
+f4	pci-0000:84:00.0-sas-0x50001ff10e9d1000-8
+f5	pci-0000:84:00.0-sas-0x50001ff10e9d1000-9
+f6	pci-0000:84:00.0-sas-0x50001ff10e9d1000-10
+f7	pci-0000:84:00.0-sas-0x50001ff10e9d1000-13
+f8	pci-0000:84:00.0-sas-0x50001ff10e9d1000-14
+f9	pci-0000:84:00.0-sas-0x50001ff10e9d1000-15
+f10	pci-0000:84:00.0-sas-0x50001ff10e9d1000-19
+f11	pci-0000:84:00.0-sas-0x50001ff10e9d1000-20
+f12	pci-0000:84:00.0-sas-0x50001ff10e9d1000-24
+f13	pci-0000:84:00.0-sas-0x50001ff10e9d1000-25
+f14	pci-0000:84:00.0-sas-0x50001ff10e9d1000-29
+f15	pci-0000:84:00.0-sas-0x50001ff10e9d1000-30
+
+# Channel G: PCI Bus 85, Enclosure 0x50001ff10e991000
+g1	pci-0000:85:00.0-sas-0x50001ff10e991000-1
+g2	pci-0000:85:00.0-sas-0x50001ff10e991000-2
+g3	pci-0000:85:00.0-sas-0x50001ff10e991000-6
+g4	pci-0000:85:00.0-sas-0x50001ff10e991000-7
+g5	pci-0000:85:00.0-sas-0x50001ff10e991000-11
+g6	pci-0000:85:00.0-sas-0x50001ff10e991000-12
+g7	pci-0000:85:00.0-sas-0x50001ff10e991000-16
+g8	pci-0000:85:00.0-sas-0x50001ff10e991000-17
+g9	pci-0000:85:00.0-sas-0x50001ff10e991000-18
+g10	pci-0000:85:00.0-sas-0x50001ff10e991000-21
+g11	pci-0000:85:00.0-sas-0x50001ff10e991000-22
+g12	pci-0000:85:00.0-sas-0x50001ff10e991000-23
+g13	pci-0000:85:00.0-sas-0x50001ff10e991000-26
+g14	pci-0000:85:00.0-sas-0x50001ff10e991000-27
+g15	pci-0000:85:00.0-sas-0x50001ff10e991000-28
+
+# Channel H: PCI Bus 85, Enclosure 0x50001ff10e9d1000
+h1	pci-0000:85:00.0-sas-0x50001ff10e9d1000-1
+h2	pci-0000:85:00.0-sas-0x50001ff10e9d1000-2
+h3	pci-0000:85:00.0-sas-0x50001ff10e9d1000-6
+h4	pci-0000:85:00.0-sas-0x50001ff10e9d1000-7
+h5	pci-0000:85:00.0-sas-0x50001ff10e9d1000-11
+h6	pci-0000:85:00.0-sas-0x50001ff10e9d1000-12
+h7	pci-0000:85:00.0-sas-0x50001ff10e9d1000-16
+h8	pci-0000:85:00.0-sas-0x50001ff10e9d1000-17
+h9	pci-0000:85:00.0-sas-0x50001ff10e9d1000-18
+h10	pci-0000:85:00.0-sas-0x50001ff10e9d1000-21
+h11	pci-0000:85:00.0-sas-0x50001ff10e9d1000-22
+h12	pci-0000:85:00.0-sas-0x50001ff10e9d1000-23
+h13	pci-0000:85:00.0-sas-0x50001ff10e9d1000-26
+h14	pci-0000:85:00.0-sas-0x50001ff10e9d1000-27
+h15	pci-0000:85:00.0-sas-0x50001ff10e9d1000-28
+
+# Channel I: PCI Bus 83, Enclosure 0x5000155359b8e33f
+i1	pci-0000:83:00.0-sas-0x5000155359b8e33f-0
+i2	pci-0000:83:00.0-sas-0x5000155359b8e33f-1
+i3	pci-0000:83:00.0-sas-0x5000155359b8e33f-2
+i4	pci-0000:83:00.0-sas-0x5000155359b8e33f-3
+i5	pci-0000:83:00.0-sas-0x5000155359b8e33f-4
+i6	pci-0000:83:00.0-sas-0x5000155359b8e33f-5
+i7	pci-0000:83:00.0-sas-0x5000155359b8e33f-6
+i8	pci-0000:83:00.0-sas-0x5000155359b8e33f-7
+i9	pci-0000:83:00.0-sas-0x5000155359b8e33f-8
+i10	pci-0000:83:00.0-sas-0x5000155359b8e33f-9
+i11	pci-0000:83:00.0-sas-0x5000155359b8e33f-10
+i12	pci-0000:83:00.0-sas-0x5000155359b8e33f-11
+i13	pci-0000:83:00.0-sas-0x5000155359b8e33f-12
+i14	pci-0000:83:00.0-sas-0x5000155359b8e33f-13
+i15	pci-0000:83:00.0-sas-0x5000155359b8e33f-14
+
+# Channel J: PCI Bus 83, Enclosure 0x5000155359dba33f
+j1	pci-0000:83:00.0-sas-0x5000155359dba33f-0
+j2	pci-0000:83:00.0-sas-0x5000155359dba33f-1
+j3	pci-0000:83:00.0-sas-0x5000155359dba33f-2
+j4	pci-0000:83:00.0-sas-0x5000155359dba33f-3
+j5	pci-0000:83:00.0-sas-0x5000155359dba33f-4
+j6	pci-0000:83:00.0-sas-0x5000155359dba33f-5
+j7	pci-0000:83:00.0-sas-0x5000155359dba33f-6
+j8	pci-0000:83:00.0-sas-0x5000155359dba33f-7
+j9	pci-0000:83:00.0-sas-0x5000155359dba33f-8
+j10	pci-0000:83:00.0-sas-0x5000155359dba33f-9
+j11	pci-0000:83:00.0-sas-0x5000155359dba33f-10
+j12	pci-0000:83:00.0-sas-0x5000155359dba33f-11
+j13	pci-0000:83:00.0-sas-0x5000155359dba33f-12
+j14	pci-0000:83:00.0-sas-0x5000155359dba33f-13
+j15	pci-0000:83:00.0-sas-0x5000155359dba33f-14
diff --git a/etc/zfs/zdev.conf.promise.example b/etc/zfs/zdev.conf.promise.example
new file mode 100644
index 0000000000..8b068f89d0
--- /dev/null
+++ b/etc/zfs/zdev.conf.promise.example
@@ -0,0 +1,26 @@
+#
+# Custom by-path mapping for large JBOD configurations
+#
+# Example Config:
+# Single promise JBOD for RHEL6
+#
+
+# Channel A: PCI Bus 7, Enclosure 0x500304800027367f
+a1	pci-0000:07:00.0-sas-0x500304800027367f-0
+a2	pci-0000:07:00.0-sas-0x500304800027367f-1
+a3	pci-0000:07:00.0-sas-0x500304800027367f-2
+a4	pci-0000:07:00.0-sas-0x500304800027367f-3
+a5	pci-0000:07:00.0-sas-0x500304800027367f-4
+a6	pci-0000:07:00.0-sas-0x500304800027367f-5
+a7	pci-0000:07:00.0-sas-0x500304800027367f-6
+a8	pci-0000:07:00.0-sas-0x500304800027367f-7
+
+# Channel B: PCI Bus 7, Enclosure 0x500304800027367f
+b1	pci-0000:07:00.0-sas-0x500304800027367f-8
+b2	pci-0000:07:00.0-sas-0x500304800027367f-9
+b3	pci-0000:07:00.0-sas-0x500304800027367f-10
+b4	pci-0000:07:00.0-sas-0x500304800027367f-11
+b5	pci-0000:07:00.0-sas-0x500304800027367f-12
+b6	pci-0000:07:00.0-sas-0x500304800027367f-13
+b7	pci-0000:07:00.0-sas-0x500304800027367f-14
+b8	pci-0000:07:00.0-sas-0x500304800027367f-15
diff --git a/etc/zfs/zdev.conf.x4550.example b/etc/zfs/zdev.conf.x4550.example
new file mode 100644
index 0000000000..9c611ed457
--- /dev/null
+++ b/etc/zfs/zdev.conf.x4550.example
@@ -0,0 +1,66 @@
+#
+# Custom by-path mapping for large JBOD configurations
+#
+# Example Config:
+# Sun x4550 for RHEL5
+#
+
+# Channel A: PCI Bus 2
+a1	pci-0000:02:00.0-sas-0x50062b0000000001:1:0-0xd6807184d601e192:0
+a2	pci-0000:02:00.0-sas-0x50062b0000000002:1:1-0xd4905378e6e3d592:1
+a3	pci-0000:02:00.0-sas-0x50062b0000000003:1:2-0xd3827673d806d392:2
+a4	pci-0000:02:00.0-sas-0x50062b0000000004:1:3-0xd6805385d6e3e192:3
+a5	pci-0000:02:00.0-sas-0x50062b0000000005:1:4-0xd680655bd6f5b792:4
+a6	pci-0000:02:00.0-sas-0x50062b0000000006:1:5-0x7a967598ec06d091:5
+a7	pci-0000:02:00.0-sas-0x50062b0000000007:1:6-0xd3826c60d8fcbf92:6
+a8	pci-0000:02:00.0-sas-0x50062b0000000008:1:7-0xd6805271d6e2cd92:7
+
+# Channel B: PCI Bus 3
+b1	pci-0000:03:00.0-sas-0x50062b0000000002:1:0-0xd680685fd6f8bb92:0
+b2	pci-0000:03:00.0-sas-0x50062b0000000003:1:1-0xd58c706de200cb92:1
+b3	pci-0000:03:00.0-sas-0x50062b0000000004:1:2-0xd5897480df04de92:2
+b4	pci-0000:03:00.0-sas-0x50062b0000000005:1:3-0xd6805764d6e7c092:3
+b5	pci-0000:03:00.0-sas-0x50062b0000000006:1:4-0xd6806a6dd6fac992:4
+b6	pci-0000:03:00.0-sas-0x50062b0000000007:1:5-0xd58c6b84e2fbe192:5
+b7	pci-0000:03:00.0-sas-0x50062b0000000008:1:6-0xd58a576ee0e7cb92:6
+b8	pci-0000:03:00.0-sas-0x50062b0000000009:1:7-0xd5877871dd08cf92:7
+
+# Channel C: PCI Bus 4
+c1	pci-0000:04:00.0-sas-0x50062b0000000003:1:0-0xd6806678d6f6d492:0
+c2	pci-0000:04:00.0-sas-0x50062b0000000004:1:1-0xd680696fd6f9cb92:1
+c3	pci-0000:04:00.0-sas-0x50062b0000000005:1:2-0xd3827182d801e292:2
+c4	pci-0000:04:00.0-sas-0x50062b0000000006:1:3-0xd680666fd6f6cb92:3
+c5	pci-0000:04:00.0-sas-0x50062b0000000007:1:4-0xd6806970d6f9cc92:4
+c6	pci-0000:04:00.0-sas-0x50062b0000000008:1:5-0xd6806b62d6fbbe92:5
+c7	pci-0000:04:00.0-sas-0x50062b0000000009:1:6-0xd58a5760e0e7bd92:6
+c8	pci-0000:04:00.0-sas-0x50062b000000000a:1:7-0xd680717fd601dc92:7
+
+# Channel D: PCI Bus 41
+d1	pci-0000:41:00.0-sas-0x50062b0000000004:1:0-0xd6806572d6f5ce92:0
+d2	pci-0000:41:00.0-sas-0x50062b0000000005:1:1-0xd6806983d6f9df92:1
+d3	pci-0000:41:00.0-sas-0x50062b0000000006:1:2-0xd3826c69d8fcc892:2
+d4	pci-0000:41:00.0-sas-0x50062b0000000007:1:3-0xd680725fd602bc92:3
+d5	pci-0000:41:00.0-sas-0x50062b0000000008:1:4-0xd6806971d6f9cd92:4
+d6	pci-0000:41:00.0-sas-0x50062b0000000009:1:5-0xd680726dd602ca92:5
+d7	pci-0000:41:00.0-sas-0x50062b000000000a:1:6-0xd3827772d807d292:6
+d8	pci-0000:41:00.0-sas-0x50062b000000000b:1:7-0xd4955584ebe5e192:7
+
+# Channel E: PCI Bus 42
+e1	pci-0000:42:00.0-sas-0x50062b0000000005:1:0-0xd4925676e8e6d392:0
+e2	pci-0000:42:00.0-sas-0x50062b0000000006:1:1-0xd6806b6ed6fbca92:1
+e3	pci-0000:42:00.0-sas-0x50062b0000000007:1:2-0xd382765fd806bf92:2
+e4	pci-0000:42:00.0-sas-0x50062b0000000008:1:3-0xd587786cdd08ca92:3
+e5	pci-0000:42:00.0-sas-0x50062b0000000009:1:4-0xd66f4e5bc5deb792:4
+e6	pci-0000:42:00.0-sas-0x50062b000000000a:1:5-0xd6806879d6f8d592:5
+e7	pci-0000:42:00.0-sas-0x50062b000000000b:1:6-0xd5885175dee1d292:6
+e8	pci-0000:42:00.0-sas-0x50062b000000000c:1:7-0xd588515fdee1bc92:7
+
+# Channel F: PCI Bus 43
+f1	pci-0000:43:00.0-sas-0x50062b0000000006:1:0-0xd66d6978c3f9d492:0
+f2	pci-0000:43:00.0-sas-0x50062b0000000007:1:1-0xd6806a5cd6fab892:1
+f3	pci-0000:43:00.0-sas-0x50062b0000000008:1:2-0xd6806563d6f5bf92:2
+f4	pci-0000:43:00.0-sas-0x50062b0000000009:1:3-0xd6805664d6e6c092:3
+f5	pci-0000:43:00.0-sas-0x50062b000000000a:1:4-0xd58c707ee200dc92:4
+f6	pci-0000:43:00.0-sas-0x50062b000000000b:1:5-0xd5885781dee7de92:5
+f7	pci-0000:43:00.0-sas-0x50062b000000000c:1:6-0xd3827481d804e192:6
+f8	pci-0000:43:00.0-sas-0x50062b000000000d:1:7-0xd6806863d6f8bf92:7
diff --git a/scripts/Makefile.am b/scripts/Makefile.am
index 17360c4693..a1dfc3871e 100644
--- a/scripts/Makefile.am
+++ b/scripts/Makefile.am
@@ -3,7 +3,6 @@ nobase_pkglibexec_SCRIPTS  = common.sh
 nobase_pkglibexec_SCRIPTS += zconfig.sh
 nobase_pkglibexec_SCRIPTS += zfs.sh
 nobase_pkglibexec_SCRIPTS += zpool-create.sh
-nobase_pkglibexec_SCRIPTS += udev-rules/*
 nobase_pkglibexec_SCRIPTS += zpool-config/*
 EXTRA_DIST = zfs-update.sh $(nobase_pkglibexec_SCRIPTS)
 
diff --git a/scripts/common.sh b/scripts/common.sh
index 9b86507ad4..c8b1ba3176 100755
--- a/scripts/common.sh
+++ b/scripts/common.sh
@@ -25,13 +25,14 @@ RAID10S=()
 RAIDZS=()
 RAIDZ2S=()
 
-UDEVDIR=${UDEVDIR:-/usr/libexec/zfs/udev-rules}
+ETCDIR=${ETCDIR:-/etc}
 ZPOOLDIR=${ZPOOLDIR:-/usr/libexec/zfs/zpool-config}
 
 ZDB=${ZDB:-/usr/sbin/zdb}
 ZFS=${ZFS:-/usr/sbin/zfs}
 ZINJECT=${ZINJECT:-/usr/sbin/zinject}
 ZPOOL=${ZPOOL:-/usr/sbin/zpool}
+ZPOOL_ID=${ZPOOL_ID:-/usr/bin/zpool_id}
 ZTEST=${ZTEST:-/usr/sbin/ztest}
 
 COMMON_SH=${COMMON_SH:-/usr/libexec/zfs/common.sh}
@@ -206,11 +207,32 @@ unused_loop_device() {
 #
 udev_setup() {
 	local SRC_PATH=$1
+	local SRC_RULES=${ETCDIR}/udev/rules.d/99-zpool.rules
+	local DST_RULES=/etc/udev/rules.d/99-zpool.rules
+	local DST_ZPOOL_ID=/usr/bin/zpool_id
 	local DST_FILE=`basename ${SRC_PATH} | cut -f1-2 -d'.'`
-	local DST_PATH=/etc/udev/rules.d/${DST_FILE}
+	local DST_PATH=/etc/zfs/${DST_FILE}
+
+	# XXX: Copy files from source tree to installed system.
+	# This should be avoided if at all possible, however at
+	# the moment I see no clean way to add a udev rules file
+	# which is not in the default udevd search paths.  On
+	# top of the the rules file we add will need to find
+	# the zpool_id support utility and the zdef.conf file.
 
 	cp -f ${SRC_PATH} ${DST_PATH}
 
+	if [ ! -f ${DST_ZPOOL_ID} ]; then
+		cp ${ZPOOL_ID} ${DST_ZPOOL_ID}
+		chmod 755 ${DST_ZPOOL_ID}
+	fi
+
+	if [ ! -f ${DST_RULES} ]; then
+		cp ${SRC_RULES} ${DST_RULES}
+		chmod 644 ${DST_RULES}
+	fi
+
+
 	if [ -f ${UDEVADM} ]; then
 		${UDEVADM} trigger
 		${UDEVADM} settle
diff --git a/scripts/udev-rules/99-zpool.rules.dragon b/scripts/udev-rules/99-zpool.rules.dragon
deleted file mode 100644
index 7c589f595f..0000000000
--- a/scripts/udev-rules/99-zpool.rules.dragon
+++ /dev/null
@@ -1,331 +0,0 @@
-#
-# /etc/udev/rules.d/99-zpool.rules
-#
-
-ENV{DEVTYPE}=="disk", IMPORT{program}="path_id %p"
-
-# Full devices (*:pci*port:*:id*)
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:03:00.0*0:*:3*",  SYMLINK+="disk/zpool/a1"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:03:00.0*0:*:4*",  SYMLINK+="disk/zpool/a2"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:03:00.0*0:*:5*",  SYMLINK+="disk/zpool/a3"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:03:00.0*0:*:6*",  SYMLINK+="disk/zpool/a4"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:03:00.0*0:*:7*",  SYMLINK+="disk/zpool/a5"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:03:00.0*0:*:8*",  SYMLINK+="disk/zpool/a6"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:03:00.0*0:*:9*",  SYMLINK+="disk/zpool/a7"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:03:00.0*0:*:10*", SYMLINK+="disk/zpool/a8"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:03:00.0*0:*:11*", SYMLINK+="disk/zpool/a9"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:03:00.0*0:*:12*", SYMLINK+="disk/zpool/a10"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:03:00.0*0:*:13*", SYMLINK+="disk/zpool/a11"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:03:00.0*0:*:14*", SYMLINK+="disk/zpool/a12"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:03:00.0*0:*:15*", SYMLINK+="disk/zpool/a13"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:03:00.0*0:*:16*", SYMLINK+="disk/zpool/a14"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:03:00.0*0:*:17*", SYMLINK+="disk/zpool/a15"
-
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:03:00.0*4:*:3*",  SYMLINK+="disk/zpool/b1"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:03:00.0*4:*:4*",  SYMLINK+="disk/zpool/b2"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:03:00.0*4:*:5*",  SYMLINK+="disk/zpool/b3"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:03:00.0*4:*:6*",  SYMLINK+="disk/zpool/b4"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:03:00.0*4:*:7*",  SYMLINK+="disk/zpool/b5"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:03:00.0*4:*:8*",  SYMLINK+="disk/zpool/b6"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:03:00.0*4:*:9*",  SYMLINK+="disk/zpool/b7"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:03:00.0*4:*:10*", SYMLINK+="disk/zpool/b8"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:03:00.0*4:*:11*", SYMLINK+="disk/zpool/b9"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:03:00.0*4:*:12*", SYMLINK+="disk/zpool/b10"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:03:00.0*4:*:13*", SYMLINK+="disk/zpool/b11"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:03:00.0*4:*:14*", SYMLINK+="disk/zpool/b12"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:03:00.0*4:*:15*", SYMLINK+="disk/zpool/b13"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:03:00.0*4:*:16*", SYMLINK+="disk/zpool/b14"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:03:00.0*4:*:17*", SYMLINK+="disk/zpool/b15"
-
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:04:00.0*0:*:3*",  SYMLINK+="disk/zpool/c1"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:04:00.0*0:*:4*",  SYMLINK+="disk/zpool/c2"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:04:00.0*0:*:5*",  SYMLINK+="disk/zpool/c3"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:04:00.0*0:*:6*",  SYMLINK+="disk/zpool/c4"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:04:00.0*0:*:7*",  SYMLINK+="disk/zpool/c5"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:04:00.0*0:*:8*",  SYMLINK+="disk/zpool/c6"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:04:00.0*0:*:9*",  SYMLINK+="disk/zpool/c7"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:04:00.0*0:*:10*", SYMLINK+="disk/zpool/c8"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:04:00.0*0:*:11*", SYMLINK+="disk/zpool/c9"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:04:00.0*0:*:12*", SYMLINK+="disk/zpool/c10"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:04:00.0*0:*:13*", SYMLINK+="disk/zpool/c11"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:04:00.0*0:*:14*", SYMLINK+="disk/zpool/c12"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:04:00.0*0:*:15*", SYMLINK+="disk/zpool/c13"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:04:00.0*0:*:16*", SYMLINK+="disk/zpool/c14"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:04:00.0*0:*:17*", SYMLINK+="disk/zpool/c15"
-
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:04:00.0*4:*:3*",  SYMLINK+="disk/zpool/d1"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:04:00.0*4:*:4*",  SYMLINK+="disk/zpool/d2"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:04:00.0*4:*:5*",  SYMLINK+="disk/zpool/d3"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:04:00.0*4:*:6*",  SYMLINK+="disk/zpool/d4"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:04:00.0*4:*:7*",  SYMLINK+="disk/zpool/d5"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:04:00.0*4:*:8*",  SYMLINK+="disk/zpool/d6"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:04:00.0*4:*:9*",  SYMLINK+="disk/zpool/d7"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:04:00.0*4:*:10*", SYMLINK+="disk/zpool/d8"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:04:00.0*4:*:11*", SYMLINK+="disk/zpool/d9"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:04:00.0*4:*:12*", SYMLINK+="disk/zpool/d10"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:04:00.0*4:*:13*", SYMLINK+="disk/zpool/d11"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:04:00.0*4:*:14*", SYMLINK+="disk/zpool/d12"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:04:00.0*4:*:15*", SYMLINK+="disk/zpool/d13"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:04:00.0*4:*:16*", SYMLINK+="disk/zpool/d14"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:04:00.0*4:*:17*", SYMLINK+="disk/zpool/d15"
-
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:84:00.0*0:*:3*",  SYMLINK+="disk/zpool/e1"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:84:00.0*0:*:4*",  SYMLINK+="disk/zpool/e2"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:84:00.0*0:*:5*",  SYMLINK+="disk/zpool/e3"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:84:00.0*0:*:6*",  SYMLINK+="disk/zpool/e4"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:84:00.0*0:*:7*",  SYMLINK+="disk/zpool/e5"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:84:00.0*0:*:8*",  SYMLINK+="disk/zpool/e6"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:84:00.0*0:*:9*",  SYMLINK+="disk/zpool/e7"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:84:00.0*0:*:10*", SYMLINK+="disk/zpool/e8"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:84:00.0*0:*:11*", SYMLINK+="disk/zpool/e9"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:84:00.0*0:*:12*", SYMLINK+="disk/zpool/e10"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:84:00.0*0:*:13*", SYMLINK+="disk/zpool/e11"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:84:00.0*0:*:14*", SYMLINK+="disk/zpool/e12"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:84:00.0*0:*:15*", SYMLINK+="disk/zpool/e13"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:84:00.0*0:*:16*", SYMLINK+="disk/zpool/e14"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:84:00.0*0:*:17*", SYMLINK+="disk/zpool/e15"
-
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:84:00.0*4:*:3*",  SYMLINK+="disk/zpool/f1"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:84:00.0*4:*:4*",  SYMLINK+="disk/zpool/f2"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:84:00.0*4:*:5*",  SYMLINK+="disk/zpool/f3"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:84:00.0*4:*:6*",  SYMLINK+="disk/zpool/f4"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:84:00.0*4:*:7*",  SYMLINK+="disk/zpool/f5"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:84:00.0*4:*:8*",  SYMLINK+="disk/zpool/f6"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:84:00.0*4:*:9*",  SYMLINK+="disk/zpool/f7"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:84:00.0*4:*:10*", SYMLINK+="disk/zpool/f8"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:84:00.0*4:*:11*", SYMLINK+="disk/zpool/f9"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:84:00.0*4:*:12*", SYMLINK+="disk/zpool/f10"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:84:00.0*4:*:13*", SYMLINK+="disk/zpool/f11"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:84:00.0*4:*:14*", SYMLINK+="disk/zpool/f12"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:84:00.0*4:*:15*", SYMLINK+="disk/zpool/f13"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:84:00.0*4:*:16*", SYMLINK+="disk/zpool/f14"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:84:00.0*4:*:17*", SYMLINK+="disk/zpool/f15"
-
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:85:00.0*0:*:3*",  SYMLINK+="disk/zpool/g1"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:85:00.0*0:*:4*",  SYMLINK+="disk/zpool/g2"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:85:00.0*0:*:5*",  SYMLINK+="disk/zpool/g3"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:85:00.0*0:*:6*",  SYMLINK+="disk/zpool/g4"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:85:00.0*0:*:7*",  SYMLINK+="disk/zpool/g5"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:85:00.0*0:*:8*",  SYMLINK+="disk/zpool/g6"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:85:00.0*0:*:9*",  SYMLINK+="disk/zpool/g7"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:85:00.0*0:*:10*", SYMLINK+="disk/zpool/g8"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:85:00.0*0:*:11*", SYMLINK+="disk/zpool/g9"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:85:00.0*0:*:12*", SYMLINK+="disk/zpool/g10"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:85:00.0*0:*:13*", SYMLINK+="disk/zpool/g11"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:85:00.0*0:*:14*", SYMLINK+="disk/zpool/g12"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:85:00.0*0:*:15*", SYMLINK+="disk/zpool/g13"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:85:00.0*0:*:16*", SYMLINK+="disk/zpool/g14"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:85:00.0*0:*:17*", SYMLINK+="disk/zpool/g15"
-
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:85:00.0*4:*:3*",  SYMLINK+="disk/zpool/h1"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:85:00.0*4:*:4*",  SYMLINK+="disk/zpool/h2"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:85:00.0*4:*:5*",  SYMLINK+="disk/zpool/h3"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:85:00.0*4:*:6*",  SYMLINK+="disk/zpool/h4"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:85:00.0*4:*:7*",  SYMLINK+="disk/zpool/h5"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:85:00.0*4:*:8*",  SYMLINK+="disk/zpool/h6"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:85:00.0*4:*:9*",  SYMLINK+="disk/zpool/h7"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:85:00.0*4:*:10*", SYMLINK+="disk/zpool/h8"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:85:00.0*4:*:11*", SYMLINK+="disk/zpool/h9"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:85:00.0*4:*:12*", SYMLINK+="disk/zpool/h10"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:85:00.0*4:*:13*", SYMLINK+="disk/zpool/h11"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:85:00.0*4:*:14*", SYMLINK+="disk/zpool/h12"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:85:00.0*4:*:15*", SYMLINK+="disk/zpool/h13"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:85:00.0*4:*:16*", SYMLINK+="disk/zpool/h14"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:85:00.0*4:*:17*", SYMLINK+="disk/zpool/h15"
-
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:83:00.0*0:*:0*",  SYMLINK+="disk/zpool/i1"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:83:00.0*0:*:1*",  SYMLINK+="disk/zpool/i2"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:83:00.0*0:*:2*",  SYMLINK+="disk/zpool/i3"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:83:00.0*0:*:3*",  SYMLINK+="disk/zpool/i4"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:83:00.0*0:*:4*",  SYMLINK+="disk/zpool/i5"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:83:00.0*0:*:5*",  SYMLINK+="disk/zpool/i6"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:83:00.0*0:*:6*",  SYMLINK+="disk/zpool/i7"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:83:00.0*0:*:7*",  SYMLINK+="disk/zpool/i8"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:83:00.0*0:*:8*",  SYMLINK+="disk/zpool/i9"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:83:00.0*0:*:9*",  SYMLINK+="disk/zpool/i10"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:83:00.0*0:*:10*", SYMLINK+="disk/zpool/i11"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:83:00.0*0:*:11*", SYMLINK+="disk/zpool/i12"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:83:00.0*0:*:12*", SYMLINK+="disk/zpool/i13"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:83:00.0*0:*:13*", SYMLINK+="disk/zpool/i14"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:83:00.0*0:*:14*", SYMLINK+="disk/zpool/i15"
-#ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:83:00.0*0:*:15*", SYMLINK+="disk/zpool/i16"
-
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:83:00.0*4:*:0*",  SYMLINK+="disk/zpool/j1"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:83:00.0*4:*:1*",  SYMLINK+="disk/zpool/j2"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:83:00.0*4:*:2*",  SYMLINK+="disk/zpool/j3"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:83:00.0*4:*:3*",  SYMLINK+="disk/zpool/j4"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:83:00.0*4:*:4*",  SYMLINK+="disk/zpool/j5"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:83:00.0*4:*:5*",  SYMLINK+="disk/zpool/j6"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:83:00.0*4:*:6*",  SYMLINK+="disk/zpool/j7"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:83:00.0*4:*:7*",  SYMLINK+="disk/zpool/j8"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:83:00.0*4:*:8*",  SYMLINK+="disk/zpool/j9"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:83:00.0*4:*:9*",  SYMLINK+="disk/zpool/j10"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:83:00.0*4:*:10*", SYMLINK+="disk/zpool/j11"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:83:00.0*4:*:11*", SYMLINK+="disk/zpool/j12"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:83:00.0*4:*:12*", SYMLINK+="disk/zpool/j13"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:83:00.0*4:*:13*", SYMLINK+="disk/zpool/j14"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:83:00.0*4:*:14*", SYMLINK+="disk/zpool/j15"
-#ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:83:00.0*4:*:15*", SYMLINK+="disk/zpool/j16"
-
-# Partitions (*:pci*port:*:id*)
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:03:00.0*0:*:3*",  SYMLINK+="disk/zpool/a1-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:03:00.0*0:*:4*",  SYMLINK+="disk/zpool/a2-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:03:00.0*0:*:5*",  SYMLINK+="disk/zpool/a3-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:03:00.0*0:*:6*",  SYMLINK+="disk/zpool/a4-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:03:00.0*0:*:7*",  SYMLINK+="disk/zpool/a5-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:03:00.0*0:*:8*",  SYMLINK+="disk/zpool/a6-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:03:00.0*0:*:9*",  SYMLINK+="disk/zpool/a7-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:03:00.0*0:*:10*", SYMLINK+="disk/zpool/a8-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:03:00.0*0:*:11*", SYMLINK+="disk/zpool/a9-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:03:00.0*0:*:12*", SYMLINK+="disk/zpool/a10-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:03:00.0*0:*:13*", SYMLINK+="disk/zpool/a11-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:03:00.0*0:*:14*", SYMLINK+="disk/zpool/a12-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:03:00.0*0:*:15*", SYMLINK+="disk/zpool/a13-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:03:00.0*0:*:16*", SYMLINK+="disk/zpool/a14-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:03:00.0*0:*:17*", SYMLINK+="disk/zpool/a15-part%n"
-
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:03:00.0*4:*:3*",  SYMLINK+="disk/zpool/b1-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:03:00.0*4:*:4*",  SYMLINK+="disk/zpool/b2-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:03:00.0*4:*:5*",  SYMLINK+="disk/zpool/b3-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:03:00.0*4:*:6*",  SYMLINK+="disk/zpool/b4-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:03:00.0*4:*:7*",  SYMLINK+="disk/zpool/b5-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:03:00.0*4:*:8*",  SYMLINK+="disk/zpool/b6-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:03:00.0*4:*:9*",  SYMLINK+="disk/zpool/b7-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:03:00.0*4:*:10*", SYMLINK+="disk/zpool/b8-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:03:00.0*4:*:11*", SYMLINK+="disk/zpool/b9-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:03:00.0*4:*:12*", SYMLINK+="disk/zpool/b10-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:03:00.0*4:*:13*", SYMLINK+="disk/zpool/b11-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:03:00.0*4:*:14*", SYMLINK+="disk/zpool/b12-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:03:00.0*4:*:15*", SYMLINK+="disk/zpool/b13-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:03:00.0*4:*:16*", SYMLINK+="disk/zpool/b14-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:03:00.0*4:*:17*", SYMLINK+="disk/zpool/b15-part%n"
-
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:04:00.0*0:*:3*",  SYMLINK+="disk/zpool/c1-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:04:00.0*0:*:4*",  SYMLINK+="disk/zpool/c2-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:04:00.0*0:*:5*",  SYMLINK+="disk/zpool/c3-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:04:00.0*0:*:6*",  SYMLINK+="disk/zpool/c4-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:04:00.0*0:*:7*",  SYMLINK+="disk/zpool/c5-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:04:00.0*0:*:8*",  SYMLINK+="disk/zpool/c6-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:04:00.0*0:*:9*",  SYMLINK+="disk/zpool/c7-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:04:00.0*0:*:10*", SYMLINK+="disk/zpool/c8-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:04:00.0*0:*:11*", SYMLINK+="disk/zpool/c9-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:04:00.0*0:*:12*", SYMLINK+="disk/zpool/c10-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:04:00.0*0:*:13*", SYMLINK+="disk/zpool/c11-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:04:00.0*0:*:14*", SYMLINK+="disk/zpool/c12-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:04:00.0*0:*:15*", SYMLINK+="disk/zpool/c13-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:04:00.0*0:*:16*", SYMLINK+="disk/zpool/c14-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:04:00.0*0:*:17*", SYMLINK+="disk/zpool/c15-part%n"
-
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:04:00.0*4:*:3*",  SYMLINK+="disk/zpool/d1-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:04:00.0*4:*:4*",  SYMLINK+="disk/zpool/d2-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:04:00.0*4:*:5*",  SYMLINK+="disk/zpool/d3-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:04:00.0*4:*:6*",  SYMLINK+="disk/zpool/d4-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:04:00.0*4:*:7*",  SYMLINK+="disk/zpool/d5-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:04:00.0*4:*:8*",  SYMLINK+="disk/zpool/d6-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:04:00.0*4:*:9*",  SYMLINK+="disk/zpool/d7-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:04:00.0*4:*:10*", SYMLINK+="disk/zpool/d8-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:04:00.0*4:*:11*", SYMLINK+="disk/zpool/d9-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:04:00.0*4:*:12*", SYMLINK+="disk/zpool/d10-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:04:00.0*4:*:13*", SYMLINK+="disk/zpool/d11-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:04:00.0*4:*:14*", SYMLINK+="disk/zpool/d12-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:04:00.0*4:*:15*", SYMLINK+="disk/zpool/d13-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:04:00.0*4:*:16*", SYMLINK+="disk/zpool/d14-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:04:00.0*4:*:17*", SYMLINK+="disk/zpool/d15-part%n"
-
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:84:00.0*0:*:3*",  SYMLINK+="disk/zpool/e1-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:84:00.0*0:*:4*",  SYMLINK+="disk/zpool/e2-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:84:00.0*0:*:5*",  SYMLINK+="disk/zpool/e3-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:84:00.0*0:*:6*",  SYMLINK+="disk/zpool/e4-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:84:00.0*0:*:7*",  SYMLINK+="disk/zpool/e5-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:84:00.0*0:*:8*",  SYMLINK+="disk/zpool/e6-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:84:00.0*0:*:9*",  SYMLINK+="disk/zpool/e7-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:84:00.0*0:*:10*", SYMLINK+="disk/zpool/e8-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:84:00.0*0:*:11*", SYMLINK+="disk/zpool/e9-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:84:00.0*0:*:12*", SYMLINK+="disk/zpool/e10-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:84:00.0*0:*:13*", SYMLINK+="disk/zpool/e11-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:84:00.0*0:*:14*", SYMLINK+="disk/zpool/e12-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:84:00.0*0:*:15*", SYMLINK+="disk/zpool/e13-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:84:00.0*0:*:16*", SYMLINK+="disk/zpool/e14-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:84:00.0*0:*:17*", SYMLINK+="disk/zpool/e15-part%n"
-
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:84:00.0*4:*:3*",  SYMLINK+="disk/zpool/f1-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:84:00.0*4:*:4*",  SYMLINK+="disk/zpool/f2-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:84:00.0*4:*:5*",  SYMLINK+="disk/zpool/f3-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:84:00.0*4:*:6*",  SYMLINK+="disk/zpool/f4-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:84:00.0*4:*:7*",  SYMLINK+="disk/zpool/f5-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:84:00.0*4:*:8*",  SYMLINK+="disk/zpool/f6-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:84:00.0*4:*:9*",  SYMLINK+="disk/zpool/f7-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:84:00.0*4:*:10*", SYMLINK+="disk/zpool/f8-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:84:00.0*4:*:11*", SYMLINK+="disk/zpool/f9-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:84:00.0*4:*:12*", SYMLINK+="disk/zpool/f10-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:84:00.0*4:*:13*", SYMLINK+="disk/zpool/f11-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:84:00.0*4:*:14*", SYMLINK+="disk/zpool/f12-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:84:00.0*4:*:15*", SYMLINK+="disk/zpool/f13-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:84:00.0*4:*:16*", SYMLINK+="disk/zpool/f14-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:84:00.0*4:*:17*", SYMLINK+="disk/zpool/f15-part%n"
-
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:85:00.0*0:*:3*",  SYMLINK+="disk/zpool/g1-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:85:00.0*0:*:4*",  SYMLINK+="disk/zpool/g2-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:85:00.0*0:*:5*",  SYMLINK+="disk/zpool/g3-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:85:00.0*0:*:6*",  SYMLINK+="disk/zpool/g4-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:85:00.0*0:*:7*",  SYMLINK+="disk/zpool/g5-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:85:00.0*0:*:8*",  SYMLINK+="disk/zpool/g6-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:85:00.0*0:*:9*",  SYMLINK+="disk/zpool/g7-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:85:00.0*0:*:10*", SYMLINK+="disk/zpool/g8-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:85:00.0*0:*:11*", SYMLINK+="disk/zpool/g9-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:85:00.0*0:*:12*", SYMLINK+="disk/zpool/g10-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:85:00.0*0:*:13*", SYMLINK+="disk/zpool/g11-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:85:00.0*0:*:14*", SYMLINK+="disk/zpool/g12-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:85:00.0*0:*:15*", SYMLINK+="disk/zpool/g13-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:85:00.0*0:*:16*", SYMLINK+="disk/zpool/g14-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:85:00.0*0:*:17*", SYMLINK+="disk/zpool/g15-part%n"
-
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:85:00.0*4:*:3*",  SYMLINK+="disk/zpool/h1-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:85:00.0*4:*:4*",  SYMLINK+="disk/zpool/h2-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:85:00.0*4:*:5*",  SYMLINK+="disk/zpool/h3-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:85:00.0*4:*:6*",  SYMLINK+="disk/zpool/h4-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:85:00.0*4:*:7*",  SYMLINK+="disk/zpool/h5-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:85:00.0*4:*:8*",  SYMLINK+="disk/zpool/h6-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:85:00.0*4:*:9*",  SYMLINK+="disk/zpool/h7-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:85:00.0*4:*:10*", SYMLINK+="disk/zpool/h8-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:85:00.0*4:*:11*", SYMLINK+="disk/zpool/h9-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:85:00.0*4:*:12*", SYMLINK+="disk/zpool/h10-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:85:00.0*4:*:13*", SYMLINK+="disk/zpool/h11-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:85:00.0*4:*:14*", SYMLINK+="disk/zpool/h12-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:85:00.0*4:*:15*", SYMLINK+="disk/zpool/h13-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:85:00.0*4:*:16*", SYMLINK+="disk/zpool/h14-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:85:00.0*4:*:17*", SYMLINK+="disk/zpool/h15-part%n"
-
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:83:00.0*0:*:0*",  SYMLINK+="disk/zpool/i1-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:83:00.0*0:*:1*",  SYMLINK+="disk/zpool/i2-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:83:00.0*0:*:2*",  SYMLINK+="disk/zpool/i3-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:83:00.0*0:*:3*",  SYMLINK+="disk/zpool/i4-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:83:00.0*0:*:4*",  SYMLINK+="disk/zpool/i5-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:83:00.0*0:*:5*",  SYMLINK+="disk/zpool/i6-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:83:00.0*0:*:6*",  SYMLINK+="disk/zpool/i7-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:83:00.0*0:*:7*",  SYMLINK+="disk/zpool/i8-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:83:00.0*0:*:8*",  SYMLINK+="disk/zpool/i9-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:83:00.0*0:*:9*",  SYMLINK+="disk/zpool/i10-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:83:00.0*0:*:10*", SYMLINK+="disk/zpool/i11-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:83:00.0*0:*:11*", SYMLINK+="disk/zpool/i12-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:83:00.0*0:*:12*", SYMLINK+="disk/zpool/i13-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:83:00.0*0:*:13*", SYMLINK+="disk/zpool/i14-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:83:00.0*0:*:14*", SYMLINK+="disk/zpool/i15-part%n"
-#ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:83:00.0*0:*:15*", SYMLINK+="disk/zpool/i16-part%n"
-
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:83:00.0*4:*:0*",  SYMLINK+="disk/zpool/j1-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:83:00.0*4:*:1*",  SYMLINK+="disk/zpool/j2-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:83:00.0*4:*:2*",  SYMLINK+="disk/zpool/j3-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:83:00.0*4:*:3*",  SYMLINK+="disk/zpool/j4-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:83:00.0*4:*:4*",  SYMLINK+="disk/zpool/j5-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:83:00.0*4:*:5*",  SYMLINK+="disk/zpool/j6-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:83:00.0*4:*:6*",  SYMLINK+="disk/zpool/j7-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:83:00.0*4:*:7*",  SYMLINK+="disk/zpool/j8-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:83:00.0*4:*:8*",  SYMLINK+="disk/zpool/j9-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:83:00.0*4:*:9*",  SYMLINK+="disk/zpool/j10-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:83:00.0*4:*:10*", SYMLINK+="disk/zpool/j11-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:83:00.0*4:*:11*", SYMLINK+="disk/zpool/j12-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:83:00.0*4:*:12*", SYMLINK+="disk/zpool/j13-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:83:00.0*4:*:13*", SYMLINK+="disk/zpool/j14-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:83:00.0*4:*:14*", SYMLINK+="disk/zpool/j15-part%n"
-#ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:83:00.0*4:*:15*", SYMLINK+="disk/zpool/j16-part%n"
diff --git a/scripts/udev-rules/99-zpool.rules.promise b/scripts/udev-rules/99-zpool.rules.promise
deleted file mode 100644
index 8a32a539b4..0000000000
--- a/scripts/udev-rules/99-zpool.rules.promise
+++ /dev/null
@@ -1,41 +0,0 @@
-#
-# /etc/udev/rules.d/99-zpool.rules
-#
-
-ENV{DEVTYPE}=="disk", IMPORT{program}="path_id %p"
-
-# Full devices (*:pci*port:*:id-lun)
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:07:00.0*0:*:8-lun0",  SYMLINK+="disk/zpool/a1"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:07:00.0*0:*:9-lun0",  SYMLINK+="disk/zpool/a2"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:07:00.0*0:*:10-lun0", SYMLINK+="disk/zpool/a3"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:07:00.0*0:*:11-lun0", SYMLINK+="disk/zpool/a4"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:07:00.0*0:*:12-lun0", SYMLINK+="disk/zpool/a5"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:07:00.0*0:*:13-lun0", SYMLINK+="disk/zpool/a6"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:07:00.0*0:*:14-lun0", SYMLINK+="disk/zpool/a7"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:07:00.0*0:*:15-lun0", SYMLINK+="disk/zpool/a8"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:07:00.0*0:*:16-lun0", SYMLINK+="disk/zpool/b1"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:07:00.0*0:*:17-lun0", SYMLINK+="disk/zpool/b2"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:07:00.0*0:*:18-lun0", SYMLINK+="disk/zpool/b3"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:07:00.0*0:*:19-lun0", SYMLINK+="disk/zpool/b4"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:07:00.0*0:*:20-lun0", SYMLINK+="disk/zpool/b5"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:07:00.0*0:*:21-lun0", SYMLINK+="disk/zpool/b6"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:07:00.0*0:*:22-lun0", SYMLINK+="disk/zpool/b7"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:07:00.0*0:*:23-lun0", SYMLINK+="disk/zpool/b8"
-
-# Partitions (*:pci*port:*:id-lun)
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:07:00.0*0:*:8-lun0",  SYMLINK+="disk/zpool/a1-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:07:00.0*0:*:9-lun0",  SYMLINK+="disk/zpool/a2-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:07:00.0*0:*:10-lun0", SYMLINK+="disk/zpool/a3-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:07:00.0*0:*:11-lun0", SYMLINK+="disk/zpool/a4-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:07:00.0*0:*:12-lun0", SYMLINK+="disk/zpool/a5-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:07:00.0*0:*:13-lun0", SYMLINK+="disk/zpool/a6-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:07:00.0*0:*:14-lun0", SYMLINK+="disk/zpool/a7-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:07:00.0*0:*:15-lun0", SYMLINK+="disk/zpool/a8-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:07:00.0*0:*:16-lun0", SYMLINK+="disk/zpool/b1-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:07:00.0*0:*:17-lun0", SYMLINK+="disk/zpool/b2-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:07:00.0*0:*:18-lun0", SYMLINK+="disk/zpool/b3-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:07:00.0*0:*:19-lun0", SYMLINK+="disk/zpool/b4-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:07:00.0*0:*:20-lun0", SYMLINK+="disk/zpool/b5-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:07:00.0*0:*:21-lun0", SYMLINK+="disk/zpool/b6-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:07:00.0*0:*:22-lun0", SYMLINK+="disk/zpool/b7-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:07:00.0*0:*:23-lun0", SYMLINK+="disk/zpool/b8-part%n"
diff --git a/scripts/udev-rules/99-zpool.rules.x4550 b/scripts/udev-rules/99-zpool.rules.x4550
deleted file mode 100644
index b2b99513d3..0000000000
--- a/scripts/udev-rules/99-zpool.rules.x4550
+++ /dev/null
@@ -1,115 +0,0 @@
-#
-# /etc/udev/rules.d/99-zpool.rules
-#
-
-ENV{DEVTYPE}=="disk", IMPORT{program}="path_id %p"
-
-# Full devices (*:pci*port:*:id*)
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:02:00.0*0:*:0*", SYMLINK+="disk/zpool/a1"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:02:00.0*0:*:1*", SYMLINK+="disk/zpool/a2"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:02:00.0*0:*:2*", SYMLINK+="disk/zpool/a3"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:02:00.0*0:*:3*", SYMLINK+="disk/zpool/a4"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:02:00.0*0:*:4*", SYMLINK+="disk/zpool/a5"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:02:00.0*0:*:5*", SYMLINK+="disk/zpool/a6"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:02:00.0*0:*:6*", SYMLINK+="disk/zpool/a7"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:02:00.0*0:*:7*", SYMLINK+="disk/zpool/a8"
-
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:03:00.0*0:*:0*", SYMLINK+="disk/zpool/b1"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:03:00.0*0:*:1*", SYMLINK+="disk/zpool/b2"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:03:00.0*0:*:2*", SYMLINK+="disk/zpool/b3"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:03:00.0*0:*:3*", SYMLINK+="disk/zpool/b4"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:03:00.0*0:*:4*", SYMLINK+="disk/zpool/b5"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:03:00.0*0:*:5*", SYMLINK+="disk/zpool/b6"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:03:00.0*0:*:6*", SYMLINK+="disk/zpool/b7"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:03:00.0*0:*:7*", SYMLINK+="disk/zpool/b8"
-
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:04:00.0*0:*:0*", SYMLINK+="disk/zpool/c1"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:04:00.0*0:*:1*", SYMLINK+="disk/zpool/c2"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:04:00.0*0:*:2*", SYMLINK+="disk/zpool/c3"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:04:00.0*0:*:3*", SYMLINK+="disk/zpool/c4"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:04:00.0*0:*:4*", SYMLINK+="disk/zpool/c5"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:04:00.0*0:*:5*", SYMLINK+="disk/zpool/c6"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:04:00.0*0:*:6*", SYMLINK+="disk/zpool/c7"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:04:00.0*0:*:7*", SYMLINK+="disk/zpool/c8"
-
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:41:00.0*0:*:0*", SYMLINK+="disk/zpool/d1"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:41:00.0*0:*:1*", SYMLINK+="disk/zpool/d2"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:41:00.0*0:*:2*", SYMLINK+="disk/zpool/d3"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:41:00.0*0:*:3*", SYMLINK+="disk/zpool/d4"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:41:00.0*0:*:4*", SYMLINK+="disk/zpool/d5"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:41:00.0*0:*:5*", SYMLINK+="disk/zpool/d6"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:41:00.0*0:*:6*", SYMLINK+="disk/zpool/d7"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:41:00.0*0:*:7*", SYMLINK+="disk/zpool/d8"
-
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:42:00.0*0:*:0*", SYMLINK+="disk/zpool/e1"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:42:00.0*0:*:1*", SYMLINK+="disk/zpool/e2"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:42:00.0*0:*:2*", SYMLINK+="disk/zpool/e3"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:42:00.0*0:*:3*", SYMLINK+="disk/zpool/e4"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:42:00.0*0:*:4*", SYMLINK+="disk/zpool/e5"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:42:00.0*0:*:5*", SYMLINK+="disk/zpool/e6"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:42:00.0*0:*:6*", SYMLINK+="disk/zpool/e7"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:42:00.0*0:*:7*", SYMLINK+="disk/zpool/e8"
-
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:43:00.0*0:*:0*", SYMLINK+="disk/zpool/f1"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:43:00.0*0:*:1*", SYMLINK+="disk/zpool/f2"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:43:00.0*0:*:2*", SYMLINK+="disk/zpool/f3"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:43:00.0*0:*:3*", SYMLINK+="disk/zpool/f4"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:43:00.0*0:*:4*", SYMLINK+="disk/zpool/f5"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:43:00.0*0:*:5*", SYMLINK+="disk/zpool/f6"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:43:00.0*0:*:6*", SYMLINK+="disk/zpool/f7"
-ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="*:43:00.0*0:*:7*", SYMLINK+="disk/zpool/f8"
-
-# Partitions (*:pci*port:*:id*)
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:02:00.0*0:*:0*", SYMLINK+="disk/zpool/a1-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:02:00.0*0:*:1*", SYMLINK+="disk/zpool/a2-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:02:00.0*0:*:2*", SYMLINK+="disk/zpool/a3-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:02:00.0*0:*:3*", SYMLINK+="disk/zpool/a4-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:02:00.0*0:*:4*", SYMLINK+="disk/zpool/a5-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:02:00.0*0:*:5*", SYMLINK+="disk/zpool/a6-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:02:00.0*0:*:6*", SYMLINK+="disk/zpool/a7-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:02:00.0*0:*:7*", SYMLINK+="disk/zpool/a8-part%n"
-
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:03:00.0*0:*:0*", SYMLINK+="disk/zpool/b1-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:03:00.0*0:*:1*", SYMLINK+="disk/zpool/b2-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:03:00.0*0:*:2*", SYMLINK+="disk/zpool/b3-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:03:00.0*0:*:3*", SYMLINK+="disk/zpool/b4-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:03:00.0*0:*:4*", SYMLINK+="disk/zpool/b5-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:03:00.0*0:*:5*", SYMLINK+="disk/zpool/b6-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:03:00.0*0:*:6*", SYMLINK+="disk/zpool/b7-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:03:00.0*0:*:7*", SYMLINK+="disk/zpool/b8-part%n"
-
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:04:00.0*0:*:0*", SYMLINK+="disk/zpool/c1-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:04:00.0*0:*:1*", SYMLINK+="disk/zpool/c2-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:04:00.0*0:*:2*", SYMLINK+="disk/zpool/c3-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:04:00.0*0:*:3*", SYMLINK+="disk/zpool/c4-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:04:00.0*0:*:4*", SYMLINK+="disk/zpool/c5-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:04:00.0*0:*:5*", SYMLINK+="disk/zpool/c6-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:04:00.0*0:*:6*", SYMLINK+="disk/zpool/c7-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:04:00.0*0:*:7*", SYMLINK+="disk/zpool/c8-part%n"
-
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:41:00.0*0:*:0*", SYMLINK+="disk/zpool/d1-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:41:00.0*0:*:1*", SYMLINK+="disk/zpool/d2-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:41:00.0*0:*:2*", SYMLINK+="disk/zpool/d3-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:41:00.0*0:*:3*", SYMLINK+="disk/zpool/d4-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:41:00.0*0:*:4*", SYMLINK+="disk/zpool/d5-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:41:00.0*0:*:5*", SYMLINK+="disk/zpool/d6-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:41:00.0*0:*:6*", SYMLINK+="disk/zpool/d7-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:41:00.0*0:*:7*", SYMLINK+="disk/zpool/d8-part%n"
-
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:42:00.0*0:*:0*", SYMLINK+="disk/zpool/e1-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:42:00.0*0:*:1*", SYMLINK+="disk/zpool/e2-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:42:00.0*0:*:2*", SYMLINK+="disk/zpool/e3-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:42:00.0*0:*:3*", SYMLINK+="disk/zpool/e4-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:42:00.0*0:*:4*", SYMLINK+="disk/zpool/e5-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:42:00.0*0:*:5*", SYMLINK+="disk/zpool/e6-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:42:00.0*0:*:6*", SYMLINK+="disk/zpool/e7-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:42:00.0*0:*:7*", SYMLINK+="disk/zpool/e8-part%n"
-
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:43:00.0*0:*:0*", SYMLINK+="disk/zpool/f1-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:43:00.0*0:*:1*", SYMLINK+="disk/zpool/f2-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:43:00.0*0:*:2*", SYMLINK+="disk/zpool/f3-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:43:00.0*0:*:3*", SYMLINK+="disk/zpool/f4-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:43:00.0*0:*:4*", SYMLINK+="disk/zpool/f5-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:43:00.0*0:*:5*", SYMLINK+="disk/zpool/f6-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:43:00.0*0:*:6*", SYMLINK+="disk/zpool/f7-part%n"
-ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="*:43:00.0*0:*:7*", SYMLINK+="disk/zpool/f8-part%n"
diff --git a/scripts/zpool-config/dragon-raid0-1x70.sh b/scripts/zpool-config/dragon-raid0-1x70.sh
index 8caffc4c4e..6690cb9f6e 100644
--- a/scripts/zpool-config/dragon-raid0-1x70.sh
+++ b/scripts/zpool-config/dragon-raid0-1x70.sh
@@ -7,7 +7,7 @@ RANKS=7
 CHANNELS=10
 
 zpool_create() {
-	udev_setup ${UDEVDIR}/99-zpool.rules.dragon
+	udev_setup ${ETCDIR}/zfs/zdev.conf.dragon.example
 	udev_raid0_setup ${RANKS} ${CHANNELS}
 
 	msg ${ZPOOL} create ${FORCE_FLAG} ${ZPOOL_NAME} ${RAID0S[*]}
diff --git a/scripts/zpool-config/dragon-raid10-35x2.sh b/scripts/zpool-config/dragon-raid10-35x2.sh
index f197136fe5..7a3d0c3801 100644
--- a/scripts/zpool-config/dragon-raid10-35x2.sh
+++ b/scripts/zpool-config/dragon-raid10-35x2.sh
@@ -7,7 +7,7 @@ RANKS=7
 CHANNELS=10
 
 zpool_create() {
-	udev_setup ${UDEVDIR}/99-zpool.rules.dragon
+	udev_setup ${ETCDIR}/zfs/zdev.conf.dragon.example
 	udev_raid10_setup ${RANKS} ${CHANNELS}
 
 	msg ${ZPOOL} create ${FORCE_FLAG} ${ZPOOL_NAME} ${RAID10S[*]}
diff --git a/scripts/zpool-config/dragon-raidz-7x10.sh b/scripts/zpool-config/dragon-raidz-7x10.sh
index e7d793d3c3..deefedb594 100644
--- a/scripts/zpool-config/dragon-raidz-7x10.sh
+++ b/scripts/zpool-config/dragon-raidz-7x10.sh
@@ -7,7 +7,7 @@ RANKS=7
 CHANNELS=10
 
 zpool_create() {
-	udev_setup ${UDEVDIR}/99-zpool.rules.dragon
+	udev_setup ${ETCDIR}/zfs/zdev.conf.dragon.example
 	udev_raidz_setup ${RANKS} ${CHANNELS}
 
 	msg ${ZPOOL} create ${FORCE_FLAG} ${ZPOOL_NAME} ${RAIDZS[*]}
diff --git a/scripts/zpool-config/dragon-raidz2-7x10.sh b/scripts/zpool-config/dragon-raidz2-7x10.sh
index a3a2ef58ba..d87fef272c 100644
--- a/scripts/zpool-config/dragon-raidz2-7x10.sh
+++ b/scripts/zpool-config/dragon-raidz2-7x10.sh
@@ -7,7 +7,7 @@ RANKS=7
 CHANNELS=10
 
 zpool_create() {
-	udev_setup ${UDEVDIR}/99-zpool.rules.dragon
+	udev_setup ${ETCDIR}/zfs/zdev.conf.dragon.example
 	udev_raidz2_setup ${RANKS} ${CHANNELS}
 
 	msg ${ZPOOL} create ${FORCE_FLAG} ${ZPOOL_NAME} ${RAIDZ2S[*]}
diff --git a/scripts/zpool-config/promise-raid0-1x16.sh b/scripts/zpool-config/promise-raid0-1x16.sh
index 0136fe3a22..1bb1136542 100644
--- a/scripts/zpool-config/promise-raid0-1x16.sh
+++ b/scripts/zpool-config/promise-raid0-1x16.sh
@@ -7,7 +7,7 @@ RANKS=8
 CHANNELS=2
 
 zpool_create() {
-	udev_setup ${UDEVDIR}/99-zpool.rules.promise
+	udev_setup ${ETCDIR}/zfs/zdev.conf.promise.example
 	udev_raid0_setup ${RANKS} ${CHANNELS}
 
 	msg ${ZPOOL} create ${FORCE_FLAG} ${ZPOOL_NAME} ${RAID0S[*]}
diff --git a/scripts/zpool-config/promise-raid10-8x2.sh b/scripts/zpool-config/promise-raid10-8x2.sh
index a16f0d0f5c..49639aef27 100644
--- a/scripts/zpool-config/promise-raid10-8x2.sh
+++ b/scripts/zpool-config/promise-raid10-8x2.sh
@@ -7,7 +7,7 @@ RANKS=8
 CHANNELS=2
 
 zpool_create() {
-	udev_setup ${UDEVDIR}/99-zpool.rules.promise
+	udev_setup ${ETCDIR}/zfs/zdev.conf.promise.example
 	udev_raid10_setup ${RANKS} ${CHANNELS}
 
 	msg ${ZPOOL} create ${FORCE_FLAG} ${ZPOOL_NAME} ${RAID10S[*]}
diff --git a/scripts/zpool-config/promise-raidz-2x8.sh b/scripts/zpool-config/promise-raidz-2x8.sh
index 0f6223f38e..f12f6813aa 100644
--- a/scripts/zpool-config/promise-raidz-2x8.sh
+++ b/scripts/zpool-config/promise-raidz-2x8.sh
@@ -7,7 +7,7 @@ RANKS=8
 CHANNELS=2
 
 zpool_create() {
-	udev_setup ${UDEVDIR}/99-zpool.rules.promise
+	udev_setup ${ETCDIR}/zfs/zdev.conf.promise.example
 	udev_raidz_setup ${RANKS} ${CHANNELS}
 
 	msg ${ZPOOL} create ${FORCE_FLAG} ${ZPOOL_NAME} ${RAIDZS[*]}
diff --git a/scripts/zpool-config/promise-raidz2-2x8.sh b/scripts/zpool-config/promise-raidz2-2x8.sh
index 5b642dd221..b5d0eb6fd6 100644
--- a/scripts/zpool-config/promise-raidz2-2x8.sh
+++ b/scripts/zpool-config/promise-raidz2-2x8.sh
@@ -7,7 +7,7 @@ RANKS=8
 CHANNELS=2
 
 zpool_create() {
-	udev_setup ${UDEVDIR}/99-zpool.rules.promise
+	udev_setup ${ETCDIR}/zfs/zdev.conf.promise.example
 	udev_raidz2_setup ${RANKS} ${CHANNELS}
 
 	msg ${ZPOOL} create ${FORCE_FLAG} ${ZPOOL_NAME} ${RAIDZ2S[*]}
diff --git a/scripts/zpool-config/x4550-raid0-1x48.sh b/scripts/zpool-config/x4550-raid0-1x48.sh
index 8082fea204..ed2dc2cafe 100644
--- a/scripts/zpool-config/x4550-raid0-1x48.sh
+++ b/scripts/zpool-config/x4550-raid0-1x48.sh
@@ -7,7 +7,7 @@ RANKS=8
 CHANNELS=6
 
 zpool_create() {
-	udev_setup ${UDEVDIR}/99-zpool.rules.x4550
+	udev_setup ${ETCDIR}/zfs/zdev.conf.x4550.example
 	udev_raid0_setup ${RANKS} ${CHANNELS}
 
 	msg ${ZPOOL} create ${FORCE_FLAG} ${ZPOOL_NAME} ${RAID0S[*]}
diff --git a/scripts/zpool-config/x4550-raid10-24x2.sh b/scripts/zpool-config/x4550-raid10-24x2.sh
index fb323716d6..f5fedb5364 100644
--- a/scripts/zpool-config/x4550-raid10-24x2.sh
+++ b/scripts/zpool-config/x4550-raid10-24x2.sh
@@ -7,7 +7,7 @@ RANKS=8
 CHANNELS=6
 
 zpool_create() {
-	udev_setup ${UDEVDIR}/99-zpool.rules.x4550
+	udev_setup ${ETCDIR}/zfs/zdev.conf.x4550.example
 	udev_raid10_setup ${RANKS} ${CHANNELS}
 
 	msg ${ZPOOL} create ${FORCE_FLAG} ${ZPOOL_NAME} ${RAID10S[*]}
diff --git a/scripts/zpool-config/x4550-raidz-8x6.sh b/scripts/zpool-config/x4550-raidz-8x6.sh
index d92974cff4..01c78ea6d4 100644
--- a/scripts/zpool-config/x4550-raidz-8x6.sh
+++ b/scripts/zpool-config/x4550-raidz-8x6.sh
@@ -7,7 +7,7 @@ RANKS=8
 CHANNELS=6
 
 zpool_create() {
-	udev_setup ${UDEVDIR}/99-zpool.rules.x4550
+	udev_setup ${ETCDIR}/zfs/zdev.conf.x4550.example
 	udev_raidz_setup ${RANKS} ${CHANNELS}
 
 	msg ${ZPOOL} create ${FORCE_FLAG} ${ZPOOL_NAME} ${RAIDZS[*]}
diff --git a/scripts/zpool-config/x4550-raidz2-8x6.sh b/scripts/zpool-config/x4550-raidz2-8x6.sh
index 4b75ba222b..0ea80dfbb2 100644
--- a/scripts/zpool-config/x4550-raidz2-8x6.sh
+++ b/scripts/zpool-config/x4550-raidz2-8x6.sh
@@ -7,7 +7,7 @@ RANKS=8
 CHANNELS=6
 
 zpool_create() {
-	udev_setup ${UDEVDIR}/99-zpool.rules.x4550
+	udev_setup ${ETCDIR}/zfs/zdev.conf.x4550.example
 	udev_raidz2_setup ${RANKS} ${CHANNELS}
 
 	msg ${ZPOOL} create ${FORCE_FLAG} ${ZPOOL_NAME} ${RAIDZ2S[*]}
diff --git a/zfs.spec.in b/zfs.spec.in
index 1bbcb7f76c..bd8a20bc7a 100644
--- a/zfs.spec.in
+++ b/zfs.spec.in
@@ -62,8 +62,10 @@ rm -rf $RPM_BUILD_ROOT
 %doc AUTHORS ChangeLog COPYING DISCLAIMER GIT
 %doc OPENSOLARIS.LICENSE README TODO ZFS.RELEASE
 %{_sbindir}/*
+%{_bindir}/*
 %{_libdir}/*
 %{_mandir}/man8/*
+%{_sysconfdir}/*
 
 %files devel
 %defattr(-,root,root)