From 944d1c14644bc14eb4cf78c19b8099b5efa7c5e5 Mon Sep 17 00:00:00 2001 From: yangsheng Date: Mon, 6 Aug 2012 03:42:48 +0800 Subject: [PATCH] LU-1488 mdc: fix fid_res_name_eq() issue. Original error message: LustreError: 25302:0:(namei.c:256:ll_mdc_blocking_ast()) ns: lustre-MDT0000-mdc-ffff81021762a000 lock: The issue cause by commit ef8bd11416bae8c03a65682f3a10a4da39922b45. fid_res_name_eq() use wrong way to compare fid & res_name. Signed-off-by: yang sheng Change-Id: Iacba148b6c3ba7fa775d2b9a4a58bdbf67434d7c Reviewed-on: http://review.whamcloud.com/3522 Tested-by: Hudson Reviewed-by: Andreas Dilger Reviewed-by: Fan Yong Tested-by: Maloo Reviewed-by: Johann Lombardi --- lustre/mdc/mdc_fid.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/lustre/mdc/mdc_fid.c b/lustre/mdc/mdc_fid.c index 1dc3922..f82ee52 100644 --- a/lustre/mdc/mdc_fid.c +++ b/lustre/mdc/mdc_fid.c @@ -412,12 +412,8 @@ EXPORT_SYMBOL(fid_build_reg_res_name); */ int fid_res_name_eq(const struct lu_fid *f, const struct ldlm_res_id *name) { - int ret; - - ret = name->name[LUSTRE_RES_ID_SEQ_OFF] == fid_seq(f) && - name->name[LUSTRE_RES_ID_VER_OID_OFF] == fid_oid(f); - if (!fid_is_igif(f)) - ret &= name->name[LUSTRE_RES_ID_VER_OID_OFF] == fid_ver(f); - return ret; + return name->name[LUSTRE_RES_ID_SEQ_OFF] == fid_seq(f) && + name->name[LUSTRE_RES_ID_VER_OID_OFF] == + (fid_oid(f) | (fid_is_igif(f) ? 0 : (__u64)fid_ver(f)<<32)); } EXPORT_SYMBOL(fid_res_name_eq); -- 1.8.3.1