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
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"
#---------- 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
}
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}')"
}
lvmcreatecore1 () {
+ # vgroup must be set
lvpath="/dev/$vgroup/$lvm_lv"
ln -s -- "$lvpath" "$vardir"/snap-device
sync
+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