From: pschwan Date: Wed, 12 Feb 2003 17:15:12 +0000 (+0000) Subject: Oversight in mds_open, forgot to save locks for reply-ack; fixed. X-Git-Tag: v1_7_110~2^11~194 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=5f44d052698afdef03ec8689fa8a950924fb1c96;p=fs%2Flustre-release.git Oversight in mds_open, forgot to save locks for reply-ack; fixed. --- diff --git a/lustre/mds/mds_open.c b/lustre/mds/mds_open.c index 2f65384..88bee8d 100644 --- a/lustre/mds/mds_open.c +++ b/lustre/mds/mds_open.c @@ -199,7 +199,7 @@ int mds_open(struct mds_update_record *rec, int offset, mfd = kmem_cache_alloc(mds_file_cache, GFP_KERNEL); if (!mfd) { CERROR("mds: out of memory\n"); - GOTO(out_step_4, req->rq_status = -ENOMEM); + GOTO(out_step_4, rc = -ENOMEM); } /* dentry_open does a dput(de) and mntput(mds->mds_vfsmnt) on error */ @@ -233,6 +233,12 @@ int mds_open(struct mds_update_record *rec, int offset, l_dput(dchild); out_step_2: l_dput(parent); - ldlm_lock_decref(&parent_lockh, parent_mode); + if (rc) { + ldlm_lock_decref(&parent_lockh, parent_mode); + } else { + memcpy(&req->rq_ack_locks[0].lock, &parent_lockh, + sizeof(parent_lockh)); + req->rq_ack_locks[0].mode = parent_mode; + } RETURN(rc); }