]> err.no Git - util-linux/commitdiff
libmount: add new debug messages, fix umount return code
authorKarel Zak <kzak@redhat.com>
Tue, 23 Nov 2010 11:21:12 +0000 (12:21 +0100)
committerKarel Zak <kzak@redhat.com>
Mon, 3 Jan 2011 11:28:46 +0000 (12:28 +0100)
Signed-off-by: Karel Zak <kzak@redhat.com>
shlibs/mount/src/context.c
shlibs/mount/src/context_umount.c

index 3ab5a73789a2bfa4662b84080ae7ab4e5ecd652d..923d719189cac4758802f6cd7997acfc6fa925dc 100644 (file)
@@ -1079,13 +1079,22 @@ int mnt_context_update_tabs(mnt_context *cxt)
 
        assert(cxt);
 
-       if ((cxt->flags & MNT_FL_NOMTAB) && cxt->helper)
+       if (cxt->flags & MNT_FL_NOMTAB) {
+               DBG(CXT, mnt_debug_h(cxt, "don't update: NOMTAB flag"));
                return 0;
-       if (!cxt->update || !mnt_update_is_ready(cxt->update))
+       }
+       if (cxt->helper) {
+               DBG(CXT, mnt_debug_h(cxt, "don't update: external helper"));
                return 0;
-       if (cxt->syscall_status)
+       }
+       if (!cxt->update || !mnt_update_is_ready(cxt->update)) {
+               DBG(CXT, mnt_debug_h(cxt, "don't update: no update prepared"));
                return 0;
-
+       }
+       if (cxt->syscall_status) {
+               DBG(CXT, mnt_debug_h(cxt, "don't update: syscall failed"));
+               return 0;
+       }
        if (mnt_update_is_userspace_only(cxt->update))
                filename = cxt->utab_path;
        else {
index 87a0bc8ef4371b303a291ca4fc7a814b771aaf6a..00bad1091270c07e921a4db84909732614fd48a9 100644 (file)
@@ -31,6 +31,8 @@ static int lookup_umount_fs(mnt_context *cxt)
        assert(cxt);
        assert(cxt->fs);
 
+       DBG(CXT, mnt_debug_h(cxt, "umount: lookup FS"));
+
        tgt = mnt_fs_get_target(cxt->fs);
        if (!tgt) {
                DBG(CXT, mnt_debug_h(cxt, "umount: undefined target"));
@@ -409,6 +411,7 @@ static int do_umount(mnt_context *cxt)
                                        -cxt->syscall_status));
                return -cxt->syscall_status;
        }
+       cxt->syscall_status = 0;
        DBG(CXT, mnt_debug_h(cxt, "umount(2) success"));
        return 0;
 }
@@ -474,6 +477,8 @@ int mnt_context_do_umount(mnt_context *cxt)
                const char *o = mnt_fs_get_optstr(cxt->fs);
                char *n = o ? strdup(o) : NULL;
 
+               DBG(CXT, mnt_debug_h(cxt, "fix remount-on-umount update"));
+
                if (n)
                        mnt_optstr_remove_option(&n, "rw");
                rc = mnt_optstr_prepend_option(&n, "ro", NULL);