From 3a6ba6b0af4d8ee3a4b161a9a3da456aafb18113 Mon Sep 17 00:00:00 2001 From: Ralf Zerres Date: Fri, 21 Dec 2018 16:14:21 +0100 Subject: [PATCH] dsnap-sync: improve error handling in verify_snapper_structure() - snapshot path needs to be a btrfs inode Signed-off-by: Ralf Zerres --- bin/dsnap-sync | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/bin/dsnap-sync b/bin/dsnap-sync index cc33aac..17e6c0b 100755 --- a/bin/dsnap-sync +++ b/bin/dsnap-sync @@ -2893,9 +2893,9 @@ verify_snapper_structure () { else cmd="$ssh chmod 0700 $backup_root" ret=$(eval $cmd) - if [ $ret -eq 1 ]; then - printf "${RED}Error: ${MAGENTA}Changing directory-mode for BTRFS subvolume (backup-root) ${GREEN}%s:%s${MAGENTA} failed.${NO_COLOR}\n" \ - "$remote_host" "$backup_root" + if [ $? -ne 0 ]; then + printf "${RED}Error: ${MAGENTA}Changing directory-mode for BTRFS subvolume (backup-root) ${GREEN}%s:%s${MAGENTA} failed. Return-Code: '%s'${NO_COLOR}\n" \ + "$remote_host" "$backup_root" "$ret" return 1 fi fi @@ -2984,9 +2984,9 @@ verify_snapper_structure () { fi cmd="$ssh btrfs subvolume create $backup_root/$snapper_snapshots 2>/dev/null" ret=$(eval $cmd) - if [ $? -ne 0 ] && [ $ret -ne 256 ]; then + if [ $? -ne 0 ]]; then printf "${RED}Error: ${MAGENTA}Creation of snapper subvolume ${GREEN}%s${MAGENTA} failed${NO_COLOR}\n" \ - "$backup_root/$snapper_snapshots" + "$backup_root/$snapper_snapshots" return 1 fi else @@ -3016,7 +3016,6 @@ verify_snapper_structure () { printf "${MAGENTA}Create${NO_COLOR} path ${GREEN}'%s'${NO_COLOR} to store target snapshot.\n" \ "$backup_root/$snapper_snapshots/$snapper_id" fi - ret=$(eval $ssh mkdir --mode=0700 \ $backup_root/$snapper_snapshots/$snapper_id) if [ $? -ne 0 ]; then @@ -3027,16 +3026,15 @@ verify_snapper_structure () { else cmd="$ssh stat --format %i $backup_root/$snapper_snapshots/$snapper_id/$snapper_snapshot_name 2>/dev/null" ret=$(eval $cmd) - if [ $? -eq 0 ] && [ $ret -eq 256 ]; then - # a former btrfs snapshot already exists + if [ $? -eq 0 ] && [ $ret -ne 256 ]; then + # a snapshot path exists, but is not a btrfs snapshot if [ -z "$remote" ]; then - printf "${RED}Cancel snapshot creation${NO_COLOR}: Former snapshot with id ${GREEN}'%s'${NO_COLOR} already exist in ${BLUE}'%s'${NO_COLOR}\n" \ + printf "${RED}Cancel snapshot creation${NO_COLOR}: Directory with id ${GREEN}'%s'${NO_COLOR} already exist in ${BLUE}'%s'${NO_COLOR}, but isn't a btrfs snapshot\n" \ "$snapper_id" "$backup_root/$snapper_snapshots" else - printf "${RED}Cancel snapshot creation${NO_COLOR}: Former snapshot with id ${GREEN}'%s'${NO_COLOR} already exists on ${BLUE}'%s'${NO_COLOR} in ${BLUE}'%s'${NO_COLOR}\n" \ + printf "${RED}Cancel snapshot creation${NO_COLOR}: Directory with id ${GREEN}'%s'${NO_COLOR} already exists on ${BLUE}'%s'${NO_COLOR} in ${BLUE}'%s'${NO_COLOR}, but isn't a btrfs snapshot\n" \ "$snapper_id" "$remote" "$backup_root/$snapper_snapshots" fi - # cleanup generated snapper entry check_snapper_failed_ids $selected_config $batch return 1