aboutsummaryrefslogtreecommitdiffstats
path: root/cmd
diff options
context:
space:
mode:
Diffstat (limited to 'cmd')
-rw-r--r--cmd/Makefile.am106
-rwxr-xr-xcmd/arc_summary (renamed from cmd/arc_summary/arc_summary3)0
-rw-r--r--cmd/arc_summary/Makefile.am8
-rwxr-xr-xcmd/arcstat.in (renamed from cmd/arcstat/arcstat.in)0
-rw-r--r--cmd/arcstat/Makefile.am4
-rwxr-xr-xcmd/dbufstat.in (renamed from cmd/dbufstat/dbufstat.in)0
-rw-r--r--cmd/dbufstat/Makefile.am4
-rwxr-xr-xcmd/fsck.zfs.in (renamed from cmd/fsck_zfs/fsck.zfs.in)0
-rw-r--r--cmd/fsck_zfs/Makefile.am5
-rw-r--r--cmd/mount_zfs.c (renamed from cmd/mount_zfs/mount_zfs.c)0
-rw-r--r--cmd/mount_zfs/Makefile.am20
-rw-r--r--cmd/vdev_id/Makefile.am2
-rwxr-xr-xcmd/vdev_id/vdev_id792
-rw-r--r--cmd/zfs_ids_to_path.c (renamed from cmd/zfs_ids_to_path/zfs_ids_to_path.c)0
-rw-r--r--cmd/zfs_ids_to_path/Makefile.am8
-rw-r--r--cmd/zgenhostid.c (renamed from cmd/zgenhostid/zgenhostid.c)0
-rw-r--r--cmd/zgenhostid/Makefile.am5
-rw-r--r--cmd/zhack.c (renamed from cmd/zhack/zhack.c)0
-rw-r--r--cmd/zhack/Makefile.am12
-rw-r--r--cmd/ztest.c (renamed from cmd/ztest/ztest.c)0
-rw-r--r--cmd/ztest/Makefile.am18
-rw-r--r--cmd/zvol_id/Makefile.am5
-rw-r--r--cmd/zvol_id/zvol_id_main.c129
-rwxr-xr-xcmd/zvol_wait (renamed from cmd/zvol_wait/zvol_wait)0
-rw-r--r--cmd/zvol_wait/Makefile.am2
25 files changed, 91 insertions, 1029 deletions
diff --git a/cmd/Makefile.am b/cmd/Makefile.am
index 2fa281cad..9959760b5 100644
--- a/cmd/Makefile.am
+++ b/cmd/Makefile.am
@@ -2,38 +2,114 @@ bin_SCRIPTS =
bin_PROGRAMS =
sbin_SCRIPTS =
sbin_PROGRAMS =
-udev_PROGRAMS =
dist_bin_SCRIPTS =
zfsexec_PROGRAMS =
-dist_udev_SCRIPTS =
mounthelper_PROGRAMS =
-include $(srcdir)/%D%/fsck_zfs/Makefile.am
+
+sbin_SCRIPTS += fsck.zfs
+SHELLCHECKSCRIPTS += fsck.zfs
+CLEANFILES += fsck.zfs
+EXTRA_DIST += %D%/fsck.zfs.in
+$(call SUBST,fsck.zfs,%D%/)
+
+
+sbin_PROGRAMS += zfs_ids_to_path
+CPPCHECKTARGETS += zfs_ids_to_path
+
+zfs_ids_to_path_SOURCES = \
+ %D%/zfs_ids_to_path.c
+
+zfs_ids_to_path_LDADD = \
+ libzfs.la
+
+
+zhack_CPPFLAGS = $(AM_CPPFLAGS) $(FORCEDEBUG_CPPFLAGS)
+
+sbin_PROGRAMS += zhack
+CPPCHECKTARGETS += zhack
+
+zhack_SOURCES = \
+ %D%/zhack.c
+
+zhack_LDADD = \
+ libzpool.la \
+ libzfs_core.la \
+ libnvpair.la
+
+
+ztest_CFLAGS = $(AM_CFLAGS) $(KERNEL_CFLAGS)
+# Get rid of compiler warning for unchecked truncating snprintfs on gcc 7.1.1
+ztest_CFLAGS += $(NO_FORMAT_TRUNCATION)
+ztest_CPPFLAGS = $(AM_CPPFLAGS) $(FORCEDEBUG_CPPFLAGS)
+
+sbin_PROGRAMS += ztest
+CPPCHECKTARGETS += ztest
+
+ztest_SOURCES = \
+ %D%/ztest.c
+
+ztest_LDADD = \
+ libzpool.la \
+ libzfs_core.la \
+ libnvpair.la
+
+ztest_LDADD += -lm
+ztest_LDFLAGS = -pthread
+
+
include $(srcdir)/%D%/raidz_test/Makefile.am
-include $(srcdir)/%D%/vdev_id/Makefile.am
include $(srcdir)/%D%/zdb/Makefile.am
include $(srcdir)/%D%/zfs/Makefile.am
-include $(srcdir)/%D%/zfs_ids_to_path/Makefile.am
-include $(srcdir)/%D%/zhack/Makefile.am
include $(srcdir)/%D%/zinject/Makefile.am
include $(srcdir)/%D%/zpool/Makefile.am
include $(srcdir)/%D%/zpool_influxdb/Makefile.am
include $(srcdir)/%D%/zstream/Makefile.am
-include $(srcdir)/%D%/ztest/Makefile.am
+
if BUILD_LINUX
-include $(srcdir)/%D%/mount_zfs/Makefile.am
+mounthelper_PROGRAMS += mount.zfs
+CPPCHECKTARGETS += mount.zfs
+
+mount_zfs_SOURCES = \
+ %D%/mount_zfs.c
+
+mount_zfs_LDADD = \
+ libzfs.la \
+ libzfs_core.la \
+ libnvpair.la
+
+mount_zfs_LDADD += $(LTLIBINTL)
+
+CPPCHECKTARGETS += raidz_test
+
+
+sbin_PROGRAMS += zgenhostid
+CPPCHECKTARGETS += zgenhostid
+
+zgenhostid_SOURCES = \
+ %D%/zgenhostid.c
+
+
+dist_bin_SCRIPTS += %D%/zvol_wait
+SHELLCHECKSCRIPTS += %D%/zvol_wait
+
+
include $(srcdir)/%D%/zed/Makefile.am
-include $(srcdir)/%D%/zgenhostid/Makefile.am
-include $(srcdir)/%D%/zvol_id/Makefile.am
-include $(srcdir)/%D%/zvol_wait/Makefile.am
endif
+
if USING_PYTHON
-include $(srcdir)/%D%/arc_summary/Makefile.am
-include $(srcdir)/%D%/arcstat/Makefile.am
-include $(srcdir)/%D%/dbufstat/Makefile.am
+bin_SCRIPTS += arc_summary arcstat dbufstat
+CLEANFILES += arc_summary arcstat dbufstat
+EXTRA_DIST += %D%/arc_summary %D%/arcstat.in %D%/dbufstat.in
+
+$(call SUBST,arcstat,%D%/)
+$(call SUBST,dbufstat,%D%/)
+arc_summary: %D%/arc_summary
+ $(AM_V_at)cp $< $@
endif
+
PHONY += cmd
-cmd: $(bin_SCRIPTS) $(bin_PROGRAMS) $(sbin_SCRIPTS) $(sbin_PROGRAMS) $(udev_PROGRAMS) $(dist_bin_SCRIPTS) $(zfsexec_PROGRAMS) $(dist_udev_SCRIPTS) $(mounthelper_PROGRAMS)
+cmd: $(bin_SCRIPTS) $(bin_PROGRAMS) $(sbin_SCRIPTS) $(sbin_PROGRAMS) $(dist_bin_SCRIPTS) $(zfsexec_PROGRAMS) $(mounthelper_PROGRAMS)
diff --git a/cmd/arc_summary/arc_summary3 b/cmd/arc_summary
index 4f275813d..4f275813d 100755
--- a/cmd/arc_summary/arc_summary3
+++ b/cmd/arc_summary
diff --git a/cmd/arc_summary/Makefile.am b/cmd/arc_summary/Makefile.am
deleted file mode 100644
index 90dd981d9..000000000
--- a/cmd/arc_summary/Makefile.am
+++ /dev/null
@@ -1,8 +0,0 @@
-bin_SCRIPTS += arc_summary
-CLEANFILES += arc_summary
-
-EXTRA_DIST += %D%/arc_summary3
-ARC_SUMMARY = %D%/arc_summary3
-
-arc_summary: $(ARC_SUMMARY)
- $(AM_V_at)cp $< $@
diff --git a/cmd/arcstat/arcstat.in b/cmd/arcstat.in
index 9327f644f..9327f644f 100755
--- a/cmd/arcstat/arcstat.in
+++ b/cmd/arcstat.in
diff --git a/cmd/arcstat/Makefile.am b/cmd/arcstat/Makefile.am
deleted file mode 100644
index d7fd81074..000000000
--- a/cmd/arcstat/Makefile.am
+++ /dev/null
@@ -1,4 +0,0 @@
-bin_SCRIPTS += arcstat
-CLEANFILES += arcstat
-EXTRA_DIST += %D%/arcstat.in
-$(call SUBST,arcstat,%D%/)
diff --git a/cmd/dbufstat/dbufstat.in b/cmd/dbufstat.in
index b716a0c97..b716a0c97 100755
--- a/cmd/dbufstat/dbufstat.in
+++ b/cmd/dbufstat.in
diff --git a/cmd/dbufstat/Makefile.am b/cmd/dbufstat/Makefile.am
deleted file mode 100644
index 107f35573..000000000
--- a/cmd/dbufstat/Makefile.am
+++ /dev/null
@@ -1,4 +0,0 @@
-bin_SCRIPTS += dbufstat
-CLEANFILES += dbufstat
-EXTRA_DIST += %D%/dbufstat.in
-$(call SUBST,dbufstat,%D%/)
diff --git a/cmd/fsck_zfs/fsck.zfs.in b/cmd/fsck.zfs.in
index f0d4d2ec3..f0d4d2ec3 100755
--- a/cmd/fsck_zfs/fsck.zfs.in
+++ b/cmd/fsck.zfs.in
diff --git a/cmd/fsck_zfs/Makefile.am b/cmd/fsck_zfs/Makefile.am
deleted file mode 100644
index a252e3d0c..000000000
--- a/cmd/fsck_zfs/Makefile.am
+++ /dev/null
@@ -1,5 +0,0 @@
-sbin_SCRIPTS += fsck.zfs
-SHELLCHECKSCRIPTS += fsck.zfs
-CLEANFILES += fsck.zfs
-EXTRA_DIST += %D%/fsck.zfs.in
-$(call SUBST,fsck.zfs,%D%/)
diff --git a/cmd/mount_zfs/mount_zfs.c b/cmd/mount_zfs.c
index 669ed88f9..669ed88f9 100644
--- a/cmd/mount_zfs/mount_zfs.c
+++ b/cmd/mount_zfs.c
diff --git a/cmd/mount_zfs/Makefile.am b/cmd/mount_zfs/Makefile.am
deleted file mode 100644
index 0ba61abe5..000000000
--- a/cmd/mount_zfs/Makefile.am
+++ /dev/null
@@ -1,20 +0,0 @@
-#
-# Ignore the prefix for the mount helper. It must be installed in /sbin/
-# because this path is hardcoded in the mount(8) for security reasons.
-# However, if needed, the configure option --with-mounthelperdir= can be used
-# to override the default install location.
-#
-mounthelper_PROGRAMS += mount.zfs
-CPPCHECKTARGETS += mount.zfs
-
-mount_zfs_SOURCES = \
- %D%/mount_zfs.c
-
-mount_zfs_LDADD = \
- libzfs.la \
- libzfs_core.la \
- libnvpair.la
-
-mount_zfs_LDADD += $(LTLIBINTL)
-
-CPPCHECKTARGETS += raidz_test
diff --git a/cmd/vdev_id/Makefile.am b/cmd/vdev_id/Makefile.am
deleted file mode 100644
index ca57a9107..000000000
--- a/cmd/vdev_id/Makefile.am
+++ /dev/null
@@ -1,2 +0,0 @@
-dist_udev_SCRIPTS += %D%/vdev_id
-# TODO: #12084: SHELLCHECKSCRIPTS += %D%/vdev_id
diff --git a/cmd/vdev_id/vdev_id b/cmd/vdev_id/vdev_id
deleted file mode 100755
index 7b5aab141..000000000
--- a/cmd/vdev_id/vdev_id
+++ /dev/null
@@ -1,792 +0,0 @@
-#!/bin/sh
-#
-# vdev_id: udev helper to generate user-friendly names for JBOD disks
-#
-# This script parses the file /etc/zfs/vdev_id.conf to map a
-# physical path in a storage topology to a channel name. The
-# channel name is combined with a disk enclosure slot number to
-# create an alias that reflects the physical location of the drive.
-# This is particularly helpful when it comes to tasks like replacing
-# failed drives. Slot numbers may also be re-mapped in case the
-# default numbering is unsatisfactory. The drive aliases will be
-# created as symbolic links in /dev/disk/by-vdev.
-#
-# The currently supported topologies are sas_direct and sas_switch.
-# A multipath mode is supported in which dm-mpath devices are
-# handled by examining the first-listed running component disk. In
-# multipath mode the configuration file should contain a channel
-# definition with the same name for each path to a given enclosure.
-#
-# The alias keyword provides a simple way to map already-existing
-# device symlinks to more convenient names. It is suitable for
-# small, static configurations or for sites that have some automated
-# way to generate the mapping file.
-#
-#
-# Some example configuration files are given below.
-
-# #
-# # Example vdev_id.conf - sas_direct.
-# #
-#
-# multipath no
-# topology sas_direct
-# phys_per_port 4
-# slot bay
-#
-# # PCI_ID HBA PORT CHANNEL NAME
-# channel 85:00.0 1 A
-# channel 85:00.0 0 B
-# channel 86:00.0 1 C
-# channel 86:00.0 0 D
-#
-# # Custom mapping for Channel A
-#
-# # Linux Mapped
-# # Slot Slot Channel
-# slot 1 7 A
-# slot 2 10 A
-# slot 3 3 A
-# slot 4 6 A
-#
-# # Default mapping for B, C, and D
-# slot 1 4
-# slot 2 2
-# slot 3 1
-# slot 4 3
-
-# #
-# # Example vdev_id.conf - sas_switch
-# #
-#
-# topology sas_switch
-#
-# # SWITCH PORT CHANNEL NAME
-# channel 1 A
-# channel 2 B
-# channel 3 C
-# channel 4 D
-
-# #
-# # Example vdev_id.conf - multipath
-# #
-#
-# multipath yes
-#
-# # PCI_ID HBA PORT CHANNEL NAME
-# channel 85:00.0 1 A
-# channel 85:00.0 0 B
-# channel 86:00.0 1 A
-# channel 86:00.0 0 B
-
-# #
-# # Example vdev_id.conf - multipath / multijbod-daisychaining
-# #
-#
-# multipath yes
-# multijbod yes
-#
-# # PCI_ID HBA PORT CHANNEL NAME
-# channel 85:00.0 1 A
-# channel 85:00.0 0 B
-# channel 86:00.0 1 A
-# channel 86:00.0 0 B
-
-# #
-# # Example vdev_id.conf - multipath / mixed
-# #
-#
-# multipath yes
-# slot mix
-#
-# # PCI_ID HBA PORT CHANNEL NAME
-# channel 85:00.0 3 A
-# channel 85:00.0 2 B
-# channel 86:00.0 3 A
-# channel 86:00.0 2 B
-# channel af:00.0 0 C
-# channel af:00.0 1 C
-
-# #
-# # Example vdev_id.conf - alias
-# #
-#
-# # by-vdev
-# # name fully qualified or base name of device link
-# alias d1 /dev/disk/by-id/wwn-0x5000c5002de3b9ca
-# alias d2 wwn-0x5000c5002def789e
-
-PATH=/bin:/sbin:/usr/bin:/usr/sbin
-CONFIG=/etc/zfs/vdev_id.conf
-PHYS_PER_PORT=
-DEV=
-TOPOLOGY=
-BAY=
-ENCL_ID=""
-UNIQ_ENCL_ID=""
-
-usage() {
- cat << EOF
-Usage: vdev_id [-h]
- vdev_id <-d device> [-c config_file] [-p phys_per_port]
- [-g sas_direct|sas_switch|scsi] [-m]
-
- -c specify name of an alternative config file [default=$CONFIG]
- -d specify basename of device (i.e. sda)
- -e Create enclose device symlinks only (/dev/by-enclosure)
- -g Storage network topology [default="$TOPOLOGY"]
- -m Run in multipath mode
- -j Run in multijbod mode
- -p number of phy's per switch port [default=$PHYS_PER_PORT]
- -h show this summary
-EOF
- exit 1
- # exit with error to avoid processing usage message by a udev rule
-}
-
-map_slot() {
- LINUX_SLOT=$1
- CHANNEL=$2
-
- MAPPED_SLOT=$(awk -v linux_slot="$LINUX_SLOT" -v channel="$CHANNEL" \
- '$1 == "slot" && $2 == linux_slot && \
- ($4 ~ "^"channel"$" || $4 ~ /^$/) { print $3; exit}' $CONFIG)
- if [ -z "$MAPPED_SLOT" ] ; then
- MAPPED_SLOT=$LINUX_SLOT
- fi
- printf "%d" "${MAPPED_SLOT}"
-}
-
-map_channel() {
- MAPPED_CHAN=
- PCI_ID=$1
- PORT=$2
-
- case $TOPOLOGY in
- "sas_switch")
- MAPPED_CHAN=$(awk -v port="$PORT" \
- '$1 == "channel" && $2 == port \
- { print $3; exit }' $CONFIG)
- ;;
- "sas_direct"|"scsi")
- MAPPED_CHAN=$(awk -v pciID="$PCI_ID" -v port="$PORT" \
- '$1 == "channel" && $2 == pciID && $3 == port \
- {print $4}' $CONFIG)
- ;;
- esac
- printf "%s" "${MAPPED_CHAN}"
-}
-
-get_encl_id() {
- set -- $(echo $1)
- count=$#
-
- i=1
- while [ $i -le $count ] ; do
- d=$(eval echo '$'{$i})
- id=$(cat "/sys/class/enclosure/${d}/id")
- ENCL_ID="${ENCL_ID} $id"
- i=$((i + 1))
- done
-}
-
-get_uniq_encl_id() {
- for uuid in ${ENCL_ID}; do
- found=0
-
- for count in ${UNIQ_ENCL_ID}; do
- if [ $count = $uuid ]; then
- found=1
- break
- fi
- done
-
- if [ $found -eq 0 ]; then
- UNIQ_ENCL_ID="${UNIQ_ENCL_ID} $uuid"
- fi
- done
-}
-
-# map_jbod explainer: The bsg driver knows the difference between a SAS
-# expander and fanout expander. Use hostX instance along with top-level
-# (whole enclosure) expander instances in /sys/class/enclosure and
-# matching a field in an array of expanders, using the index of the
-# matched array field as the enclosure instance, thereby making jbod IDs
-# dynamic. Avoids reliance on high overhead userspace commands like
-# multipath and lsscsi and instead uses existing sysfs data. $HOSTCHAN
-# variable derived from devpath gymnastics in sas_handler() function.
-map_jbod() {
- DEVEXP=$(ls -l "/sys/block/$DEV/device/" | grep enclos | awk -F/ '{print $(NF-1) }')
- DEV=$1
-
- # Use "set --" to create index values (Arrays)
- set -- $(ls -l /sys/class/enclosure | grep -v "^total" | awk '{print $9}')
- # Get count of total elements
- JBOD_COUNT=$#
- JBOD_ITEM=$*
-
- # Build JBODs (enclosure) id from sys/class/enclosure/<dev>/id
- get_encl_id "$JBOD_ITEM"
- # Different expander instances for each paths.
- # Filter out and keep only unique id.
- get_uniq_encl_id
-
- # Identify final 'mapped jbod'
- j=0
- for count in ${UNIQ_ENCL_ID}; do
- i=1
- j=$((j + 1))
- while [ $i -le $JBOD_COUNT ] ; do
- d=$(eval echo '$'{$i})
- id=$(cat "/sys/class/enclosure/${d}/id")
- if [ "$d" = "$DEVEXP" ] && [ $id = $count ] ; then
- MAPPED_JBOD=$j
- break
- fi
- i=$((i + 1))
- done
- done
-
- printf "%d" "${MAPPED_JBOD}"
-}
-
-sas_handler() {
- if [ -z "$PHYS_PER_PORT" ] ; then
- PHYS_PER_PORT=$(awk '$1 == "phys_per_port" \
- {print $2; exit}' $CONFIG)
- fi
- PHYS_PER_PORT=${PHYS_PER_PORT:-4}
-
- if ! echo "$PHYS_PER_PORT" | grep -q -E '^[0-9]+$' ; then
- echo "Error: phys_per_port value $PHYS_PER_PORT is non-numeric"
- exit 1
- fi
-
- if [ -z "$MULTIPATH_MODE" ] ; then
- MULTIPATH_MODE=$(awk '$1 == "multipath" \
- {print $2; exit}' $CONFIG)
- fi
-
- if [ -z "$MULTIJBOD_MODE" ] ; then
- MULTIJBOD_MODE=$(awk '$1 == "multijbod" \
- {print $2; exit}' $CONFIG)
- fi
-
- # Use first running component device if we're handling a dm-mpath device
- if [ "$MULTIPATH_MODE" = "yes" ] ; then
- # If udev didn't tell us the UUID via DM_NAME, check /dev/mapper
- if [ -z "$DM_NAME" ] ; then
- DM_NAME=$(ls -l --full-time /dev/mapper |
- grep "$DEV"$ | awk '{print $9}')
- fi
-
- # For raw disks udev exports DEVTYPE=partition when
- # handling partitions, and the rules can be written to
- # take advantage of this to append a -part suffix. For
- # dm devices we get DEVTYPE=disk even for partitions so
- # we have to append the -part suffix directly in the
- # helper.
- if [ "$DEVTYPE" != "partition" ] ; then
- # Match p[number], remove the 'p' and prepend "-part"
- PART=$(echo "$DM_NAME" |
- awk 'match($0,/p[0-9]+$/) {print "-part"substr($0,RSTART+1,RLENGTH-1)}')
- fi
-
- # Strip off partition information.
- DM_NAME=$(echo "$DM_NAME" | sed 's/p[0-9][0-9]*$//')
- if [ -z "$DM_NAME" ] ; then
- return
- fi
-
- # Utilize DM device name to gather subordinate block devices
- # using sysfs to avoid userspace utilities
-
- # If our DEVNAME is something like /dev/dm-177, then we may be
- # able to get our DMDEV from it.
- DMDEV=$(echo $DEVNAME | sed 's;/dev/;;g')
- if [ ! -e /sys/block/$DMDEV/slaves/* ] ; then
- # It's not there, try looking in /dev/mapper
- DMDEV=$(ls -l --full-time /dev/mapper | grep $DM_NAME |
- awk '{gsub("../", " "); print $NF}')
- fi
-
- # Use sysfs pointers in /sys/block/dm-X/slaves because using
- # userspace tools creates lots of overhead and should be avoided
- # whenever possible. Use awk to isolate lowest instance of
- # sd device member in dm device group regardless of string
- # length.
- DEV=$(ls "/sys/block/$DMDEV/slaves" | awk '
- { len=sprintf ("%20s",length($0)); gsub(/ /,0,str); a[NR]=len "_" $0; }
- END {
- asort(a)
- print substr(a[1],22)
- }')
-
- if [ -z "$DEV" ] ; then
- return
- fi
- fi
-
- if echo "$DEV" | grep -q ^/devices/ ; then
- sys_path=$DEV
- else
- sys_path=$(udevadm info -q path -p "/sys/block/$DEV" 2>/dev/null)
- fi
-
- # Use positional parameters as an ad-hoc array
- set -- $(echo "$sys_path" | tr / ' ')
- num_dirs=$#
- scsi_host_dir="/sys"
-
- # Get path up to /sys/.../hostX
- i=1
-
- while [ $i -le "$num_dirs" ] ; do
- d=$(eval echo '$'{$i})
- scsi_host_dir="$scsi_host_dir/$d"
- echo "$d" | grep -q -E '^host[0-9]+$' && break
- i=$((i + 1))
- done
-
- # Lets grab the SAS host channel number and save it for JBOD sorting later
- HOSTCHAN=$(echo "$d" | awk -F/ '{ gsub("host","",$NF); print $NF}')
-
- if [ $i = "$num_dirs" ] ; then
- return
- fi
-
- PCI_ID=$(eval echo '$'{$((i -1))} | awk -F: '{print $2":"$3}')
-
- # In sas_switch mode, the directory four levels beneath
- # /sys/.../hostX contains symlinks to phy devices that reveal
- # the switch port number. In sas_direct mode, the phy links one
- # directory down reveal the HBA port.
- port_dir=$scsi_host_dir
-
- case $TOPOLOGY in
- "sas_switch") j=$((i + 4)) ;;
- "sas_direct") j=$((i + 1)) ;;
- esac
-
- i=$((i + 1))
-
- while [ $i -le $j ] ; do
- port_dir="$port_dir/$(eval echo '$'{$i})"
- i=$((i + 1))
- done
-
- PHY=$(ls -vd "$port_dir"/phy* 2>/dev/null | head -1 | awk -F: '{print $NF}')
- if [ -z "$PHY" ] ; then
- PHY=0
- fi
- PORT=$((PHY / PHYS_PER_PORT))
-
- # Look in /sys/.../sas_device/end_device-X for the bay_identifier
- # attribute.
- end_device_dir=$port_dir
-
- while [ $i -lt "$num_dirs" ] ; do
- d=$(eval echo '$'{$i})
- end_device_dir="$end_device_dir/$d"
- if echo "$d" | grep -q '^end_device' ; then
- end_device_dir="$end_device_dir/sas_device/$d"
- break
- fi
- i=$((i + 1))
- done
-
- # Add 'mix' slot type for environments where dm-multipath devices
- # include end-devices connected via SAS expanders or direct connection
- # to SAS HBA. A mixed connectivity environment such as pool devices
- # contained in a SAS JBOD and spare drives or log devices directly
- # connected in a server backplane without expanders in the I/O path.
- SLOT=
-
- case $BAY in
- "bay")
- SLOT=$(cat "$end_device_dir/bay_identifier" 2>/dev/null)
- ;;
- "mix")
- if [ $(cat "$end_device_dir/bay_identifier" 2>/dev/null) ] ; then
- SLOT=$(cat "$end_device_dir/bay_identifier" 2>/dev/null)
- else
- SLOT=$(cat "$end_device_dir/phy_identifier" 2>/dev/null)
- fi
- ;;
- "phy")
- SLOT=$(cat "$end_device_dir/phy_identifier" 2>/dev/null)
- ;;
- "port")
- d=$(eval echo '$'{$i})
- SLOT=$(echo "$d" | sed -e 's/^.*://')
- ;;
- "id")
- i=$((i + 1))
- d=$(eval echo '$'{$i})
- SLOT=$(echo "$d" | sed -e 's/^.*://')
- ;;
- "lun")
- i=$((i + 2))
- d=$(eval echo '$'{$i})
- SLOT=$(echo "$d" | sed -e 's/^.*://')
- ;;
- "ses")
- # look for this SAS path in all SCSI Enclosure Services
- # (SES) enclosures
- sas_address=$(cat "$end_device_dir/sas_address" 2>/dev/null)
- enclosures=$(lsscsi -g | \
- sed -n -e '/enclosu/s/^.* \([^ ][^ ]*\) *$/\1/p')
- for enclosure in $enclosures; do
- set -- $(sg_ses -p aes "$enclosure" | \
- awk "/device slot number:/{slot=\$12} \
- /SAS address: $sas_address/\
- {print slot}")
- SLOT=$1
- if [ -n "$SLOT" ] ; then
- break
- fi
- done
- ;;
- esac
- if [ -z "$SLOT" ] ; then
- return
- fi
-
- if [ "$MULTIJBOD_MODE" = "yes" ] ; then
- CHAN=$(map_channel "$PCI_ID" "$PORT")
- SLOT=$(map_slot "$SLOT" "$CHAN")
- JBOD=$(map_jbod "$DEV")
-
- if [ -z "$CHAN" ] ; then
- return
- fi
- echo "${CHAN}"-"${JBOD}"-"${SLOT}${PART}"
- else
- CHAN=$(map_channel "$PCI_ID" "$PORT")
- SLOT=$(map_slot "$SLOT" "$CHAN")
-
- if [ -z "$CHAN" ] ; then
- return
- fi
- echo "${CHAN}${SLOT}${PART}"
- fi
-}
-
-scsi_handler() {
- if [ -z "$FIRST_BAY_NUMBER" ] ; then
- FIRST_BAY_NUMBER=$(awk '$1 == "first_bay_number" \
- {print $2; exit}' $CONFIG)
- fi
- FIRST_BAY_NUMBER=${FIRST_BAY_NUMBER:-0}
-
- if [ -z "$PHYS_PER_PORT" ] ; then
- PHYS_PER_PORT=$(awk '$1 == "phys_per_port" \
- {print $2; exit}' $CONFIG)
- fi
- PHYS_PER_PORT=${PHYS_PER_PORT:-4}
-
- if ! echo "$PHYS_PER_PORT" | grep -q -E '^[0-9]+$' ; then
- echo "Error: phys_per_port value $PHYS_PER_PORT is non-numeric"
- exit 1
- fi
-
- if [ -z "$MULTIPATH_MODE" ] ; then
- MULTIPATH_MODE=$(awk '$1 == "multipath" \
- {print $2; exit}' $CONFIG)
- fi
-
- # Use first running component device if we're handling a dm-mpath device
- if [ "$MULTIPATH_MODE" = "yes" ] ; then
- # If udev didn't tell us the UUID via DM_NAME, check /dev/mapper
- if [ -z "$DM_NAME" ] ; then
- DM_NAME=$(ls -l --full-time /dev/mapper |
- grep "$DEV"$ | awk '{print $9}')
- fi
-
- # For raw disks udev exports DEVTYPE=partition when
- # handling partitions, and the rules can be written to
- # take advantage of this to append a -part suffix. For
- # dm devices we get DEVTYPE=disk even for partitions so
- # we have to append the -part suffix directly in the
- # helper.
- if [ "$DEVTYPE" != "partition" ] ; then
- # Match p[number], remove the 'p' and prepend "-part"
- PART=$(echo "$DM_NAME" |
- awk 'match($0,/p[0-9]+$/) {print "-part"substr($0,RSTART+1,RLENGTH-1)}')
- fi
-
- # Strip off partition information.
- DM_NAME=$(echo "$DM_NAME" | sed 's/p[0-9][0-9]*$//')
- if [ -z "$DM_NAME" ] ; then
- return
- fi
-
- # Get the raw scsi device name from multipath -ll. Strip off
- # leading pipe symbols to make field numbering consistent.
- DEV=$(multipath -ll "$DM_NAME" |
- awk '/running/{gsub("^[|]"," "); print $3 ; exit}')
- if [ -z "$DEV" ] ; then
- return
- fi
- fi
-
- if echo "$DEV" | grep -q ^/devices/ ; then
- sys_path=$DEV
- else
- sys_path=$(udevadm info -q path -p "/sys/block/$DEV" 2>/dev/null)
- fi
-
- # expect sys_path like this, for example:
- # /devices/pci0000:00/0000:00:0b.0/0000:09:00.0/0000:0a:05.0/0000:0c:00.0/host3/target3:1:0/3:1:0:21/block/sdv
-
- # Use positional parameters as an ad-hoc array
- set -- $(echo "$sys_path" | tr / ' ')
- num_dirs=$#
- scsi_host_dir="/sys"
-
- # Get path up to /sys/.../hostX
- i=1
-
- while [ $i -le "$num_dirs" ] ; do
- d=$(eval echo '$'{$i})
- scsi_host_dir="$scsi_host_dir/$d"
-
- echo "$d" | grep -q -E '^host[0-9]+$' && break
- i=$((i + 1))
- done
-
- if [ $i = "$num_dirs" ] ; then
- return
- fi
-
- PCI_ID=$(eval echo '$'{$((i -1))} | awk -F: '{print $2":"$3}')
-
- # In scsi mode, the directory two levels beneath
- # /sys/.../hostX reveals the port and slot.
- port_dir=$scsi_host_dir
- j=$((i + 2))
-
- i=$((i + 1))
- while [ $i -le $j ] ; do
- port_dir="$port_dir/$(eval echo '$'{$i})"
- i=$((i + 1))
- done
-
- set -- $(echo "$port_dir" | sed -e 's/^.*:\([^:]*\):\([^:]*\)$/\1 \2/')
- PORT=$1
- SLOT=$(($2 + FIRST_BAY_NUMBER))
-
- if [ -z "$SLOT" ] ; then
- return
- fi
-
- CHAN=$(map_channel "$PCI_ID" "$PORT")
- SLOT=$(map_slot "$SLOT" "$CHAN")
-
- if [ -z "$CHAN" ] ; then
- return
- fi
- echo "${CHAN}${SLOT}${PART}"
-}
-
-# Figure out the name for the enclosure symlink
-enclosure_handler () {
- # We get all the info we need from udev's DEVPATH variable:
- #
- # DEVPATH=/sys/devices/pci0000:00/0000:00:03.0/0000:05:00.0/host0/subsystem/devices/0:0:0:0/scsi_generic/sg0
-
- # Get the enclosure ID ("0:0:0:0")
- ENC="${DEVPATH%/*}"
- ENC="${ENC%/*}"
- ENC="${ENC##*/}"
- if [ ! -d "/sys/class/enclosure/$ENC" ] ; then
- # Not an enclosure, bail out
- return
- fi
-
- # Get the long sysfs device path to our enclosure. Looks like:
- # /devices/pci0000:00/0000:00:03.0/0000:05:00.0/host0/port-0:0/ ... /enclosure/0:0:0:0
-
- ENC_DEVICE=$(readlink "/sys/class/enclosure/$ENC")
-
- # Grab the full path to the hosts port dir:
- # /devices/pci0000:00/0000:00:03.0/0000:05:00.0/host0/port-0:0
- PORT_DIR=$(echo "$ENC_DEVICE" | grep -Eo '.+host[0-9]+/port-[0-9]+:[0-9]+')
-
- # Get the port number
- PORT_ID=$(echo "$PORT_DIR" | grep -Eo "[0-9]+$")
-
- # The PCI directory is two directories up from the port directory
- # /sys/devices/pci0000:00/0000:00:03.0/0000:05:00.0
- PCI_ID_LONG="$(readlink -m "/sys/$PORT_DIR/../..")"
- PCI_ID_LONG="${PCI_ID_LONG##*/}"
-
- # Strip down the PCI address from 0000:05:00.0 to 05:00.0
- PCI_ID="${PCI_ID_LONG#[0-9]*:}"
-
- # Name our device according to vdev_id.conf (like "L0" or "U1").
- NAME=$(awk "/channel/{if (\$1 == \"channel\" && \$2 == \"$PCI_ID\" && \
- \$3 == \"$PORT_ID\") {print \$4\$3}}" $CONFIG)
-
- echo "${NAME}"
-}
-
-alias_handler () {
- # Special handling is needed to correctly append a -part suffix
- # to partitions of device mapper devices. The DEVTYPE attribute
- # is normally set to "disk" instead of "partition" in this case,
- # so the udev rules won't handle that for us as they do for
- # "plain" block devices.
- #
- # For example, we may have the following links for a device and its
- # partitions,
- #
- # /dev/disk/by-id/dm-name-isw_dibgbfcije_ARRAY0 -> ../../dm-0
- # /dev/disk/by-id/dm-name-isw_dibgbfcije_ARRAY0p1 -> ../../dm-1
- # /dev/disk/by-id/dm-name-isw_dibgbfcije_ARRAY0p2 -> ../../dm-3
- #
- # and the following alias in vdev_id.conf.
- #
- # alias A0 dm-name-isw_dibgbfcije_ARRAY0
- #
- # The desired outcome is for the following links to be created
- # without having explicitly defined aliases for the partitions.
- #
- # /dev/disk/by-vdev/A0 -> ../../dm-0
- # /dev/disk/by-vdev/A0-part1 -> ../../dm-1
- # /dev/disk/by-vdev/A0-part2 -> ../../dm-3
- #
- # Warning: The following grep pattern will misidentify whole-disk
- # devices whose names end with 'p' followed by a string of
- # digits as partitions, causing alias creation to fail. This
- # ambiguity seems unavoidable, so devices using this facility
- # must not use such names.
- DM_PART=
- if echo "$DM_NAME" | grep -q -E 'p[0-9][0-9]*$' ; then
- if [ "$DEVTYPE" != "partition" ] ; then
- # Match p[number], remove the 'p' and prepend "-part"
- DM_PART=$(echo "$DM_NAME" |
- awk 'match($0,/p[0-9]+$/) {print "-part"substr($0,RSTART+1,RLENGTH-1)}')
- fi
- fi
-
- # DEVLINKS attribute must have been populated by already-run udev rules.
- for link in $DEVLINKS ; do
- # Remove partition information to match key of top-level device.
- if [ -n "$DM_PART" ] ; then
- link=$(echo "$link" | sed 's/p[0-9][0-9]*$//')
- fi
- # Check both the fully qualified and the base name of link.
- for l in $link ${link##*/} ; do
- if [ ! -z "$l" ]; then
- alias=$(awk -v var="$l" '($1 == "alias") && \
- ($3 == var) \
- { print $2; exit }' $CONFIG)
- if [ -n "$alias" ] ; then
- echo "${alias}${DM_PART}"
- return
- fi
- fi
- done
- done
-}
-
-# main
-while getopts 'c:d:eg:jmp:h' OPTION; do
- case ${OPTION} in
- c)
- CONFIG=${OPTARG}
- ;;
- d)
- DEV=${OPTARG}
- ;;
- e)
- # When udev sees a scsi_generic device, it calls this script with -e to
- # create the enclosure device symlinks only. We also need
- # "enclosure_symlinks yes" set in vdev_id.config to actually create the
- # symlink.
- ENCLOSURE_MODE=$(awk '{if ($1 == "enclosure_symlinks") \
- print $2}' "$CONFIG")
-
- if [ "$ENCLOSURE_MODE" != "yes" ] ; then
- exit 0
- fi
- ;;
- g)
- TOPOLOGY=$OPTARG
- ;;
- p)
- PHYS_PER_PORT=${OPTARG}
- ;;
- j)
- MULTIJBOD_MODE=yes
- ;;
- m)
- MULTIPATH_MODE=yes
- ;;
- h)
- usage
- ;;
- esac
-done
-
-if [ ! -r "$CONFIG" ] ; then
- echo "Error: Config file \"$CONFIG\" not found"
- exit 1
-fi
-
-if [ -z "$DEV" ] && [ -z "$ENCLOSURE_MODE" ] ; then
- echo "Error: missing required option -d"
- exit 1
-fi
-
-if [ -z "$TOPOLOGY" ] ; then
- TOPOLOGY=$(awk '($1 == "topology") {print $2; exit}' "$CONFIG")
-fi
-
-if [ -z "$BAY" ] ; then
- BAY=$(awk '($1 == "slot") {print $2; exit}' "$CONFIG")
-fi
-
-TOPOLOGY=${TOPOLOGY:-sas_direct}
-
-# Should we create /dev/by-enclosure symlinks?
-if [ "$ENCLOSURE_MODE" = "yes" ] && [ "$TOPOLOGY" = "sas_direct" ] ; then
- ID_ENCLOSURE=$(enclosure_handler)
- if [ -z "$ID_ENCLOSURE" ] ; then
- exit 0
- fi
-
- # Just create the symlinks to the enclosure devices and then exit.
- ENCLOSURE_PREFIX=$(awk '/enclosure_symlinks_prefix/{print $2}' "$CONFIG")
- if [ -z "$ENCLOSURE_PREFIX" ] ; then
- ENCLOSURE_PREFIX="enc"
- fi
- echo "ID_ENCLOSURE=$ID_ENCLOSURE"
- echo "ID_ENCLOSURE_PATH=by-enclosure/$ENCLOSURE_PREFIX-$ID_ENCLOSURE"
- exit 0
-fi
-
-# First check if an alias was defined for this device.
-ID_VDEV=$(alias_handler)
-
-if [ -z "$ID_VDEV" ] ; then
- BAY=${BAY:-bay}
- case $TOPOLOGY in
- sas_direct|sas_switch)
- ID_VDEV=$(sas_handler)
- ;;
- scsi)
- ID_VDEV=$(scsi_handler)
- ;;
- *)
- echo "Error: unknown topology $TOPOLOGY"
- exit 1
- ;;
- esac
-fi
-
-if [ -n "$ID_VDEV" ] ; then
- echo "ID_VDEV=${ID_VDEV}"
- echo "ID_VDEV_PATH=disk/by-vdev/${ID_VDEV}"
-fi
diff --git a/cmd/zfs_ids_to_path/zfs_ids_to_path.c b/cmd/zfs_ids_to_path.c
index 1d3bb6b29..1d3bb6b29 100644
--- a/cmd/zfs_ids_to_path/zfs_ids_to_path.c
+++ b/cmd/zfs_ids_to_path.c
diff --git a/cmd/zfs_ids_to_path/Makefile.am b/cmd/zfs_ids_to_path/Makefile.am
deleted file mode 100644
index 09ddd8116..000000000
--- a/cmd/zfs_ids_to_path/Makefile.am
+++ /dev/null
@@ -1,8 +0,0 @@
-sbin_PROGRAMS += zfs_ids_to_path
-CPPCHECKTARGETS += zfs_ids_to_path
-
-zfs_ids_to_path_SOURCES = \
- %D%/zfs_ids_to_path.c
-
-zfs_ids_to_path_LDADD = \
- libzfs.la
diff --git a/cmd/zgenhostid/zgenhostid.c b/cmd/zgenhostid.c
index 853931c6a..853931c6a 100644
--- a/cmd/zgenhostid/zgenhostid.c
+++ b/cmd/zgenhostid.c
diff --git a/cmd/zgenhostid/Makefile.am b/cmd/zgenhostid/Makefile.am
deleted file mode 100644
index 722950eb7..000000000
--- a/cmd/zgenhostid/Makefile.am
+++ /dev/null
@@ -1,5 +0,0 @@
-sbin_PROGRAMS += zgenhostid
-CPPCHECKTARGETS += zgenhostid
-
-zgenhostid_SOURCES = \
- %D%/zgenhostid.c
diff --git a/cmd/zhack/zhack.c b/cmd/zhack.c
index 71a2c5ae6..71a2c5ae6 100644
--- a/cmd/zhack/zhack.c
+++ b/cmd/zhack.c
diff --git a/cmd/zhack/Makefile.am b/cmd/zhack/Makefile.am
deleted file mode 100644
index 94fa76d14..000000000
--- a/cmd/zhack/Makefile.am
+++ /dev/null
@@ -1,12 +0,0 @@
-zhack_CPPFLAGS = $(AM_CPPFLAGS) $(FORCEDEBUG_CPPFLAGS)
-
-sbin_PROGRAMS += zhack
-CPPCHECKTARGETS += zhack
-
-zhack_SOURCES = \
- %D%/zhack.c
-
-zhack_LDADD = \
- libzpool.la \
- libzfs_core.la \
- libnvpair.la
diff --git a/cmd/ztest/ztest.c b/cmd/ztest.c
index d60422279..d60422279 100644
--- a/cmd/ztest/ztest.c
+++ b/cmd/ztest.c
diff --git a/cmd/ztest/Makefile.am b/cmd/ztest/Makefile.am
deleted file mode 100644
index e27643a44..000000000
--- a/cmd/ztest/Makefile.am
+++ /dev/null
@@ -1,18 +0,0 @@
-ztest_CFLAGS = $(AM_CFLAGS) $(KERNEL_CFLAGS)
-# Get rid of compiler warning for unchecked truncating snprintfs on gcc 7.1.1
-ztest_CFLAGS += $(NO_FORMAT_TRUNCATION)
-ztest_CPPFLAGS = $(AM_CPPFLAGS) $(FORCEDEBUG_CPPFLAGS)
-
-sbin_PROGRAMS += ztest
-CPPCHECKTARGETS += ztest
-
-ztest_SOURCES = \
- %D%/ztest.c
-
-ztest_LDADD = \
- libzpool.la \
- libzfs_core.la \
- libnvpair.la
-
-ztest_LDADD += -lm
-ztest_LDFLAGS = -pthread
diff --git a/cmd/zvol_id/Makefile.am b/cmd/zvol_id/Makefile.am
deleted file mode 100644
index 7ba13205b..000000000
--- a/cmd/zvol_id/Makefile.am
+++ /dev/null
@@ -1,5 +0,0 @@
-udev_PROGRAMS += zvol_id
-CPPCHECKTARGETS += zvol_id
-
-zvol_id_SOURCES = \
- %D%/zvol_id_main.c
diff --git a/cmd/zvol_id/zvol_id_main.c b/cmd/zvol_id/zvol_id_main.c
deleted file mode 100644
index 929a1a6e7..000000000
--- a/cmd/zvol_id/zvol_id_main.c
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License (the "License").
- * You may not use this file except in compliance with the License.
- *
- * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
- * or http://www.opensolaris.org/os/licensing.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
- * If applicable, add the following below this CDDL HEADER, with the
- * fields enclosed by brackets "[]" replaced with your own identifying
- * information: Portions Copyright [yyyy] [name of copyright owner]
- *
- * CDDL HEADER END
- */
-/*
- * Copyright (c) 2011, Fajar A. Nugraha. All rights reserved.
- * Use is subject to license terms.
- */
-
-#include <ctype.h>
-#include <string.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <linux/ioctl.h>
-#include <sys/stat.h>
-#include <sys/ioctl.h>
-#include <sys/zfs_znode.h>
-#include <sys/fs/zfs.h>
-
-#if defined(ZFS_ASAN_ENABLED)
-/*
- * zvol_id is invoked by udev with the help of ptrace()
- * making sanitized binary with leak detection croak
- * because of tracing mechanisms collision
- */
-extern const char *__asan_default_options(void);
-
-const char *__asan_default_options(void) {
- return ("abort_on_error=true:halt_on_error=true:"
- "allocator_may_return_null=true:disable_coredump=false:"
- "detect_stack_use_after_return=true:detect_leaks=false");
-}
-#endif
-
-static int
-ioctl_get_msg(char *var, int fd)
-{
- int ret;
- char msg[ZFS_MAX_DATASET_NAME_LEN];
-
- ret = ioctl(fd, BLKZNAME, msg);
- if (ret < 0) {
- return (ret);
- }
-
- snprintf(var, ZFS_MAX_DATASET_NAME_LEN, "%s", msg);
- return (ret);
-}
-
-int
-main(int argc, char **argv)
-{
- int fd = -1, ret = 0, status = EXIT_FAILURE;
- char zvol_name[ZFS_MAX_DATASET_NAME_LEN];
- char *zvol_name_part = NULL;
- char *dev_name;
- struct stat64 statbuf;
- int dev_minor, dev_part;
- int i;
-
- if (argc < 2) {
- fprintf(stderr, "Usage: %s /dev/zvol_device_node\n", argv[0]);
- goto fail;
- }
-
- dev_name = argv[1];
- ret = stat64(dev_name, &statbuf);
- if (ret != 0) {
- fprintf(stderr, "Unable to access device file: %s\n", dev_name);
- goto fail;
- }
-
- dev_minor = minor(statbuf.st_rdev);
- dev_part = dev_minor % ZVOL_MINORS;
-
- fd = open(dev_name, O_RDONLY);
- if (fd < 0) {
- fprintf(stderr, "Unable to open device file: %s\n", dev_name);
- goto fail;
- }
-
- ret = ioctl_get_msg(zvol_name, fd);
- if (ret < 0) {
- fprintf(stderr, "ioctl_get_msg failed: %s\n", strerror(errno));
- goto fail;
- }
- if (dev_part > 0)
- ret = asprintf(&zvol_name_part, "%s-part%d", zvol_name,
- dev_part);
- else
- ret = asprintf(&zvol_name_part, "%s", zvol_name);
-
- if (ret == -1 || zvol_name_part == NULL)
- goto fail;
-
- for (i = 0; i < strlen(zvol_name_part); i++) {
- if (isblank(zvol_name_part[i]))
- zvol_name_part[i] = '+';
- }
-
- printf("%s\n", zvol_name_part);
- status = EXIT_SUCCESS;
-
-fail:
- if (zvol_name_part)
- free(zvol_name_part);
- if (fd >= 0)
- close(fd);
-
- return (status);
-}
diff --git a/cmd/zvol_wait/zvol_wait b/cmd/zvol_wait
index f1fa42e27..f1fa42e27 100755
--- a/cmd/zvol_wait/zvol_wait
+++ b/cmd/zvol_wait
diff --git a/cmd/zvol_wait/Makefile.am b/cmd/zvol_wait/Makefile.am
deleted file mode 100644
index 2d3736f75..000000000
--- a/cmd/zvol_wait/Makefile.am
+++ /dev/null
@@ -1,2 +0,0 @@
-dist_bin_SCRIPTS += %D%/zvol_wait
-SHELLCHECKSCRIPTS += %D%/zvol_wait