X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=chiark-utils.git;a=blobdiff_plain;f=backup%2Fremountrocp;h=04ddd270afff6e73356009a0b28561155543bead;hp=5e40cc37cc72976d5a7d827a9830de1f0f296683;hb=2e8778a4f845d16f601f2754de11c71ef570d33a;hpb=b7fed73a8d9509acef0307ce94d59c047653b821 diff --git a/backup/remountrocp b/backup/remountrocp index 5e40cc3..04ddd27 100755 --- a/backup/remountrocp +++ b/backup/remountrocp @@ -35,7 +35,7 @@ if [ -z "$lvm_lvsize_opts" ]; then df_out="$(really df -P --block-size=$extsize $mountpoint)" extents2="$(printf "%s" "$df_out" | awk '/^\// {print $3}')" - extents2=$(( ($extents2*150+99)/100 + 4 )) + extents2=$(( ($extents2*150+102399)/102400 + 4 )) lvmextentscore2 fi @@ -55,13 +55,26 @@ lvcreate \ $vgroup \ $lvm_lvcreate_args -mkfs -t $remountrocp_fs "$lvpath" +mkfs -t $remountrocp_fs -q "$lvpath" + mkdir -- "$snmnt" mount -t $remountrocp_fs $lvm_mount_opts "$lvpath" "$snmnt" +echo ' copy filesystem created and mounted' -mount -o remount,ro "$mountpoint" -trap "mount -o remount,rw $mountpoint; exit 12" 0 -cp -a -- "$mountpoint/." "$snmnt/." +attempts=10 +while true; do + if mount -o remount,ro "$mountpoint"; then break; fi + attempts=$(( $attempts - 1 )) + if [ $attempts = 0 ]; then + echo >&2 'cannot remount readonly' + exit 1 + fi + sleep 1 +done +trap "set +e; mount -o remount,rw $mountpoint; exit 12" 0 +echo ' source remounted readonly, copying...' +cp -ax -- "$mountpoint/." "$snmnt/." +echo ' finalising...' mount -o remount,rw "$mountpoint" trap '' 0 mount -o remount,ro "$lvpath"