From b0efebdaef52d8ac9b02857166ceb00079612ebc Mon Sep 17 00:00:00 2001 From: Andreas Dilger Date: Sat, 28 Dec 2019 02:42:54 -0700 Subject: [PATCH] LU-13107 utils: clean up lctl command usage The lctl usage is confusing because it lists a number of valid commands after "testing (DANGEROUS)", such as LFSCK and llog. Move the useful commands before the "testing" section so it is not mis-interpreted as all following commands are dangerous. Group some other commands together with more related commands, rather than whatever order they happened to be imlpemented in. Remove function prototypes for commands that no longer exist. Signed-off-by: Andreas Dilger Change-Id: I469f9c92953762cc46a68e44238c4b67ebacab07 Reviewed-on: https://review.whamcloud.com/37108 Reviewed-by: James Simmons Tested-by: jenkins Tested-by: Maloo Reviewed-by: Jian Yu Reviewed-by: Stephane Thiell Reviewed-by: Oleg Drokin --- lustre/utils/lctl.c | 153 ++++++++++++++++++++++++++------------------------ lustre/utils/obdctl.h | 8 --- 2 files changed, 81 insertions(+), 80 deletions(-) diff --git a/lustre/utils/lctl.c b/lustre/utils/lctl.c index 4c75a48..7e7bb7c 100644 --- a/lustre/utils/lctl.c +++ b/lustre/utils/lctl.c @@ -134,10 +134,10 @@ command_t cmdlist[] = { "print all the remote LNet connections\n" "usage: conn_list"}, {"route_list", jt_ptl_print_routes, 0, - "print the LNet routing table, same as show_route\n" + "print the LNet routing table, same as 'show_route'\n" "usage: route_list"}, {"show_route", jt_ptl_print_routes, 0, - "print the LNet routing table, same as route_list\n" + "print the LNet routing table, same as 'route_list'\n" "usage: show_route"}, {"ping", jt_ptl_ping, 0, "Check LNET connectivity\n" "usage: ping nid [timeout] [pid]"}, @@ -179,9 +179,12 @@ command_t cmdlist[] = { {"device", jt_obd_device, 0, "set current device to \n" "usage: device <%name|$name|devno>"}, + {"cfg_device", jt_obd_device, 0, + "set current device to , same as 'device'\n" + "usage: cfg_device "}, {"device_list", jt_obd_list, 0, "show all devices\n" "usage: device_list"}, - {"dl", jt_obd_list, 0, "show all devices\n" + {"dl", jt_obd_list, 0, "show all devices, same as 'device_list'\n" "usage: dl [-t]"}, /* Device operations */ @@ -193,6 +196,9 @@ command_t cmdlist[] = { "abort recovery on a restarting MDT or OST device\n"}, {"abort_recovery_mdt", jt_obd_abort_recovery_mdt, 0, "abort recovery between MDTs\n"}, + {"recover", jt_obd_recover, 0, + "try to restore a lost connection immediately\n" + "usage: recover [MDC/OSC device]"}, {"set_timeout", jt_lcfg_set_timeout, 0, "usage: conf_param obd_timeout=\n"}, #if LUSTRE_VERSION_CODE < OBD_OCD_VERSION(3, 0, 53, 0) @@ -237,16 +243,16 @@ command_t cmdlist[] = { "debug daemon control and dump to a file\n" "usage: debug_daemon {start file [#MB]|stop}"}, {"debug_kernel", jt_dbg_debug_kernel, 0, - "get debug buffer and dump to a file, same as dk\n" + "get debug buffer and dump to a file, same as 'dk'\n" "usage: debug_kernel [file] [raw]"}, {"dk", jt_dbg_debug_kernel, 0, - "get debug buffer and dump to a file, same as debug_kernel\n" + "get debug buffer and dump to a file, same as 'debug_kernel'\n" "usage: dk [file] [raw]"}, {"debug_file", jt_dbg_debug_file, 0, "convert a binary debug file dumped by the kernel to ASCII text\n" "usage: debug_file [output]"}, {"df", jt_dbg_debug_file, 0, - "read debug buffer from input and dump to output, same as debug_file\n" + "read debug log from input convert to ASCII, same as 'debug_file'\n" "usage: df [output]"}, {"clear", jt_dbg_clear_debug_buf, 0, "clear kernel debug buffer\n" "usage: clear"}, @@ -334,6 +340,12 @@ command_t cmdlist[] = { "usage: snapshot_umount <-F | --fsname fsname> [-h | --help]\n" " <-n | --name ssname>\n" " [-r | --rsh remote_shell]"}, + {"fork_lcfg", jt_lcfg_fork, 0, + "copy configuration files for named filesystem with given name\n" + "usage: fork_lcfg "}, + {"erase_lcfg", jt_lcfg_erase, 0, + "permanently erase configuration for the named filesystem\n" + "usage: erase_lcfg "}, #endif /* HAVE_SERVER_SUPPORT */ /* Nodemap commands */ {"=== Nodemap ===", NULL, 0, "nodemap management"}, @@ -414,6 +426,68 @@ command_t cmdlist[] = { "permanently erase configuration for the named filesystem\n" "usage: erase_lcfg "}, +#ifdef HAVE_SERVER_SUPPORT + /* LFSCK commands */ + {"==== LFSCK ====", NULL, 0, "LFSCK"}, + {"lfsck_start", jt_lfsck_start, 0, "start LFSCK\n" + "usage: lfsck_start [--device|-M [MDT,OST]_device]\n" + " [--all|-A] [--create-ostobj|-c [on | off]]\n" + " [--create-mdtobj|-C [on | off]]\n" + " [--delay-create-ostobj|-d [on | off]]\n" + " [--error|-e {continue | abort}] [--help|-h]\n" + " [--dryrun|-n [on | off]] [--orphan|-o]\n" + " [--reset|-r] [--speed|-s speed_limit]\n" + " [--type|-t lfsck_type[,lfsck_type...]]\n" + " [--window-size|-w size]"}, + {"lfsck_stop", jt_lfsck_stop, 0, "stop lfsck(s)\n" + "usage: lfsck_stop [--device|-M [MDT,OST]_device]\n" + " [--all|-A] [--help|-h]"}, + {"lfsck_query", jt_lfsck_query, 0, "check lfsck(s) status\n" + "usage: lfsck_query [--device|-M MDT_device] [--help|-h]\n" + " [--type|-t lfsck_type[,lfsck_type...]]\n" + " [--wait|-w]"}, +#endif /* HAVE_SERVER_SUPPORT */ + + /* Llog operations */ + {"==== LLOG ====", NULL, 0, "LLOG"}, + {"llog_catlist", jt_llog_catlist, 0, + "list all catalog files on current device. If current device is not\n" + "set, MGS device is used by default.\n" + "usage: llog_catlist"}, + {"llog_info", jt_llog_info, 0, + "print log header information.\n" + "usage: llog_info \n"}, + {"llog_print", jt_llog_print, 0, + "print log content information.\n" + "usage: llog_print [--start ] [--end j]\n" + " print all records by default, or within given index range."}, + {"llog_cancel", jt_llog_cancel, 0, + "cancel one record in specified log.\n" + "usage:llog_cancel --log_idx \n"}, + {"llog_check", jt_llog_check, 0, + "verify that log content is valid.\n" + "usage: llog_check [--start ] [--end j]\n" + " check all records from index 1 by default."}, + {"llog_remove", jt_llog_remove, 0, + "remove one log from catalog or plain log, erase it from disk.\n" + "usage: llog_remove [--log_id ]"}, + + {"==== obsolete (DANGEROUS) ====", NULL, 0, "obsolete (DANGEROUS)"}, + /* network operations */ + {"add_interface", jt_ptl_add_interface, 0, "add interface entry\n" + "usage: add_interface ip [netmask]"}, + {"del_interface", jt_ptl_del_interface, 0, "del interface entry\n" + "usage: del_interface [ip]"}, + {"add_route", jt_ptl_add_route, 0, + "add an entry to the LNet routing table\n" + "usage: add_route [ []]"}, + {"del_route", jt_ptl_del_route, 0, + "delete route via gateway to targets from the LNet routing table\n" + "usage: del_route [] []"}, + {"set_route", jt_ptl_notify_router, 0, + "enable/disable routes via gateway in the LNet routing table\n" + "usage: set_route [