From 8ba6dc5e536dd6dbbd382996d237c72e6e38d7ba Mon Sep 17 00:00:00 2001 From: Oleg Freedhom Date: Sat, 2 Apr 2016 16:18:54 +0000 Subject: [PATCH] fix btrfs_recursive_destroy A change in kernel 4.2 caused btrfs_recursive_destroy to fail to delete unprivileged containers. This patch restores the pre-kernel-4.2 behaviour. Ref: Issue 935. Signed-off-by: Oleg Freedhom --- src/lxc/bdev/lxcbtrfs.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/lxc/bdev/lxcbtrfs.c b/src/lxc/bdev/lxcbtrfs.c index 379a546d9..6b06cfd35 100644 --- a/src/lxc/bdev/lxcbtrfs.c +++ b/src/lxc/bdev/lxcbtrfs.c @@ -616,8 +616,13 @@ static int btrfs_recursive_destroy(const char *path) ret = ioctl(fd, BTRFS_IOC_TREE_SEARCH, &args); if (ret < 0) { close(fd); - ERROR("Error: can't perform the search under %s\n", path); free_btrfs_tree(tree); + if (errno == EPERM || errno == EACCES) { + WARN("Warn: can't perform the search under %s. Will simply try removing", path); + goto ignore_search; + } + + ERROR("Error: can't perform the search under %s\n", path); return -1; } if (sk->nr_items == 0)