]> git.proxmox.com Git - mirror_zfs-debian.git/blame - cmd/zpool/zpool.d/model
New upstream version 0.7.2
[mirror_zfs-debian.git] / cmd / zpool / zpool.d / model
CommitLineData
cae5b340
AX
1#!/bin/sh
2#
3# Print some common lsblk values
4#
5# Any (lowercased) name symlinked to the lsblk script will be passed to lsblk
6# as one of its --output names. Here's a partial list of --output names
7# from the lsblk binary:
8#
9# Available columns (for --output):
10# NAME device name
11# KNAME internal kernel device name
12# MAJ:MIN major:minor device number
13# FSTYPE filesystem type
14# MOUNTPOINT where the device is mounted
15# LABEL filesystem LABEL
16# UUID filesystem UUID
17# RA read-ahead of the device
18# RO read-only device
19# RM removable device
20# MODEL device identifier
21# SIZE size of the device
22# STATE state of the device
23# OWNER user name
24# GROUP group name
25# MODE device node permissions
26# ALIGNMENT alignment offset
27# MIN-IO minimum I/O size
28# OPT-IO optimal I/O size
29# PHY-SEC physical sector size
30# LOG-SEC logical sector size
31# ROTA rotational device
32# SCHED I/O scheduler name
33# RQ-SIZE request queue size
34# TYPE device type
35# DISC-ALN discard alignment offset
36# DISC-GRAN discard granularity
37# DISC-MAX discard max bytes
38# DISC-ZERO discard zeroes data
39#
40# If the script is run as just 'lsblk' then print out disk size, vendor,
41# and model number.
42
43
44helpstr="
45label: Show filesystem label.
46model: Show disk model number.
47size: Show the disk capacity.
48vendor: Show the disk vendor.
49lsblk: Show the disk size, vendor, and model number."
50
51script=$(basename "$0")
52
53if [ "$1" = "-h" ] ; then
54 echo "$helpstr" | grep "$script:" | tr -s '\t' | cut -f 2-
55 exit
56fi
57
58if [ "$script" = "lsblk" ] ; then
59 list="size vendor model"
60else
61 list=$(echo "$script" | tr '[:upper:]' '[:lower:]')
62fi
63
64# Older versions of lsblk don't support all these values (like SERIAL).
65for i in $list ; do
66
67 # Special case: Looking up the size of a file-based vdev can't
68 # be done with lsblk.
69 if [ "$i" = "size" ] && [ -f "$VDEV_UPATH" ] ; then
70 size=$(du -h --apparent-size "$VDEV_UPATH" | cut -f 1)
71 echo "size=$size"
72 continue
73 fi
74
75
76 val=""
77 if val=$(eval "lsblk -dl -n -o $i $VDEV_UPATH 2>/dev/null") ; then
78 # Remove leading/trailing whitespace from value
79 val=$(echo "$val" | sed -e 's/^[[:space:]]*//' \
80 -e 's/[[:space:]]*$//')
81 fi
82 echo "$i=$val"
83done