2 # invoked by backup scripts as
3 # remountrocp snap $vardir $device $mountpoint
4 # remounts $mountpoint readonly
5 # copies data to $vardir/snap-mount
6 # remounts $mountpoint readwrite
7 # remountrocp drop $vardir
8 # deletes $vardir/snap-mount
14 . ${CHIARK_BACKUP_SHAREDIR:-/usr/share/chiark-backup}/snap-common
16 #---------- clean up anything
21 lastsettings="$vardir/remountrocp-settings"
22 test ! -f $lastsettings || . $lastsettings
24 if test "$opmode" = drop; then
25 test -z "$last_mountpoint" || mount -o remount,rw $last_mountpoint
27 echo 'remountrocp snap dropped'
31 #---------- create snapshot
33 if [ -z "$lvm_lvsize_opts" ]; then
36 df_out="$(really df -P --block-size=$extsize $mountpoint)"
37 extents2="$(printf "%s" "$df_out" | awk '/^\// {print $3}')"
38 extents2=$(( ($extents2*150+102399)/102400 + 4 ))
45 cat >$lastsettings.new <<END
46 last_mountpoint=$mountpoint
48 mv -f $lastsettings.new $lastsettings
58 mkfs -t $remountrocp_fs -q "$lvpath"
61 mount -t $remountrocp_fs $lvm_mount_opts "$lvpath" "$snmnt"
62 echo ' copy filesystem created and mounted'
66 if mount -o remount,ro "$mountpoint"; then break; fi
67 attempts=$(( $attempts - 1 ))
68 if [ $attempts = 0 ]; then
69 echo >&2 'cannot remount readonly'
74 trap "set +e; mount -o remount,rw $mountpoint; exit 12" 0
75 echo ' source remounted readonly, copying...'
76 cp -ax -- "$mountpoint/." "$snmnt/."
78 mount -o remount,rw "$mountpoint"
80 mount -o remount,ro "$lvpath"
82 echo 'remountrocp snap activated'