summaryrefslogtreecommitdiffstats
path: root/shlibs/mount/src/context.c
diff options
context:
space:
mode:
authorKarel Zak2010-10-12 16:17:16 +0200
committerKarel Zak2011-01-03 12:28:45 +0100
commit1b56aae848a7b579b1841b6ec1e47f61f9fa2af7 (patch)
tree3f382b331832799f6db74b0fffb0860de625e519 /shlibs/mount/src/context.c
parentlibmount: add umount(2) support (diff)
downloadkernel-qcow2-util-linux-1b56aae848a7b579b1841b6ec1e47f61f9fa2af7.tar.gz
kernel-qcow2-util-linux-1b56aae848a7b579b1841b6ec1e47f61f9fa2af7.tar.xz
kernel-qcow2-util-linux-1b56aae848a7b579b1841b6ec1e47f61f9fa2af7.zip
libmount: improve assert() and DBG() usage
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'shlibs/mount/src/context.c')
-rw-r--r--shlibs/mount/src/context.c53
1 files changed, 50 insertions, 3 deletions
diff --git a/shlibs/mount/src/context.c b/shlibs/mount/src/context.c
index 08d4e1e86..863003926 100644
--- a/shlibs/mount/src/context.c
+++ b/shlibs/mount/src/context.c
@@ -818,16 +818,22 @@ int mnt_context_prepare_srcpath(mnt_context *cxt)
const char *t, *v, *src;
int rc = 0;
+ assert(cxt);
+ assert(cxt->fs);
+ assert((cxt->flags & MNT_FL_MOUNTFLAGS_MERGED));
+
if (!cxt || !cxt->fs)
return -EINVAL;
+ DBG(CXT, mnt_debug_h(cxt, "preparing source path"));
+
src = mnt_fs_get_source(cxt->fs);
/* ignore filesystems without a real source */
if (!src || (cxt->fs->flags & (MNT_FS_PSEUDO | MNT_FS_NET)))
return 0;
- DBG(CXT, mnt_debug_h(cxt, "preparing srcpath '%s'", src));
+ DBG(CXT, mnt_debug_h(cxt, "srcpath '%s'", src));
cache = mnt_context_get_cache(cxt);
type = mnt_fs_get_fstype(cxt->fs);
@@ -882,6 +888,10 @@ int mnt_context_guess_fstype(mnt_context *cxt)
const char *dev;
int rc = -EINVAL;
+ assert(cxt);
+ assert(cxt->fs);
+ assert((cxt->flags & MNT_FL_MOUNTFLAGS_MERGED));
+
if (!cxt || !cxt->fs)
return -EINVAL;
@@ -945,6 +955,7 @@ int mnt_context_prepare_helper(mnt_context *cxt, const char *name,
assert(cxt);
assert(cxt->fs);
+ assert((cxt->flags & MNT_FL_MOUNTFLAGS_MERGED));
if (!type)
type = mnt_fs_get_fstype(cxt->fs);
@@ -989,6 +1000,30 @@ int mnt_context_prepare_helper(mnt_context *cxt, const char *name,
return 0;
}
+int mnt_context_merge_mountflags(mnt_context *cxt)
+{
+ unsigned long fl = 0;
+ int rc;
+
+ assert(cxt);
+
+ DBG(CXT, mnt_debug_h(cxt, "merging mount flags"));
+
+ rc = mnt_context_get_mountflags(cxt, &fl);
+ if (rc)
+ return rc;
+ cxt->mountflags = fl;
+
+ fl = 0;
+ rc = mnt_context_get_userspace_mountflags(cxt, &fl);
+ if (rc)
+ return rc;
+ cxt->user_mountflags = fl;
+
+ cxt->flags |= MNT_FL_MOUNTFLAGS_MERGED;
+ return 0;
+}
+
/*
* Prepare /etc/mtab or /var/run/mount/mountinfo update
*/
@@ -997,6 +1032,10 @@ int mnt_context_prepare_update(mnt_context *cxt, int act)
int rc;
const char *tgt = cxt->fs ? mnt_fs_get_target(cxt->fs) : NULL;
+ assert(cxt);
+ assert(cxt->fs);
+ assert((cxt->flags & MNT_FL_MOUNTFLAGS_MERGED));
+
if (act == MNT_ACT_UMOUNT && tgt && !strcmp(tgt, "/"))
/* Don't try to touch mtab if umounting root FS */
cxt->flags |= MNT_FL_NOMTAB;
@@ -1047,6 +1086,9 @@ static int apply_tab(mnt_context *cxt, mnt_tab *tb, int direction)
const char *src = NULL, *tgt = NULL;
int rc;
+ assert(cxt);
+ assert(cxt->fs);
+
if (!cxt->fs)
return -EINVAL;
@@ -1107,12 +1149,17 @@ int mnt_context_apply_fstab(mnt_context *cxt)
mnt_tab *fstab, *mtab;
const char *src = NULL, *tgt = NULL;
+ assert(cxt);
+ assert(cxt->fs);
+
if (!cxt || !cxt->fs)
return -EINVAL;
if (cxt->flags & MNT_FL_TAB_APPLIED)
return 0;
+ DBG(CXT, mnt_debug_h(cxt, "appling fstab"));
+
if (cxt->fs) {
src = mnt_fs_get_source(cxt->fs);
tgt = mnt_fs_get_target(cxt->fs);
@@ -1209,7 +1256,7 @@ int test_mount(struct mtest *ts, int argc, char *argv[])
if (rc)
printf("failed to mount\n");
else {
- printf("successfully mounted");
+ printf("successfully mounted\n");
rc = mnt_context_post_mount(cxt);
if (rc)
printf("mtab update failed\n");
@@ -1272,7 +1319,7 @@ int test_umount(struct mtest *ts, int argc, char *argv[])
if (rc)
printf("failed to umount\n");
else {
- printf("successfully umounted");
+ printf("successfully umounted\n");
rc = mnt_context_post_umount(cxt);
if (rc)
printf("mtab update failed\n");