summaryrefslogtreecommitdiffstats
path: root/libmount/src/context_loopdev.c
diff options
context:
space:
mode:
authorVaclav Dolezal2018-04-11 15:52:52 +0200
committerKarel Zak2018-06-11 16:12:55 +0200
commitcddd2eaa27c0c35b1a3bfbe7f76a1c7c1ea46517 (patch)
treeeebbe85cc140c70e7ddf40a1b1def6d7d7c913dd /libmount/src/context_loopdev.c
parentlibmount: support for namespaces for helpers (diff)
downloadkernel-qcow2-util-linux-cddd2eaa27c0c35b1a3bfbe7f76a1c7c1ea46517.tar.gz
kernel-qcow2-util-linux-cddd2eaa27c0c35b1a3bfbe7f76a1c7c1ea46517.tar.xz
kernel-qcow2-util-linux-cddd2eaa27c0c35b1a3bfbe7f76a1c7c1ea46517.zip
libmount: switch namespace when appropriate
Signed-off-by: Vaclav Dolezal <vdolezal@redhat.com>
Diffstat (limited to 'libmount/src/context_loopdev.c')
-rw-r--r--libmount/src/context_loopdev.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/libmount/src/context_loopdev.c b/libmount/src/context_loopdev.c
index b1608dd45..05ff71ae7 100644
--- a/libmount/src/context_loopdev.c
+++ b/libmount/src/context_loopdev.c
@@ -89,6 +89,7 @@ is_mounted_same_loopfile(struct libmnt_context *cxt,
struct libmnt_cache *cache;
const char *bf;
int rc = 0;
+ struct libmnt_ns *ns_old;
assert(cxt);
assert(cxt->fs);
@@ -97,6 +98,10 @@ is_mounted_same_loopfile(struct libmnt_context *cxt,
if (mnt_context_get_mtab(cxt, &tb))
return 0;
+ ns_old = mnt_context_switch_target_ns(cxt);
+ if (!ns_old)
+ return -MNT_ERR_NAMESPACE;
+
DBG(LOOP, ul_debugobj(cxt, "checking if %s mounted on %s",
backing_file, target));
@@ -132,6 +137,9 @@ is_mounted_same_loopfile(struct libmnt_context *cxt,
}
if (rc)
DBG(LOOP, ul_debugobj(cxt, "%s already mounted", backing_file));
+
+ if (!mnt_context_switch_ns(cxt, ns_old))
+ return -MNT_ERR_NAMESPACE;
return rc;
}