From: wang di Date: Thu, 23 May 2013 07:00:09 +0000 (-0700) Subject: LU-3385 llite: missing last bit in ll_have_md_lock X-Git-Tag: 2.4.51~70 X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=commitdiff_plain;h=8d852e8fbe43451480df83813d73318561ab1054 LU-3385 llite: missing last bit in ll_have_md_lock Missing the last bit during INODELOCK check in ll_have_md_lock. Signed-off-by: wang di Change-Id: I0801554904cab106513b76ace4f1467d14cfdf1a Reviewed-on: http://review.whamcloud.com/6438 Tested-by: Hudson Tested-by: Maloo Reviewed-by: Oleg Drokin Reviewed-by: Andreas Dilger --- diff --git a/lustre/llite/file.c b/lustre/llite/file.c index a216652..05df5d8 100644 --- a/lustre/llite/file.c +++ b/lustre/llite/file.c @@ -2663,11 +2663,11 @@ int ll_have_md_lock(struct inode *inode, __u64 *bits, ldlm_mode_t l_req_mode) CDEBUG(D_INFO, "trying to match res "DFID" mode %s\n", PFID(fid), ldlm_lockname[mode]); - flags = LDLM_FL_BLOCK_GRANTED | LDLM_FL_CBPENDING | LDLM_FL_TEST_LOCK; - for (i = 0; i < MDS_INODELOCK_MAXSHIFT && *bits != 0; i++) { - policy.l_inodebits.bits = *bits & (1 << i); - if (policy.l_inodebits.bits == 0) - continue; + flags = LDLM_FL_BLOCK_GRANTED | LDLM_FL_CBPENDING | LDLM_FL_TEST_LOCK; + for (i = 0; i <= MDS_INODELOCK_MAXSHIFT && *bits != 0; i++) { + policy.l_inodebits.bits = *bits & (1 << i); + if (policy.l_inodebits.bits == 0) + continue; if (md_lock_match(ll_i2mdexp(inode), flags, fid, LDLM_IBITS, &policy, mode, &lockh)) {