-#!/bin/sh
+#!/bin/bash
# invoked by backup scripts as
# lvm snap $vardir $device $mountpoint
# creates and mounts on $vardir/snap-mount
#---------- clean up anything
+snmnt="$vardir/snap-mount"
umount -v "$snmnt" || true
test ! -d "$snmnt" || rmdir -- "$snmnt"
"s,^$device on $mountpoint type \([a-z0-9][a-z0-9]*\) .*,-t \1 ,p")"
if [ -z "$lvm_lvsize_opts" ]; then
- df="$(df -k $device)"
- blocks="$(printf "%s" "$df" | sed -n '2,$s,^/dev/[^ ]*[ ][ ]*[0-9][0-9]*[ ][ ]*\([0-9][0-9]*\)[ ].*,\1,p')"
- lvm_lvsize_opts="-L $blocks"K
+ vggroup="${device#/dev/}"
+ vggroup="${vggroup%/*}"
+ vgdisplay_out="$(really vgdisplay -c "$vggroup")"
+ extents="$(printf "%s" "$vgdisplay_out" | awk -F: '{print $16}')"
+
+ lvdisplay_out="$(really lvdisplay -c "$device")"
+ extents2="$(printf "%s" "$lvdisplay_out" | awk -F: '{print $9}')"
+ extents2=$(( $extents2 + ($extents2+9)/10 - 1 ))
+
+ if [ $extents2 -lt $extents ]; then extents=$extents2; fi
+
+ lvm_lvsize_opts="-l $extents"
fi
lvpath="$(dirname "$device")/$lvm_lv"