Whamcloud - gitweb
LU-14105 lfsck: don't LBUG() on disk data 24/40524/2
authorLai Siyao <lai.siyao@whamcloud.com>
Tue, 3 Nov 2020 02:17:36 +0000 (10:17 +0800)
committerOleg Drokin <green@whamcloud.com>
Thu, 3 Dec 2020 07:27:27 +0000 (07:27 +0000)
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 <lai.siyao@whamcloud.com>
Change-Id: Ia4092ada5d55583508f276e5c9d59920ec31a33b
Reviewed-on: https://review.whamcloud.com/40524
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Hongchao Zhang <hongchao@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lustre/lfsck/lfsck_namespace.c

index c722f42..6e952ac 100644 (file)
@@ -5600,11 +5600,9 @@ static int lfsck_namespace_assistant_handler_p1(const struct lu_env *env,
                repaired = true;
        }
 
                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);
                                                LNTF_CHECK_PARENT, true);
 
                GOTO(out, rc);