From 441adeced3f5eedad997f236bd65cad9374876b5 Mon Sep 17 00:00:00 2001 From: Emoly Liu Date: Thu, 22 Aug 2024 11:07:06 +0800 Subject: [PATCH] LU-18114 barrier: split "lctl barrier_*" group into subcommands 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 Change-Id: Ibccc0206bae6ef0fa8efd744b46c7f864aa42cbe Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/56107 Tested-by: jenkins Tested-by: Maloo Reviewed-by: Andreas Dilger Reviewed-by: Frederick Dilger Reviewed-by: Oleg Drokin --- lustre/tests/sanity.sh | 30 ++++++++++++++++++++++-------- lustre/utils/lctl.c | 30 ++++++++++++++++++++++++++---- 2 files changed, 48 insertions(+), 12 deletions(-) diff --git a/lustre/tests/sanity.sh b/lustre/tests/sanity.sh index 243c7db..d6e905f 100755 --- a/lustre/tests/sanity.sh +++ b/lustre/tests/sanity.sh @@ -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 diff --git a/lustre/utils/lctl.c b/lustre/utils/lctl.c index ad6ca7a..a3a0839 100644 --- a/lustre/utils/lctl.c +++ b/lustre/utils/lctl.c @@ -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 [timeout (in seconds)]"}, + "usage: barrier_freeze FSNAME [TIMEOUT_SECONDS]"}, {"barrier_thaw", jt_barrier_thaw, 0, "thaw write barrier on MDTs\n" - "usage: barrier_thaw "}, + "usage: barrier_thaw FSNAME"}, {"barrier_stat", jt_barrier_stat, 0, "query write barrier status on MDTs\n" - "usage: barrier_stat [--state|-s] [--timeout|-t] "}, + "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 [timeout (in seconds)]"}, + "usage: barrier_rescan FSNAME [TIMEOUT_SECONDS]"}, + {"barrier", jt_barrier, barrier_cmdlist, ""}, /* Snapshot commands */ {"=== Snapshot ==", NULL, 0, "Snapshot management"}, -- 1.8.3.1