rewrote documentation to provide easier steps
[ganeti-extstorage-zfs] / sbin / lvcreate
index bedbcd8..b326a8e 100755 (executable)
@@ -1,25 +1,40 @@
-#!/bin/sh -x
+#!/bin/sh -xe
 
 . /usr/share/ganeti/extstorage/zfs/defaults.sh
 
 set -x
 
-/sbin/lvm lvcreate $*
-
 # gnt-instance move --node arh-hw bbb
 # lvcreate -L5120m -ne4bf0e9d-2c6e-4e1c-8bc4-342ee94724a5.disk0 -i1 ffzgvg tmp500g/block
 if echo $* | grep -q $EXTP_VG ; then
+       SNAP=0
        while [ ! -z "$1" ] ; do
                case $1 in 
 
                -L*) VOL_SIZE=`echo $1 | sed 's/-L//'` ;;
                -n*) VOL_NAME=`echo $1 | sed 's/-n//'` ;;
+               -s)  SNAP=1 ;;
+               /dev/$EXTP_VG/*) VOL_ORIGIN=`echo $1 | cut -d/ -f4`
 
                esac
                shift
        done
 
-test -e /dev/zvol/$EXTP_ZFS/$VOL_NAME || \
-zfs create -V ${VOL_SIZE} $EXTP_CREATE $EXTP_ZFS/$VOL_NAME
+       if [ $SNAP = 0 ] ; then
+
+               test -e /dev/zvol/$EXTP_ZFS/$VOL_NAME || \
+               zfs create -V ${VOL_SIZE} $EXTP_CREATE $EXTP_ZFS/$VOL_NAME
+
+       else
+
+               zfs snap $EXTP_ZFS/$VOL_ORIGIN@snap
+               sleep 1
+               zfs clone $EXTP_ZFS/$VOL_ORIGIN@snap $EXTP_ZFS/$VOL_NAME
+               sleep 1
+               ln -sfv `readlink -f /dev/zvol/$EXTP_ZFS/$VOL_NAME` /dev/$EXTP_VG/$VOL_NAME
+
+       fi
 
+else
+       /sbin/lvm lvcreate $*
 fi