[lxc-devel] [PATCH] if the rootfs is a btrfs subvolume, delete it instead of rm -rf

Dwight Engen dwight.engen at oracle.com
Wed Sep 26 16:59:28 UTC 2012


Check if the rootfs is btrfs subvolume, and if so delete it. Otherwise
fall back to the rm -rf.

Signed-off-by: Dwight Engen <dwight.engen at oracle.com>
---
 src/lxc/lxc-destroy.in |   13 +++++++++----
 1 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/src/lxc/lxc-destroy.in b/src/lxc/lxc-destroy.in
index 5c76569..1ea4a81 100644
--- a/src/lxc/lxc-destroy.in
+++ b/src/lxc/lxc-destroy.in
@@ -106,8 +106,8 @@ if [ $? -eq 0 ]; then
 fi
 
 # Deduce the type of rootfs
-# If LVM partition, destroy it.  If anything else, ignore it.  We'll support
-# deletion of others later.
+# If LVM partition, destroy it. For btrfs, we delete the subvolue. If anything
+# else, ignore it. We'll support deletion of others later.
 rootdev=`grep lxc.rootfs $lxc_path/$lxc_name/config 2>/dev/null | sed -e 's/^[^/]*/\//'`
 if [ -n "$rootdev" ]; then
 	if [ -b "$rootdev" ]; then
@@ -117,8 +117,13 @@ if [ -n "$rootdev" ]; then
 			lvremove -f $rootdev
 		fi
 	elif [ -h "$rootdev" -o -d "$rootdev" ]; then
-		# In case rootfs is not under $lxc_path/$lxc_name, remove it
-		rm -rf --one-file-system --preserve-root $rootdev
+		if which btrfs >/dev/null 2>&1 &&
+		   btrfs subvolume list "$rootdev" >/dev/null 2>&1; then
+			btrfs subvolume delete "$rootdev"
+		else
+			# In case rootfs is not under $lxc_path/$lxc_name, remove it
+			rm -rf --one-file-system --preserve-root $rootdev
+		fi
 	fi
 fi
 
-- 
1.7.1





More information about the lxc-devel mailing list