From a047b693a70a97f21f0326f1563c76b934851b48 Mon Sep 17 00:00:00 2001 From: Marius van Witzenburg Date: Fri, 14 Jul 2017 16:27:45 +0200 Subject: [PATCH] Fixed zfs_get_snapshots hang when filesystems is an empty list --- zfs_autobackup | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/zfs_autobackup b/zfs_autobackup index 4fe251b..0b6091a 100755 --- a/zfs_autobackup +++ b/zfs_autobackup @@ -164,26 +164,27 @@ return[filesystem_name]=[ "snashot1", "snapshot2", ... ] """ def zfs_get_snapshots(ssh_to, filesystems, backup_name): - snapshots=run(ssh_to=ssh_to, input="\0".join(filesystems), valid_exitcodes=[ 0,1 ], cmd= - [ "xargs", "-0", "-n", "1", "zfs", "list", "-d", "1", "-r", "-t" ,"snapshot", "-H", "-o", "name" ] - ) + if filesystems: + snapshots=run(ssh_to=ssh_to, input="\0".join(filesystems), valid_exitcodes=[ 0,1 ], cmd= + [ "xargs", "-0", "-n", "1", "zfs", "list", "-d", "1", "-r", "-t" ,"snapshot", "-H", "-o", "name" ] + ) - ret={} - for snapshot in snapshots: - (filesystem, snapshot_name)=snapshot.split("@") - if re.match("^"+backup_name+"-[0-9]*$", snapshot_name): - if not filesystem in ret: - ret[filesystem]=[] - ret[filesystem].append(snapshot_name) + ret={} + for snapshot in snapshots: + (filesystem, snapshot_name)=snapshot.split("@") + if re.match("^"+backup_name+"-[0-9]*$", snapshot_name): + if not filesystem in ret: + ret[filesystem]=[] + ret[filesystem].append(snapshot_name) - #also add any test-snapshots that where created with --test mode - if args.test: - if ssh_to in test_snapshots: - for filesystem in filesystems: - if filesystem in test_snapshots[ssh_to]: - if not filesystem in ret: - ret[filesystem]=[] - ret[filesystem].extend(test_snapshots[ssh_to][filesystem]) + #also add any test-snapshots that where created with --test mode + if args.test: + if ssh_to in test_snapshots: + for filesystem in filesystems: + if filesystem in test_snapshots[ssh_to]: + if not filesystem in ret: + ret[filesystem]=[] + ret[filesystem].extend(test_snapshots[ssh_to][filesystem]) return(ret)