From 5a0696ce7db2555e5b8805092c8837432614d030 Mon Sep 17 00:00:00 2001 From: fanyong Date: Sun, 15 Oct 2006 10:30:56 +0000 Subject: [PATCH] Initialize obd_lvfs_ctxt correctly. Fix "ASSERTION(atomic_read(&new_ctx->pwd->d_count))" for rmtacl. --- lustre/mdt/mdt_handler.c | 12 ++++++++++-- lustre/mdt/mdt_recovery.c | 10 +--------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/lustre/mdt/mdt_handler.c b/lustre/mdt/mdt_handler.c index 493f441..6414f5f 100644 --- a/lustre/mdt/mdt_handler.c +++ b/lustre/mdt/mdt_handler.c @@ -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); } diff --git a/lustre/mdt/mdt_recovery.c b/lustre/mdt/mdt_recovery.c index 0e963c1..393609e7 100644 --- a/lustre/mdt/mdt_recovery.c +++ b/lustre/mdt/mdt_recovery.c @@ -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); } -- 1.8.3.1