chiark / gitweb /
@@ -1,3 +1,14 @@
authorianmdlvl <ianmdlvl>
Sun, 30 Jul 2006 13:34:05 +0000 (13:34 +0000)
committerianmdlvl <ianmdlvl>
Sun, 30 Jul 2006 13:34:05 +0000 (13:34 +0000)
+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

backup/lvm
backup/remountrocp
backup/snap-common
debian/changelog

index 3d8be29e782a348bfa2a5f8d22f407caf1dee0ac..dd503e7a789c1710bfdaaac229712a50fc9111a3 100755 (executable)
@@ -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
index 5e40cc37cc72976d5a7d827a9830de1f0f296683..d9ba15518a20c6279790b632b21c33ed88e9b965 100755 (executable)
@@ -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"
index c12bc6dcbbbafae0949efde85e7b15f02fec84ff..f6e788ab975a566f1c5dcad9ce4b17297eea798e 100644 (file)
@@ -29,6 +29,27 @@ esac
 
 #---------- common functions
 
+lvmunmapperdevice () {
+       # turns device=/dev/mapper/... into /dev/<group>/<volume>
+       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
index d2516d8c87e85fca1086518f40038c28981e728d..3bf070fc1f06eb0b0765954565a264d33190b6da 100644 (file)
@@ -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