diff options
author | k0n24d | 2016-06-20 16:57:19 +0200 |
---|---|---|
committer | k0n24d | 2016-06-20 16:57:19 +0200 |
commit | 9f97eab5feb840f1a6c6aa77d5ca28578119ae4b (patch) | |
tree | a84340982b0effcc65cbed792edbc04a354c45cc /dattobd_remove_filesystem_snapshot | |
download | aur-9f97eab5feb840f1a6c6aa77d5ca28578119ae4b.tar.gz |
Initial version
Diffstat (limited to 'dattobd_remove_filesystem_snapshot')
-rw-r--r-- | dattobd_remove_filesystem_snapshot | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/dattobd_remove_filesystem_snapshot b/dattobd_remove_filesystem_snapshot new file mode 100644 index 000000000000..16c9a63f0529 --- /dev/null +++ b/dattobd_remove_filesystem_snapshot @@ -0,0 +1,74 @@ +#!/bin/sh + +set -e + +SNAP_ID=$1 +SNAP_MOUNTPOINT="$2" +SNAP_ORIG_PATH="$5" + +remove_overlay() { + if test -e "$SNAP_ORIG_PATH/.overlay_$SNAP_ID" + then + LODEV=`losetup -j "$SNAP_ORIG_PATH/.overlay_$SNAP_ID" | cut -d':' -f1` + if [ "x$LODEV" != x ] + then + losetup -d $LODEV + fi + rm "$SNAP_ORIG_PATH/.overlay_$SNAP_ID" + fi +} + +if ! test -e $SNAP_MOUNTPOINT +then + echo "Snapshot at $SNAP_MOUNTPOINT was already removed" + [ ! -e "$SNAP_ORIG_PATH/.datto_$SNAP_ID" ] || rm "$SNAP_ORIG_PATH/.datto_$SNAP_ID" + [ ! -e "${SNAP_MOUNTPOINT}-num" ] || rm "${SNAP_MOUNTPOINT}-num" + remove_overlay + exit 0 +fi + +if ! df -T -P | egrep " ${SNAP_MOUNTPOINT}\$" > /dev/null 2>&1 +then + echo "Snapshot is not mounted. Already removed" + rm "${SNAP_MOUNTPOINT}-num" + rmdir "${SNAP_MOUNTPOINT}" + [ ! -e "$SNAP_ORIG_PATH/.datto_$SNAP_ID" ] || rm "$SNAP_ORIG_PATH/.datto_$SNAP_ID" + remove_overlay + exit 0 +fi + +NUM=`cat "${SNAP_MOUNTPOINT}-num"` || true + +if [ "x$NUM" = "x" ] +then + echo "Cannot get device number from ${SNAP_MOUNTPOINT}-num" + exit 1 +fi + +echo "Unmounting /dev/datto$NUM at /mnt/urbackup_snaps/$SNAP_ID..." + +if ! umount /mnt/urbackup_snaps/$SNAP_ID +then + lsof | grep /mnt/urbackup_snaps/$SNAP_ID || true + echo "Unmounting /mnt/urbackup_snaps/$SNAP_ID failed. Retrying in 10s..." + sleep 10 + umount /mnt/urbackup_snaps/$SNAP_ID +fi + + +rm "${SNAP_MOUNTPOINT}-num" +rmdir "${SNAP_MOUNTPOINT}" + +echo "Removing devicemapper snapshot..." + +dmsetup remove "wsnap-$SNAP_ID" + +remove_overlay + +echo "Destroying dattobd snapshot /dev/datto$NUM..." + +dbdctl destroy $NUM + +[ ! -e "$SNAP_ORIG_PATH/.datto_$SNAP_ID" ] || rm "$SNAP_ORIG_PATH/.datto_$SNAP_ID" + +exit 0
\ No newline at end of file |