diff options
author | Luke Shumaker <lukeshu@parabola.nu> | 2017-05-05 18:41:01 -0400 |
---|---|---|
committer | Erich Eckner <git@eckner.net> | 2017-07-14 06:54:28 +0200 |
commit | b57354ee086c03ce7aacf485850997c37f13baea (patch) | |
tree | b0edcd93edc8cb26b73d05674430cf9ed761eb74 /lib/archroot.sh | |
parent | e9e3fc8b50b1b492f0ee77bd503a729bfc2c98fe (diff) | |
download | devtools32-b57354ee086c03ce7aacf485850997c37f13baea.tar.xz |
lib/archroot.sh: subvolume_delete_recursive: support arbitrary recursion
The `-xdev` flag to `find` makes it not recurse over subvolumes; so it only
supports recursion with depth=1. Fix this by having the function
recursively call itself.
Diffstat (limited to 'lib/archroot.sh')
-rw-r--r-- | lib/archroot.sh | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/lib/archroot.sh b/lib/archroot.sh index 6b1b52e..3a1023e 100644 --- a/lib/archroot.sh +++ b/lib/archroot.sh @@ -52,11 +52,14 @@ subvolume_delete_recursive() { is_subvolume "$1" || return 0 while IFS= read -d $'\0' -r subvol; do - if ! btrfs subvolume delete "$subvol" &>/dev/null; then - error "Unable to delete subvolume %s" "$subvol" + if ! subvolume_delete_recursive "$subvol"; then return 1 fi - done < <(find "$1" -xdev -depth -inum 256 -print0) + done < <(find "$1" -mindepth 1 -xdev -depth -inum 256 -print0) + if ! btrfs subvolume delete "$1" &>/dev/null; then + error "Unable to delete subvolume %s" "$subvol" + return 1 + fi return 0 } |