From: Oleg Freedholm Date: Sun, 3 Apr 2016 15:15:58 +0000 (+1000) Subject: store errno immediately after ioctl X-Git-Tag: lxc-2.0.0~10^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F936%2Fhead;p=thirdparty%2Flxc.git store errno immediately after ioctl Signed-off-by: Oleg Freedholm --- diff --git a/src/lxc/bdev/lxcbtrfs.c b/src/lxc/bdev/lxcbtrfs.c index 6b06cfd35..5ee6dd340 100644 --- a/src/lxc/bdev/lxcbtrfs.c +++ b/src/lxc/bdev/lxcbtrfs.c @@ -568,7 +568,7 @@ static int btrfs_recursive_destroy(const char *path) struct btrfs_ioctl_search_header sh; struct btrfs_root_ref *ref; struct my_btrfs_tree *tree; - int ret, i; + int ret, e, i; unsigned long off = 0; int name_len; char *name; @@ -582,8 +582,9 @@ static int btrfs_recursive_destroy(const char *path) } if (btrfs_list_get_path_rootid(fd, &root_id)) { + e = errno; close(fd); - if (errno == EPERM || errno == EACCES) { + if (e == EPERM || e == EACCES) { WARN("Will simply try removing"); goto ignore_search; } @@ -614,10 +615,11 @@ static int btrfs_recursive_destroy(const char *path) while(1) { ret = ioctl(fd, BTRFS_IOC_TREE_SEARCH, &args); + e = errno; if (ret < 0) { close(fd); free_btrfs_tree(tree); - if (errno == EPERM || errno == EACCES) { + if (e == EPERM || e == EACCES) { WARN("Warn: can't perform the search under %s. Will simply try removing", path); goto ignore_search; }