From c3aa75c5a73bed12f44d863618cabef780f5f5bd Mon Sep 17 00:00:00 2001 From: Adam Mills Date: Thu, 28 Jul 2016 14:25:20 -0400 Subject: [PATCH] nuke-graph-directory.sh: Improve subvolume search This change allows btrfs subvolumes to be found in additional system configurations. The old logic failed to correctly identify subvolumes when the root fs was mounted as a subvolume that was not the btrfs filesystem root. Signed-off-by: Adam Mills --- contrib/nuke-graph-directory.sh | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/contrib/nuke-graph-directory.sh b/contrib/nuke-graph-directory.sh index 99b527de15..c8a6798789 100755 --- a/contrib/nuke-graph-directory.sh +++ b/contrib/nuke-graph-directory.sh @@ -51,13 +51,10 @@ done # now, let's go destroy individual btrfs subvolumes, if any exist if command -v btrfs > /dev/null 2>&1; then - root="$(df "$dir" | awk 'NR>1 { print $NF }')" - root="${root%/}" # if root is "/", we want it to become "" - for subvol in $(btrfs subvolume list -o "$root/" 2>/dev/null | awk -F' path ' '{ print $2 }' | sort -r); do - subvolDir="$root/$subvol" - if dir_in_dir "$subvolDir" "$dir"; then - ( set -x; btrfs subvolume delete "$subvolDir" ) - fi + # Find btrfs subvolumes under $dir checking for inode 256 + # Source: http://stackoverflow.com/a/32865333 + for subvol in $(find "$dir" -type d -inum 256 | sort -r); do + ( set -x; btrfs subvolume delete "$subvol" ) done fi