]> git.proxmox.com Git - mirror_zfs-debian.git/blobdiff - cmd/zpool/zpool.d/vendor
New upstream version 0.7.2
[mirror_zfs-debian.git] / cmd / zpool / zpool.d / vendor
diff --git a/cmd/zpool/zpool.d/vendor b/cmd/zpool/zpool.d/vendor
new file mode 100755 (executable)
index 0000000..1cdef40
--- /dev/null
@@ -0,0 +1,83 @@
+#!/bin/sh
+#
+# Print some common lsblk values
+#
+# Any (lowercased) name symlinked to the lsblk script will be passed to lsblk
+# as one of its --output names.  Here's a partial list of --output names
+# from the lsblk binary:
+#
+# Available columns (for --output):
+#        NAME  device name
+#       KNAME  internal kernel device name
+#     MAJ:MIN  major:minor device number
+#      FSTYPE  filesystem type
+#  MOUNTPOINT  where the device is mounted
+#       LABEL  filesystem LABEL
+#        UUID  filesystem UUID
+#          RA  read-ahead of the device
+#          RO  read-only device
+#          RM  removable device
+#       MODEL  device identifier
+#        SIZE  size of the device
+#       STATE  state of the device
+#       OWNER  user name
+#       GROUP  group name
+#        MODE  device node permissions
+#   ALIGNMENT  alignment offset
+#      MIN-IO  minimum I/O size
+#      OPT-IO  optimal I/O size
+#     PHY-SEC  physical sector size
+#     LOG-SEC  logical sector size
+#        ROTA  rotational device
+#       SCHED  I/O scheduler name
+#     RQ-SIZE  request queue size
+#        TYPE  device type
+#    DISC-ALN  discard alignment offset
+#   DISC-GRAN  discard granularity
+#    DISC-MAX  discard max bytes
+#   DISC-ZERO  discard zeroes data
+#
+# If the script is run as just 'lsblk' then print out disk size, vendor,
+# and model number.
+
+
+helpstr="
+label: Show filesystem label.
+model: Show disk model number.
+size:  Show the disk capacity.
+vendor:        Show the disk vendor.
+lsblk: Show the disk size, vendor, and model number."
+
+script=$(basename "$0")
+
+if [ "$1" = "-h" ] ; then
+        echo "$helpstr" | grep "$script:" | tr -s '\t' | cut -f 2-
+        exit
+fi
+
+if [ "$script" = "lsblk" ] ; then
+       list="size vendor model"
+else
+       list=$(echo "$script" | tr '[:upper:]' '[:lower:]')
+fi
+
+# Older versions of lsblk don't support all these values (like SERIAL).
+for i in $list ; do
+
+       # Special case: Looking up the size of a file-based vdev can't
+       # be done with lsblk.
+       if [ "$i" = "size" ] && [ -f "$VDEV_UPATH" ] ; then
+               size=$(du -h --apparent-size "$VDEV_UPATH" | cut -f 1)
+               echo "size=$size"
+               continue
+       fi
+
+
+       val=""
+       if val=$(eval "lsblk -dl -n -o $i $VDEV_UPATH 2>/dev/null") ; then
+               # Remove leading/trailing whitespace from value
+               val=$(echo "$val" | sed -e 's/^[[:space:]]*//' \
+                    -e 's/[[:space:]]*$//')
+       fi
+       echo "$i=$val"
+done