From: Fan Yong Date: Sat, 8 Mar 2014 15:55:51 +0000 (+0800) Subject: LU-4796 osd: NOT inject OBD_FAIL_FID_LOOKUP on dotdot X-Git-Tag: 2.5.58~24 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=7dec22d474faa50e1a7fb6b377ceb1310b76a8e8;p=fs%2Flustre-release.git LU-4796 osd: NOT inject OBD_FAIL_FID_LOOKUP on dotdot The namespace LFSCK may cannot rebuild the FID-in-dirent for dotdot entry after the MDT restored from file-level backup, because there is not enough space in the directory head area. Signed-off-by: Fan Yong Change-Id: I06e8a56dc0a6522e12fd0dfd5b513c1dbf0a80f4 Reviewed-on: http://review.whamcloud.com/9748 Tested-by: Jenkins Tested-by: Maloo Reviewed-by: Lai Siyao Reviewed-by: Alex Zhuravlev Reviewed-by: Oleg Drokin --- diff --git a/lustre/osd-ldiskfs/osd_handler.c b/lustre/osd-ldiskfs/osd_handler.c index e0521af..8b2d5b9 100644 --- a/lustre/osd-ldiskfs/osd_handler.c +++ b/lustre/osd-ldiskfs/osd_handler.c @@ -5360,7 +5360,10 @@ static inline int osd_it_ea_rec(const struct lu_env *env, } else { attr &= ~LU_DIRENT_ATTRS_MASK; if (!fid_is_sane(fid)) { - if (OBD_FAIL_CHECK(OBD_FAIL_FID_LOOKUP)) + if (OBD_FAIL_CHECK(OBD_FAIL_FID_LOOKUP) && + likely(it->oie_dirent->oied_namelen != 2 || + it->oie_dirent->oied_name[0] != '.' || + it->oie_dirent->oied_name[1] != '.')) RETURN(-ENOENT); rc = osd_ea_fid_get(env, obj, ino, fid, id);