#!/bin/sh set -e SNAP_ID=$1 SNAP_MOUNTPOINT="$2" SNAP_ORIG_PATH="$5" SNAP_ORIG_PATH_SAN=$(echo "$SNAP_ORIG_PATH" | sed 's@/@_@g') CDIR=`dirname $0` get_path() { echo $1/$2 | sed 's@//@/@g' } remove_overlay() { if test -e $(get_path "$SNAP_ORIG_PATH" "/.overlay_2fefd007-3e48-4162-b2c6-45ccdda22f37_$SNAP_ID") then LODEV=`losetup -j $(get_path "$SNAP_ORIG_PATH" "/.overlay_2fefd007-3e48-4162-b2c6-45ccdda22f37_$SNAP_ID") | cut -d':' -f1` if [ "x$LODEV" != x ] then losetup -d $LODEV fi rm $(get_path "$SNAP_ORIG_PATH" "/.overlay_2fefd007-3e48-4162-b2c6-45ccdda22f37_$SNAP_ID") fi } if ! test -e $SNAP_MOUNTPOINT then echo "Snapshot at $SNAP_MOUNTPOINT was already removed" [ ! -e $(get_path "$SNAP_ORIG_PATH" "/.datto_3d41c58e-6724-4d47-8981-11c766a08a24_$SNAP_ID") ] || rm $(get_path "$SNAP_ORIG_PATH" "/.datto_3d41c58e-6724-4d47-8981-11c766a08a24_$SNAP_ID") [ ! -e "${SNAP_MOUNTPOINT}-num" ] || rm "${SNAP_MOUNTPOINT}-num" remove_overlay exit 0 fi TYPE=$(df -T -P | egrep " ${SNAP_MOUNTPOINT}\$" | head -n 1 | tr -s " " | cut -d" " -f2) if [ "x$TYPE" = "x" ] then if btrfs subvolume list -o "$SNAP_MOUNTPOINT" > /dev/null 2>&1 then TYPE="btrfs" fi fi if [ "x$TYPE" = "xbtrfs" ] then $CDIR/btrfs_remove_filesystem_snapshot "$@" exit $? 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 $(get_path "$SNAP_ORIG_PATH" "/.datto_3d41c58e-6724-4d47-8981-11c766a08a24_$SNAP_ID") ] || rm $(get_path "$SNAP_ORIG_PATH" "/.datto_3d41c58e-6724-4d47-8981-11c766a08a24_$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" rm "${SNAP_MOUNTPOINT}-dev" rmdir "${SNAP_MOUNTPOINT}" echo "Removing devicemapper snapshot..." dmsetup remove "wsnap-$SNAP_ID" remove_overlay echo "Transitioning dattobd snapshot /dev/datto$NUM to incremental..." dbdctl transition-to-incremental $NUM exit 0