added lv:a
[ganeti-extstorage-zfs] / sbin / lvs
1 #!/bin/sh -e
2
3 . /usr/share/ganeti/extstorage/zfs/defaults.sh
4
5 export VOL_NAME
6
7 VOL() {
8         while [ ! -z "$1" ] ; do
9                 case $1 in 
10                 *$EXTP_VG*) VOL=`echo $1 | cut -d/ -f4` ;;
11                 *) echo "# ignore $1" >&2
12                 esac
13                 shift
14         done
15         echo "# $VOL" >&2
16         export VOL_NAME=$VOL
17                 
18 }
19
20 # lvs --noheadings --units=m --nosuffix '--separator=|' -ovg_name,lv_name,lv_size,lv_attr
21 if echo $* | grep -q vg_name,lv_name,lv_size,lv_attr ; then
22         zfs list -o name,volsize,lv:a -t volume -r $EXTP_ZFS -H -p | sed "s:$EXTP_ZFS/*::" | \
23         awk '{ print "  '$EXTP_VG'|"$1"|" $2 / 1024 / 1024 "|-wi-a"$3"--" }'
24         /sbin/lvm lvs $* 2>/dev/null || exit 0 # local, might fail
25
26 # gnt-instance modify -t drbd -n box02 zfs
27 # lvs --noheadings '--separator=|' --units=k --nosuffix -olv_attr,lv_kernel_major,lv_kernel_minor,vg_extent_size,stripes,devices /dev/ffzgvg/c72d9ea7-f396-4104-b4ee-8b613da32051.disk1
28 elif echo $* | grep -q lv_attr,lv_kernel_major,lv_kernel_minor,vg_extent_size,stripes,devices ; then
29
30         VOL_NAME=VOL $*
31         volblocksize=`zfs get volblocksize -o value -p -H $EXTP_ZFS/$VOL_NAME`
32         perm=`zfs get lv:attr -o value -p -H $EXTP_ZFS/$VOL_NAME`
33         if [ -e /dev/zvol/$EXTP_ZFS/$VOL_NAME.snap ] ; then
34                 perm="owi-aos-" # snapshot origin
35         elif echo $VOL_NAME | grep -q '.snap$' ; then
36                 perm="swi-a-s-" # snapshot
37         fi
38         ls -al `readlink -f /dev/zvol/$EXTP_ZFS/$VOL_NAME` | sed 's/,//' | awk '{ print "  -wi-ao--|" $5 "|" $6 "|'$volblocksize'|1|" $10 "(" $6 * 1280 + $6 ")" }' # FIXME what is number after device?
39
40 # lvs -o tags --noheadings --nosuffix /dev/ffzgvg/88c6b19f-7b3f-4041-bb9c-d2a0716e459c.disk0
41 elif [ "$1" = "-o" ] ; then
42         VOL $@
43         tag=`zfs get lv:tag  -o value -p -H $EXTP_ZFS/$VOL_NAME`
44         echo $tag
45 else
46
47         /sbin/lvm lvs $*
48 fi