Whamcloud - gitweb
LU-18114 barrier: split "lctl barrier_*" group into subcommands 07/56107/5
authorEmoly Liu <emoly@whamcloud.com>
Thu, 22 Aug 2024 03:07:06 +0000 (11:07 +0800)
committerOleg Drokin <green@whamcloud.com>
Mon, 9 Dec 2024 06:07:40 +0000 (06:07 +0000)
Split "lctl barrier_*" command group into subcommands, e.g.
"lctl barrier_freeze" to "lctl barrier freeze".
Also, sanity.sh test_801c is modified to verify this patch.

Signed-off-by: Emoly Liu <emoly@whamcloud.com>
Change-Id: Ibccc0206bae6ef0fa8efd744b46c7f864aa42cbe
Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/56107
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Frederick Dilger <fdilger@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lustre/tests/sanity.sh
lustre/utils/lctl.c

index 243c7db..d6e905f 100755 (executable)
@@ -32437,12 +32437,17 @@ post_801() {
 }
 
 barrier_stat() {
+       if (( $MDS1_VERSION >= $(version_code 2.15.65) )); then
+               barrier_stat="barrier stat"
+       else
+               barrier_stat="barrier_stat"
+       fi
        if [ $MGS_VERSION -le $(version_code 2.10.0) ]; then
-               local st=$(do_facet mgs $LCTL barrier_stat $FSNAME |
+               local st=$(do_facet mgs $LCTL $barrier_stat $FSNAME |
                           awk '/The barrier for/ { print $7 }')
                echo $st
        else
-               local st=$(do_facet mgs $LCTL barrier_stat -s $FSNAME)
+               local st=$(do_facet mgs $LCTL $barrier_stat -s $FSNAME)
                echo \'$st\'
        fi
 }
@@ -32599,30 +32604,39 @@ run_test 801b "modification will be blocked by write barrier"
 
 test_801c() {
        [[ $MDSCOUNT -lt 2 ]] && skip_env "needs >= 2 MDTs"
+       if (( $MDS1_VERSION >= $(version_code 2.15.65) )); then
+               barrier_freeze="barrier freeze"
+               barrier_thaw="barrier thaw"
+               barrier_rescan="barrier rescan"
+       else
+               barrier_freeze="barrier_freeze"
+               barrier_thaw="barrier_thaw"
+               barrier_rescan="barrier_rescan"
+       fi
 
        prep_801
 
        stop mds2 || error "(1) Fail to stop mds2"
 
-       do_facet mgs $LCTL barrier_freeze $FSNAME 30
+       do_facet mgs $LCTL $barrier_freeze $FSNAME 30
 
        local b_status=$(barrier_stat)
        [ "$b_status" = "'expired'" ] || [ "$b_status" = "'failed'" ] || {
-               do_facet mgs $LCTL barrier_thaw $FSNAME
+               do_facet mgs $LCTL $barrier_thaw $FSNAME
                error "(2) unexpected barrier status $b_status"
        }
 
-       do_facet mgs $LCTL barrier_rescan $FSNAME ||
+       do_facet mgs $LCTL $barrier_rescan $FSNAME ||
                error "(3) Fail to rescan barrier bitmap"
 
        # Do not reduce barrier time - See LU-11873
-       do_facet mgs $LCTL barrier_freeze $FSNAME 20
+       do_facet mgs $LCTL $barrier_freeze $FSNAME 20
 
        b_status=$(barrier_stat)
        [ "$b_status" = "'frozen'" ] ||
                error "(4) unexpected barrier status $b_status"
 
-       do_facet mgs $LCTL barrier_thaw $FSNAME
+       do_facet mgs $LCTL $barrier_thaw $FSNAME
        b_status=$(barrier_stat)
        [ "$b_status" = "'thawed'" ] ||
                error "(5) unexpected barrier status $b_status"
@@ -32631,7 +32645,7 @@ test_801c() {
 
        start mds2 $devname $MDS_MOUNT_OPTS || error "(6) Fail to start mds2"
 
-       do_facet mgs $LCTL barrier_rescan $FSNAME ||
+       do_facet mgs $LCTL $barrier_rescan $FSNAME ||
                error "(7) Fail to rescan barrier bitmap"
 
        post_801
index ad6ca7a..a3a0839 100644 (file)
@@ -88,6 +88,27 @@ JT_SUBCMD(pcc);
 
 #ifdef HAVE_SERVER_SUPPORT
 /**
+ * command_t barrier_cmdlist - lctl barrier commands.
+ */
+command_t barrier_cmdlist[] = {
+       { .pc_name = "freeze", .pc_func = jt_barrier_freeze,
+         .pc_help = "freeze write barrier on MDTs\n"
+        "usage: barrier freeze FSNAME [TIMEOUT_SECONDS]"},
+       { .pc_name = "thaw", .pc_func = jt_barrier_thaw,
+         .pc_help = "thaw write barrier on MDTs\n"
+        "usage: barrier thaw FSNAME"},
+       { .pc_name = "stat", .pc_func = jt_barrier_stat,
+         .pc_help = "query write barrier status on MDTs\n"
+        "usage: barrier stat [--state|-s] [--timeout|-t] FSNAME"},
+       { .pc_name = "rescan", .pc_func = jt_barrier_rescan,
+         .pc_help =
+        "rescan the system to filter out inactive MDT(s) for barrier\n"
+        "usage: barrier rescan FSNAME [TIMEOUT_SECONDS]"},
+       { .pc_help = NULL }
+};
+JT_SUBCMD(barrier);
+
+/**
  * command_t lfsck_cmdlist - lctl lfsck commands.
  */
 command_t lfsck_cmdlist[] = {
@@ -311,16 +332,17 @@ command_t cmdlist[] = {
        {"===  Barrier ==", NULL, 0, "barrier management"},
        {"barrier_freeze", jt_barrier_freeze, 0,
         "freeze write barrier on MDTs\n"
-        "usage: barrier_freeze <fsname> [timeout (in seconds)]"},
+        "usage: barrier_freeze FSNAME [TIMEOUT_SECONDS]"},
        {"barrier_thaw", jt_barrier_thaw, 0,
         "thaw write barrier on MDTs\n"
-        "usage: barrier_thaw <fsname>"},
+        "usage: barrier_thaw FSNAME"},
        {"barrier_stat", jt_barrier_stat, 0,
         "query write barrier status on MDTs\n"
-        "usage: barrier_stat [--state|-s] [--timeout|-t] <fsname>"},
+        "usage: barrier_stat [--state|-s] [--timeout|-t] FSNAME"},
        {"barrier_rescan", jt_barrier_rescan, 0,
         "rescan the system to filter out inactive MDT(s) for barrier\n"
-        "usage: barrier_rescan <fsname> [timeout (in seconds)]"},
+        "usage: barrier_rescan FSNAME [TIMEOUT_SECONDS]"},
+       {"barrier", jt_barrier, barrier_cmdlist, ""},
 
        /* Snapshot commands */
        {"===  Snapshot ==", NULL, 0, "Snapshot management"},