diff options
-rw-r--r-- | shlibs/mount/docs/libmount-sections.txt | 4 | ||||
-rw-r--r-- | shlibs/mount/samples/mount.c | 2 | ||||
-rw-r--r-- | shlibs/mount/src/context.c | 4 | ||||
-rw-r--r-- | shlibs/mount/src/context_mount.c | 58 | ||||
-rw-r--r-- | shlibs/mount/src/libmount.h.in | 2 | ||||
-rw-r--r-- | shlibs/mount/src/libmount.sym | 2 |
6 files changed, 38 insertions, 34 deletions
diff --git a/shlibs/mount/docs/libmount-sections.txt b/shlibs/mount/docs/libmount-sections.txt index 8a3a7d22b..d351aab53 100644 --- a/shlibs/mount/docs/libmount-sections.txt +++ b/shlibs/mount/docs/libmount-sections.txt @@ -211,8 +211,12 @@ mnt_context_set_source mnt_context_set_target mnt_context_set_user_mflags mnt_context_strerror +mnt_context_mount mnt_free_context mnt_new_context mnt_reset_context +mnt_context_prepare_mount +mnt_context_do_mount +mnt_context_finalize_mount </SECTION> diff --git a/shlibs/mount/samples/mount.c b/shlibs/mount/samples/mount.c index 5e87d88db..8095ffccb 100644 --- a/shlibs/mount/samples/mount.c +++ b/shlibs/mount/samples/mount.c @@ -409,7 +409,7 @@ int main(int argc, char **argv) if (lock) atexit(lock_atexit_cleanup); - rc = mnt_mount_context(cxt); + rc = mnt_context_mount(cxt); if (rc) { /* TODO: call mnt_context_strerror() */ rc = EX_FAIL; diff --git a/shlibs/mount/src/context.c b/shlibs/mount/src/context.c index 676552bf1..de852a3af 100644 --- a/shlibs/mount/src/context.c +++ b/shlibs/mount/src/context.c @@ -1486,7 +1486,7 @@ int mnt_context_get_status(struct libmnt_context *cxt) * @status: mount(2) return code * * This function should be used if [u]mount(2) syscall was NOT called by - * libmount (mnt_mount_context() or mnt_context_do_mount()) only. + * libmount (mnt_context_mount() or mnt_context_do_mount()) only. * * Returns: 0 or negative number in case of error. */ @@ -1586,7 +1586,7 @@ int test_mount(struct libmnt_test *ts, int argc, char *argv[]) if (lock) atexit(lock_fallback); - rc = mnt_mount_context(cxt); + rc = mnt_context_mount(cxt); if (rc) printf("failed to mount %s\n", strerror(errno)); else diff --git a/shlibs/mount/src/context_mount.c b/shlibs/mount/src/context_mount.c index 8c764078d..7f6847277 100644 --- a/shlibs/mount/src/context_mount.c +++ b/shlibs/mount/src/context_mount.c @@ -496,7 +496,6 @@ int mnt_context_prepare_mount(struct libmnt_context *cxt) return -EINVAL; if (!mnt_fs_get_source(cxt->fs) && !mnt_fs_get_target(cxt->fs)) return -EINVAL; - if (cxt->flags & MNT_FL_PREPARED) return 0; @@ -546,6 +545,7 @@ int mnt_context_do_mount(struct libmnt_context *cxt) assert(cxt->syscall_status == 1); assert((cxt->flags & MNT_FL_MOUNTFLAGS_MERGED)); assert((cxt->flags & MNT_FL_PREPARED)); + assert((cxt->action == MNT_ACT_MOUNT)); DBG(CXT, mnt_debug_h(cxt, "mount: do mount")); @@ -560,12 +560,36 @@ int mnt_context_do_mount(struct libmnt_context *cxt) } /** - * mnt_mount_context: + * mnt_context_finalize_mount: + * @cxt: context + * + * Mtab update, etc. Unnecessary for mnt_context_mount(), but should be called + * after mnt_context_do_mount(). See also mnt_context_set_syscall_status(). + * + * Returns: negative number on error, 0 on success. + */ +int mnt_context_finalize_mount(struct libmnt_context *cxt) +{ + int rc; + + assert(cxt); + assert(cxt->fs); + assert((cxt->flags & MNT_FL_MOUNTFLAGS_MERGED)); + assert((cxt->flags & MNT_FL_PREPARED)); + + rc = mnt_context_prepare_update(cxt); + if (!rc) + rc = mnt_context_update_tabs(cxt);; + return rc; +} + +/** + * mnt_context_mount: * @cxt: mount context * - * Mount filesystem by mount(2) or fork()+exec(/sbin/mount.type). + * High-level, mounts filesystem by mount(2) or fork()+exec(/sbin/mount.type). * - * This is top-level function for FS mounting, similar to: + * This is similar to: * * mnt_context_prepare_mount(cxt); * mnt_context_do_mount(cxt); @@ -577,7 +601,7 @@ int mnt_context_do_mount(struct libmnt_context *cxt) * does not mean that mount(2) syscall or mount.type helper wasn't * sucessfully called. Check mnt_context_get_status() after error! */ -int mnt_mount_context(struct libmnt_context *cxt) +int mnt_context_mount(struct libmnt_context *cxt) { int rc; @@ -601,27 +625,3 @@ int mnt_mount_context(struct libmnt_context *cxt) return rc; } -/** - * mnt_context_finalize_mount: - * @cxt: context - * - * Mtab update, etc. Unnecessary for mnt_context_mount(), but should be called - * after mnt_context_do_mount(). See also mnt_context_set_syscall_status(). - * - * Returns: negative number on error, 0 on success. - */ -int mnt_context_finalize_mount(struct libmnt_context *cxt) -{ - int rc; - - assert(cxt); - assert(cxt->fs); - assert((cxt->flags & MNT_FL_MOUNTFLAGS_MERGED)); - assert((cxt->flags & MNT_FL_PREPARED)); - - rc = mnt_context_prepare_update(cxt); - if (!rc) - rc = mnt_context_update_tabs(cxt);; - return rc; -} - diff --git a/shlibs/mount/src/libmount.h.in b/shlibs/mount/src/libmount.h.in index 153b28aec..9870ba792 100644 --- a/shlibs/mount/src/libmount.h.in +++ b/shlibs/mount/src/libmount.h.in @@ -416,7 +416,7 @@ extern int mnt_context_get_status(struct libmnt_context *cxt); extern int mnt_context_strerror(struct libmnt_context *cxt, char *buf, size_t bufsiz); -extern int mnt_mount_context(struct libmnt_context *cxt); +extern int mnt_context_mount(struct libmnt_context *cxt); extern int mnt_context_prepare_mount(struct libmnt_context *cxt); extern int mnt_context_do_mount(struct libmnt_context *cxt); diff --git a/shlibs/mount/src/libmount.sym b/shlibs/mount/src/libmount.sym index 160174ea0..47488b512 100644 --- a/shlibs/mount/src/libmount.sym +++ b/shlibs/mount/src/libmount.sym @@ -133,7 +133,7 @@ global: mnt_mangle; mnt_match_fstype; mnt_match_options; - mnt_mount_context; + mnt_context_mount; mnt_new_cache; mnt_new_context; mnt_new_fs; |