From: Fan Yong Date: Wed, 13 Apr 2016 08:45:52 +0000 (+0800) Subject: LU-8083 lfsck: repair symbol file nlink properly X-Git-Tag: 2.8.57~36 X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=commitdiff_plain;h=a6d427ef428ca0e33bde714f04e1e41a5566b23a LU-8083 lfsck: repair symbol file nlink properly Miss to check symbolic link case in lfsck_namespace_repair_nlink. Signed-off-by: Fan Yong Change-Id: I420d558803672100292990f1ff4888c03888c39a Reviewed-on: http://review.whamcloud.com/19874 Tested-by: Jenkins Reviewed-by: Andreas Dilger Tested-by: Maloo Reviewed-by: Alex Zhuravlev Reviewed-by: Oleg Drokin --- diff --git a/lustre/lfsck/lfsck_namespace.c b/lustre/lfsck/lfsck_namespace.c index 84872cf..b808fdf 100644 --- a/lustre/lfsck/lfsck_namespace.c +++ b/lustre/lfsck/lfsck_namespace.c @@ -2871,7 +2871,6 @@ static int lfsck_namespace_repair_nlink(const struct lu_env *env, ENTRY; LASSERT(!dt_object_remote(obj)); - LASSERT(S_ISREG(lfsck_object_type(obj))); rc = lfsck_ibits_lock(env, lfsck, obj, &lh, MDS_INODELOCK_UPDATE, LCK_PW); @@ -3546,10 +3545,23 @@ out: return rc; if (la->la_nlink != 0 && la->la_nlink != count) { - rc = lfsck_namespace_repair_nlink(env, com, child, la); - if (rc > 0) { - ns->ln_objs_nlink_repaired++; - rc = 0; + if (unlikely(!S_ISREG(lfsck_object_type(child)) && + !S_ISLNK(lfsck_object_type(child)))) { + CDEBUG(D_LFSCK, "%s: namespace LFSCK finds " + "the object "DFID"'s nlink count %d " + "does not match linkEA count %d, " + "type %o, skip it.\n", + lfsck_lfsck2name(lfsck), + PFID(lfsck_dto2fid(child)), + la->la_nlink, count, + lfsck_object_type(child)); + } else { + rc = lfsck_namespace_repair_nlink(env, com, + child, la); + if (rc > 0) { + ns->ln_objs_nlink_repaired++; + rc = 0; + } } } }