Whamcloud - gitweb
Initialize obd_lvfs_ctxt correctly.
authorfanyong <fanyong>
Sun, 15 Oct 2006 10:30:56 +0000 (10:30 +0000)
committerfanyong <fanyong>
Sun, 15 Oct 2006 10:30:56 +0000 (10:30 +0000)
Fix "ASSERTION(atomic_read(&new_ctx->pwd->d_count))" for rmtacl.

lustre/mdt/mdt_handler.c
lustre/mdt/mdt_recovery.c

index 493f441..6414f5f 100644 (file)
@@ -3280,6 +3280,7 @@ static int mdt_init0(const struct lu_env *env, struct mdt_device *m,
         const char                *num = lustre_cfg_string(cfg, 2);
         struct lustre_mount_info  *lmi;
         struct lustre_sb_info     *lsi;
+        struct vfsmount           *mnt;
         struct lu_site            *s;
         int                        rc;
         ENTRY;
@@ -3299,11 +3300,18 @@ static int mdt_init0(const struct lu_env *env, struct mdt_device *m,
         m->mdt_opts.mo_acl = 0;
         lmi = server_get_mount_2(dev);
         if (lmi == NULL) {
-                CERROR("Cannot get mount info for %s! "
-                       "set mdt_opts by default!\n", dev);
+                CERROR("Cannot get mount info for %s!\n", dev);
+                RETURN(-EFAULT);
         } else {
                 lsi = s2lsi(lmi->lmi_sb);
                 fsoptions_to_mdt_flags(m, lsi->lsi_lmd->lmd_opts);
+
+                mnt = lmi->lmi_mnt;
+                OBD_SET_CTXT_MAGIC(&obd->obd_lvfs_ctxt);
+                obd->obd_lvfs_ctxt.pwdmnt = mnt;
+                obd->obd_lvfs_ctxt.pwd = mnt->mnt_root;
+                obd->obd_lvfs_ctxt.fs = get_ds();
+
                 server_put_mount_2(dev, lmi->lmi_mnt);
         }
 
index 0e963c1..393609e 100644 (file)
@@ -957,15 +957,7 @@ int mdt_fs_setup(const struct lu_env *env, struct mdt_device *mdt,
                 CERROR("cannot open %s: rc = %d\n", CAPA_KEYS, rc);
         }
 
-        if (rc)
-                RETURN(rc);
-
-        OBD_SET_CTXT_MAGIC(&obd->obd_lvfs_ctxt);
-        obd->obd_lvfs_ctxt.pwdmnt = current->fs->pwdmnt;
-        obd->obd_lvfs_ctxt.pwd = current->fs->pwd;
-        obd->obd_lvfs_ctxt.fs = get_ds();
-
-        RETURN(0);
+        RETURN(rc);
 }