From 20b398b5c0720af4a44e0fef3db25bcdda157e9b Mon Sep 17 00:00:00 2001 From: tappro Date: Thu, 18 May 2006 13:46:12 +0000 Subject: [PATCH] fix offset, re-enable reint_internal call for IT_OPEN, unpack body only for IT_GETATTR/LOOKUP --- lustre/mdt/mdt_handler.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/lustre/mdt/mdt_handler.c b/lustre/mdt/mdt_handler.c index 7dae8ee..eb5bcb6 100644 --- a/lustre/mdt/mdt_handler.c +++ b/lustre/mdt/mdt_handler.c @@ -213,7 +213,7 @@ static int mdt_getattr_name(struct mdt_thread_info *info, CERROR("Can't unpack name\n"); RETURN(-EFAULT); } - namesize = lustre_msg_buflen(req->rq_reqmsg, offset + 1); + namesize = lustre_msg_buflen(req->rq_reqmsg, offset); result = mdo_lookup(info->mti_ctxt, next, name, &lf); if (result == 0) { @@ -1051,7 +1051,7 @@ static int mdt_intent_policy(struct ldlm_namespace *ns, struct ldlm_lock *lock = *lockp; struct ldlm_intent *it; struct ldlm_reply *rep; - int offset = MDS_REQ_INTENT_REC_OFF + 1; + int offset = MDS_REQ_INTENT_REC_OFF; int rc; int gflags = 0; struct mdt_thread_info *info; @@ -1079,6 +1079,7 @@ static int mdt_intent_policy(struct ldlm_namespace *ns, RETURN(req->rq_status = -EFAULT); } + if (it->opc == IT_GETATTR || it->opc == IT_LOOKUP) { body = info->mti_body = lustre_swab_reqbuf(req, MDS_REQ_INTENT_REC_OFF, sizeof *body, lustre_swab_mdt_body); @@ -1108,7 +1109,7 @@ static int mdt_intent_policy(struct ldlm_namespace *ns, CERROR("Cannot prepare intent info, rc=%u\n", rc); RETURN(req->rq_status = rc); } - + } LDLM_DEBUG(lock, "intent policy, opc: %s", ldlm_it2str(it->opc)); info->mti_rep_buf_nr = 3; info->mti_rep_buf_size[0] = sizeof(*rep); @@ -1130,7 +1131,7 @@ static int mdt_intent_policy(struct ldlm_namespace *ns, switch ((long)it->opc) { case IT_OPEN: case IT_OPEN|IT_CREAT: - //rep->lock_policy_res2 = mdt_reint_internal(info, req, offset); + rep->lock_policy_res2 = mdt_reint_internal(info, req, offset); RETURN(ELDLM_LOCK_ABORTED); break; case IT_GETATTR: @@ -1138,7 +1139,7 @@ static int mdt_intent_policy(struct ldlm_namespace *ns, case IT_LOOKUP: gflags |= MDS_INODELOCK_LOOKUP; //hmm.. something should be done with gflags.. - rep->lock_policy_res2 = mdt_getattr_name(info, req, offset); + rep->lock_policy_res2 = mdt_getattr_name(info, req, offset + 1); break; default: -- 1.8.3.1