X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Futils%2Flctl.c;h=a90eeee5256b7012289b422bb95ff91909f5187b;hb=f569e36c2c16090108dfdeaf380c3dd237c546ec;hp=c4ac85c8b06e6993558ce2ad14332fbf43cbeb5c;hpb=e3f2357691bc326eb8bf2d0d9bc556b8d0b36493;p=fs%2Flustre-release.git diff --git a/lustre/utils/lctl.c b/lustre/utils/lctl.c index c4ac85c..a90eeee 100644 --- a/lustre/utils/lctl.c +++ b/lustre/utils/lctl.c @@ -4,7 +4,7 @@ * Copyright (C) 2002 Cluster File Systems, Inc. * Author: Peter J. Braam * Author: Phil Schwan - * Author: Robert Read + * Author: Robert Read * * This file is part of Lustre, http://www.lustre.org. * @@ -26,6 +26,7 @@ #include #include +#include #include #include "obdctl.h" #include "parser.h" @@ -58,24 +59,37 @@ command_t cmdlist[] = { {"ignore_errors", jt_opt_ignore_errors, 0, "ignore errors that occur during script processing\n" "ignore_errors"}, + {"dump", jt_ioc_dump, 0, "usage: dump file, save ioctl buffer to file"}, /* Network configuration commands */ {"==== network config ====", jt_noop, 0, "network config"}, {"network", jt_ptl_network, 0, "commands that follow apply to net\n" - "usage: network "}, + "usage: network "}, + {"autoconn_list", jt_ptl_print_autoconnects, 0, "print autoconnect entries\n" + "usage: print_autoconns"}, + {"add_autoconn", jt_ptl_add_autoconnect, 0, "add an autoconnect entry\n" + "usage: add_autoconn [ixs]"}, + {"del_autoconn", jt_ptl_del_autoconnect, 0, "remove an autoconnect entry\n" + "usage: del_autoconn [] [] [ks]"}, + {"conn_list", jt_ptl_print_connections, 0, "connect to a remote nid\n" + "usage: print_conns"}, {"connect", jt_ptl_connect, 0, "connect to a remote nid\n" - "usage: connect [[ ] | ]"}, + "usage: connect [ix]"}, {"disconnect", jt_ptl_disconnect, 0, "disconnect from a remote nid\n" - "usage: disconnect "}, + "usage: disconnect []"}, + {"active_tx", jt_ptl_print_active_txs, 0, "print active transmits (no args)\n" + "usage: active_tx"}, {"mynid", jt_ptl_mynid, 0, "inform the socknal of the local nid. " "The nid defaults to hostname for tcp networks and is automatically " - "setup for elan/myrinet networks.\n" - "usage: mynid [nid]"}, - {"add_uuid", jt_ptl_add_uuid, 0, "associate a UUID with a nid\n" - "usage: add_uuid "}, - {"close_uuid", jt_ptl_close_uuid, 0, "disconnect a UUID\n" - "usage: close_uuid )"}, - {"del_uuid", jt_ptl_del_uuid, 0, "delete a UUID association\n" + "setup for elan/myrinet/scimac networks.\n" + "usage: mynid []"}, + {"shownid", jt_ptl_shownid, 0, "print the local NID\n" + "usage: shownid"}, + {"add_uuid", jt_obd_add_uuid, 0, "associate a UUID with a nid\n" + "usage: add_uuid "}, + {"close_uuid", jt_obd_close_uuid, 0, "disconnect a UUID\n" + "usage: close_uuid )"}, + {"del_uuid", jt_obd_del_uuid, 0, "delete a UUID association\n" "usage: del_uuid "}, {"add_route", jt_ptl_add_route, 0, "add an entry to the routing table\n" @@ -91,27 +105,27 @@ command_t cmdlist[] = { {"send_mem", jt_ptl_txmem, 0, "set socket send buffer size, " "if size is omited the current size is reported.\n" "usage: send_mem [size]"}, - {"nagle", jt_ptl_nagle, 0, "enable/disable nagle, omiting the " - "argument will cause the current nagle setting to be reported.\n" - "usage: nagle [on/off]"}, - + {"nagle", jt_ptl_nagle, 0, "enable/disable nagle, omitting the " + "argument will cause the current nagle setting to be reported.\n" + "usage: nagle [on/off]"}, + {"fail", jt_ptl_fail_nid, 0, "fail/restore communications.\n" + "Omitting the count means indefinitely, 0 means restore, " + "otherwise fail 'count' messages.\n" + "usage: fail nid|_all_ [count]"}, + /* Device selection commands */ {"=== device selection ===", jt_noop, 0, "device selection"}, {"newdev", jt_obd_newdev, 0, "create a new device\n" "usage: newdev"}, -#if 0 - {"uuid2dev", jt_obd_uuid2dev, 0, - "find device attached with and make it the current device\n" - "usage: uuid2dev "}, -#endif - {"name2dev", jt_obd_name2dev, 0, - "find device attached with and make it the current device\n" - "usage: name2dev "}, - {"device", jt_obd_device, 0, "set current device to \n" - "usage: device "}, + {"device", jt_obd_device, 0, + "set current device to <%name|$name|devno>\n" + "usage: device <%name|$name|devno>"}, {"device_list", jt_obd_list, 0, "show all devices\n" "usage: device_list"}, - + {"lustre_build_version", jt_get_version, 0, + "print the build version of lustre\n" + "usage: lustre_build_version"}, + /* Device configuration commands */ {"==== device config =====", jt_noop, 0, "device config"}, {"attach", jt_obd_attach, 0, @@ -121,7 +135,7 @@ command_t cmdlist[] = { "type specific device configuration information\n" "usage: setup "}, {"cleanup", jt_obd_cleanup, 0, "cleanup previously setup device\n" - "usage: cleanup"}, + "usage: cleanup [force | failover]"}, {"detach", jt_obd_detach, 0, "remove driver (and name and uuid) from current device\n" "usage: detach"}, @@ -149,36 +163,61 @@ command_t cmdlist[] = { {"setattr", jt_obd_setattr, 0, "set mode attribute for OST object \n" "usage: setattr "}, - {"create", jt_obd_create, 0, + {"create", jt_obd_create, 0, "create OST objects (with )\n" - "usage: create [num [mode [verbose]]]"}, + "usage: create [num [mode [verbose [lsm data]]]]"}, {"destroy", jt_obd_destroy, 0, - "destroy OST object \n" - "usage: destroy "}, + "destroy OST object [num [verbose]]\n" + "usage: destroy objects, starting at objid "}, {"test_getattr", jt_obd_test_getattr, 0, "do getattrs (on OST object (objid+1 on each thread))\n" "usage: test_getattr [verbose [[t]objid]]"}, {"test_brw", jt_obd_test_brw, 0, "do bulk read/writes ( per I/O, on OST object )\n" "usage: test_brw [t] [write [verbose [npages [[t]objid]]]]"}, + {"get_stripe", jt_obd_get_stripe, 0, + "show stripe info for an echo client object\n" + "usage: get_stripe objid\n"}, + {"set_stripe", jt_obd_set_stripe, 0, + "set stripe info for an echo client object\n" + "usage: set_stripe objid[=width!count[@offset][:id:id...]\n"}, + {"unset_stripe", jt_obd_unset_stripe, 0, + "unset stripe info for an echo client object\n" + "usage: unset_stripe objid\n"}, {"test_ldlm", jt_obd_test_ldlm, 0, "perform lock manager test\n" "usage: test_ldlm"}, {"ldlm_regress_start", jt_obd_ldlm_regress_start, 0, "start lock manager stress test\n" - "usage: %s [numthreads [refheld [numres [numext]]]]"}, + "usage: ldlm_regress_start [numthreads [refheld [numres [numext]]]]"}, {"ldlm_regress_stop", jt_obd_ldlm_regress_stop, 0, "stop lock manager stress test (no args)\n"}, {"dump_ldlm", jt_obd_dump_ldlm, 0, "dump all lock manager state (no args)"}, - {"newconn", jt_obd_newconn, 0, "newconn [newuuid]"}, - {"failconn", jt_obd_failconn, 0, "failconn "}, + {"activate", jt_obd_activate, 0, "activate an import\n"}, + {"deactivate", jt_obd_deactivate, 0, "deactivate an import\n"}, + {"recover", jt_obd_recover, 0, "usage: recover []"}, + {"lookup", jt_obd_mdc_lookup, 0, "usage: lookup "}, + {"notransno", jt_obd_no_transno, 0, + "disable sending of committed-transno updates\n"}, + {"readonly", jt_obd_set_readonly, 0, + "disable writes to the underlying device\n"}, + {"abort_recovery", jt_obd_abort_recovery, 0, + "abort recovery on MDS device\n"}, + {"mount_option", jt_obd_mount_option, 0, + "dump mount options to file\n"}, /* Debug commands */ {"======== debug =========", jt_noop, 0, "debug"}, + {"debug_daemon", jt_dbg_debug_daemon, 0, + "debug daemon control and dump to a file" + "usage: debug_daemon [start file <#MB>|stop|pause|continue]"}, {"debug_kernel", jt_dbg_debug_kernel, 0, "get debug buffer and dump to a file" "usage: debug_kernel [file] [raw]"}, + {"dk", jt_dbg_debug_kernel, 0, + "get debug buffer and dump to a file" + "usage: dk [file] [raw]"}, {"debug_file", jt_dbg_debug_file, 0, "read debug buffer from input and dump to output" "usage: debug_file [output] [raw]"}, @@ -197,7 +236,7 @@ command_t cmdlist[] = { "usage: modules "}, {"panic", jt_dbg_panic, 0, "force the kernel to panic\n" "usage: panic"}, - + /* User interface commands */ {"======= control ========", jt_noop, 0, "control commands"}, {"help", Parser_help, 0, "help"}, @@ -208,7 +247,7 @@ command_t cmdlist[] = { -int main(int argc, char **argv) +int main(int argc, char **argv) { int rc; @@ -219,11 +258,12 @@ int main(int argc, char **argv) exit(2); if (dbg_initialize(argc, argv) < 0) exit(3); - + + Parser_init("lctl > ", cmdlist); + if (argc > 1) { rc = Parser_execarg(argc - 1, argv + 1, cmdlist); } else { - Parser_init("lctl > ", cmdlist); rc = Parser_commands(); }