X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=backup%2Fremountrocp;h=04ddd270afff6e73356009a0b28561155543bead;hb=refs%2Fheads%2Fmaster;hp=d9ba15518a20c6279790b632b21c33ed88e9b965;hpb=0d31a244645ed1fec50232ddc31debfb5d38c0f2;p=chiark-utils.git diff --git a/backup/remountrocp b/backup/remountrocp index d9ba155..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,15 @@ 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' attempts=10 while true; do - if mount -o remount,ro "$mountpoint"; then last; fi + if mount -o remount,ro "$mountpoint"; then break; fi attempts=$(( $attempts - 1 )) if [ $attempts = 0 ]; then echo >&2 'cannot remount readonly' @@ -69,9 +71,10 @@ while true; do fi sleep 1 done - -trap "mount -o remount,rw $mountpoint; exit 12" 0 -cp -a -- "$mountpoint/." "$snmnt/." +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"