Whamcloud - gitweb
LU-9894 lfsck: Print correct lfsck start info 65/30265/2
authorPatrick Farrell <paf@cray.com>
Mon, 21 Aug 2017 09:45:05 +0000 (04:45 -0500)
committerJohn L. Hammond <john.hammond@intel.com>
Tue, 19 Dec 2017 19:36:36 +0000 (19:36 +0000)
When printing which scan type was started, lfsck iterates
through an array of types and compares the given type to
the types in the array.  Type numbers are a bit mask.

However, LFSCK_TYPES_SUPPORTED and LFSCK_TYPES_DEF are the
full mask, and they are the first in the array.  This means
we always match LFSCK_TYPES_SUPPORTED, which results in
always printing "all" as the type of scan.

Reorder the struct to increasing bit order to fix this.

Test-Parameters: trivial testlist=sanity-scrub,sanity-lfsck
Lustre-change: https://review.whamcloud.com/28604
Lustre-commit: 0c6805b2a0d575331dff0c22a657da91f61a1809

Signed-off-by: Patrick Farrell <paf@cray.com>
Change-Id: Ibc82369ff6531b56ceda4b1c0a833720dc61f3f4
Reviewed-by: Fan Yong <fan.yong@intel.com>
Reviewed-by: James Nunez <james.a.nunez@intel.com>
Signed-off-by: Minh Diep <minh.diep@intel.com>
Reviewed-on: https://review.whamcloud.com/30265
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: John L. Hammond <john.hammond@intel.com>
lustre/utils/lustre_lfsck.c

index 14c569d..d90863b 100644 (file)
@@ -90,12 +90,14 @@ struct lfsck_type_name {
        enum lfsck_type  ltn_type;
 };
 
+/* Note types must be in order of increasing value so we can iterate through
+ * this correctly.  See enum lfsck_type for values. LU-9894. */
 static struct lfsck_type_name lfsck_types_names[] = {
-       { .ltn_name = "all",            .ltn_type = LFSCK_TYPES_SUPPORTED },
-       { .ltn_name = "default",        .ltn_type = LFSCK_TYPES_DEF },
        { .ltn_name = "layout",         .ltn_type = LFSCK_TYPE_LAYOUT },
        { .ltn_name = "namespace",      .ltn_type = LFSCK_TYPE_NAMESPACE },
        { .ltn_name = "scrub",          .ltn_type = LFSCK_TYPE_SCRUB },
+       { .ltn_name = "all",            .ltn_type = LFSCK_TYPES_SUPPORTED },
+       { .ltn_name = "default",        .ltn_type = LFSCK_TYPES_DEF },
        { .ltn_name = NULL } };
 
 static enum lfsck_type lfsck_name2type(const char *name)