From 543c5a6d66685ed99332a46e333dfe4a31b74028 Mon Sep 17 00:00:00 2001 From: Lai Siyao Date: Tue, 3 Nov 2020 10:17:36 +0800 Subject: [PATCH 1/1] 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 --- lustre/lfsck/lfsck_namespace.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) 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); -- 1.8.3.1