X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;ds=sidebyside;f=backup%2Fsnap-common;h=52a2c41c99d9329ac3ccf16d0eadd473a4680e9a;hb=a1b737d1580fe8ad5aea50e003c7d0334cf6b663;hp=c12bc6dcbbbafae0949efde85e7b15f02fec84ff;hpb=b7fed73a8d9509acef0307ce94d59c047653b821;p=chiark-utils.git diff --git a/backup/snap-common b/backup/snap-common index c12bc6d..52a2c41 100644 --- a/backup/snap-common +++ b/backup/snap-common @@ -29,10 +29,31 @@ esac #---------- common functions +lvmunmapperdevice () { + # turns device=/dev/mapper/... into /dev// + case "$device" in + /dev/mapper/*) + device="`printf '%s' "$device" | perl -pe ' + s,^/dev/mapper/,,; + die if m,/,; + s,\-\-,!,g; + s,\-,/,g; + s,\!,-,g; + s,^,/dev/,; + '`" + ;; + esac +} + +lvmdevice2vgroup () { + vgroup="${device#/dev/}" + vgroup="${vgroup%/*}" +} + lvmdropcore () { snmnt="$vardir/snap-mount" umount -v "$snmnt" || true - test ! -d "$snmnt" || rmdir -- "$snmnt" + test ! -d "$snmnt" || rmdir -- "$snmnt" || rm -f "$snmnt" set +e old_lv_dev="$(readlink $vardir/snap-device)" @@ -49,6 +70,7 @@ lvmdropcore () { } lvmextentscore1 () { + # vgroup must be set vgdisplay_out="$(really vgdisplay -c "$vgroup")" extents="$(printf "%s" "$vgdisplay_out" | awk -F: '{print $16}')" extsize="$(printf "%s" "$vgdisplay_out" | awk -F: '{print $13}')" @@ -60,6 +82,7 @@ lvmextentscore2 () { } lvmcreatecore1 () { + # vgroup must be set lvpath="/dev/$vgroup/$lvm_lv" ln -s -- "$lvpath" "$vardir"/snap-device sync