From: ianmdlvl Date: Sun, 30 Jul 2006 13:34:05 +0000 (+0000) Subject: @@ -1,3 +1,14 @@ X-Git-Tag: debian_version_4_1_2~3 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=chiark-utils.git;a=commitdiff_plain;h=0d31a244645ed1fec50232ddc31debfb5d38c0f2 @@ -1,3 +1,14 @@ +chiark-utils (4.1.2) unstable; urgency=low + + * Translate /dev/mapper devices from mount table into LVM device names. + * Use `current logical extents associated to logical volume' (field 8) + rather than `allocated logical extents of logical volume' (field 9) + for size, as the latter is sometimes -1 for some reason. + * Attempt 10 times to mount readonly. + * Comments stating that lvm{create,extents}core1 need vgroup. + + -- + chiark-utils (4.1.1) unstable; urgency=low * summer sorts the output and identifies hardlink --- diff --git a/backup/lvm b/backup/lvm index 3d8be29..dd503e7 100755 --- a/backup/lvm +++ b/backup/lvm @@ -23,13 +23,14 @@ fi fstype="$(mount | sed -n \ "s,^$device on $mountpoint type \([a-z0-9][a-z0-9]*\) .*,-t \1 ,p")" +lvmunmapperdevice +lvmdevice2vgroup + if [ -z "$lvm_lvsize_opts" ]; then - vgroup="${device#/dev/}" - vgroup="${vgroup%/*}" lvmextentscore1 lvdisplay_out="$(really lvdisplay -c "$device")" - extents2="$(printf "%s" "$lvdisplay_out" | awk -F: '{print $9}')" + extents2="$(printf "%s" "$lvdisplay_out" | awk -F: '{print $8}')" extents2=$(( $extents2 + ($extents2+9)/10 - 1 )) lvmextentscore2 diff --git a/backup/remountrocp b/backup/remountrocp index 5e40cc3..d9ba155 100755 --- a/backup/remountrocp +++ b/backup/remountrocp @@ -59,7 +59,17 @@ mkfs -t $remountrocp_fs "$lvpath" mkdir -- "$snmnt" mount -t $remountrocp_fs $lvm_mount_opts "$lvpath" "$snmnt" -mount -o remount,ro "$mountpoint" +attempts=10 +while true; do + if mount -o remount,ro "$mountpoint"; then last; fi + attempts=$(( $attempts - 1 )) + if [ $attempts = 0 ]; then + echo >&2 'cannot remount readonly' + exit 1 + fi + sleep 1 +done + trap "mount -o remount,rw $mountpoint; exit 12" 0 cp -a -- "$mountpoint/." "$snmnt/." mount -o remount,rw "$mountpoint" diff --git a/backup/snap-common b/backup/snap-common index c12bc6d..f6e788a 100644 --- a/backup/snap-common +++ b/backup/snap-common @@ -29,6 +29,27 @@ 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 @@ -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 diff --git a/debian/changelog b/debian/changelog index d2516d8..3bf070f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,14 @@ +chiark-utils (4.1.2) unstable; urgency=low + + * Translate /dev/mapper devices from mount table into LVM device names. + * Use `current logical extents associated to logical volume' (field 8) + rather than `allocated logical extents of logical volume' (field 9) + for size, as the latter is sometimes -1 for some reason. + * Attempt 10 times to mount readonly. + * Comments stating that lvm{create,extents}core1 need vgroup. + + -- + chiark-utils (4.1.1) unstable; urgency=low * summer sorts the output and identifies hardlink