From: Lai Siyao Date: Tue, 3 Nov 2020 02:17:36 +0000 (+0800) Subject: LU-14105 lfsck: don't LBUG() on disk data X-Git-Tag: 2.13.57~25 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=543c5a6d66685ed99332a46e333dfe4a31b74028;p=fs%2Flustre-release.git LU-14105 lfsck: don't LBUG() on disk data lfsck_namespace_assitant_handler_p1() will LBUG() if file FID is zero, and file name is not "..", but generally lfsck shouldn't LBUG() on disk data. The correct way is to treat such file as bad dirent and remove it, which is done below. Signed-off-by: Lai Siyao Change-Id: Ia4092ada5d55583508f276e5c9d59920ec31a33b Reviewed-on: https://review.whamcloud.com/40524 Reviewed-by: Andreas Dilger Tested-by: jenkins Tested-by: Maloo Reviewed-by: Hongchao Zhang Reviewed-by: Oleg Drokin --- diff --git a/lustre/lfsck/lfsck_namespace.c b/lustre/lfsck/lfsck_namespace.c index c722f42..6e952ac 100644 --- a/lustre/lfsck/lfsck_namespace.c +++ b/lustre/lfsck/lfsck_namespace.c @@ -5600,11 +5600,9 @@ static int lfsck_namespace_assistant_handler_p1(const struct lu_env *env, repaired = true; } - if (unlikely(fid_is_zero(&lnr->lnr_fid))) { - if (strcmp(lnr->lnr_name, dotdot) != 0) - LBUG(); - else - rc = lfsck_namespace_trace_update(env, com, pfid, + if (unlikely(fid_is_zero(&lnr->lnr_fid) && + strcmp(lnr->lnr_name, dotdot) == 0)) { + rc = lfsck_namespace_trace_update(env, com, pfid, LNTF_CHECK_PARENT, true); GOTO(out, rc);