[arch-projects] [devtools][PATCH 04/13] lib/archroot.sh: subvolume_delete_recursive: support arbitrary recursion

Luke Shumaker lukeshu at parabola.nu
Fri May 5 22:41:01 UTC 2017


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.
---
 lib/archroot.sh | 9 ++++++---
 1 file 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
 }
-- 
2.12.2


More information about the arch-projects mailing list