}
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
}
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"
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
#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[] = {
{"=== 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"},