From 7dec22d474faa50e1a7fb6b377ceb1310b76a8e8 Mon Sep 17 00:00:00 2001 From: Fan Yong Date: Sat, 8 Mar 2014 23:55:51 +0800 Subject: [PATCH] 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 --- lustre/osd-ldiskfs/osd_handler.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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); -- 1.8.3.1