X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Futils%2Flctl.c;h=9c272678c8d5d92ba335dd2af293243823613076;hb=0d7a6d1d8df4756aa791f3574dc36ed01c4bbf36;hp=0145064fcc888cfbaf52651b569b7df6e5f750f4;hpb=7e81f13c4a852cdba9fbebcc2b6385d6c2effa4b;p=fs%2Flustre-release.git diff --git a/lustre/utils/lctl.c b/lustre/utils/lctl.c index 0145064..9c27267 100644 --- a/lustre/utils/lctl.c +++ b/lustre/utils/lctl.c @@ -27,7 +27,7 @@ * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. * - * Copyright (c) 2012, 2013, Intel Corporation. + * Copyright (c) 2012, 2014, Intel Corporation. */ /* * This file is part of Lustre, http://www.lustre.org/ @@ -42,14 +42,10 @@ #include #include +#include #include #include "obdctl.h" -#include - -static int jt_quit(int argc, char **argv) { - Parser_quit(argc, argv); - return 0; -} +#include static int jt_noop(int argc, char **argv) { return 0; @@ -79,41 +75,73 @@ command_t cmdlist[] = { {"lustre_build_version", jt_get_version, 0, "print the build version of lustre\n" "usage: lustre_build_version"}, - {"exit", jt_quit, 0, "quit"}, - {"quit", jt_quit, 0, "quit"}, + {"exit", Parser_quit, 0, "quit"}, + {"quit", Parser_quit, 0, "quit"}, + {"--version", Parser_version, 0, + "output build version of the utility and exit"}, - /* Network configuration commands */ - {"===== network config =====", jt_noop, 0, "network config"}, - {"--net", jt_opt_net, 0,"run after setting network to \n" - "usage: --net "}, - {"network", jt_ptl_network, 0, "configure LNET" - "usage: network up|down"}, - {"net", jt_ptl_network, 0, "configure LNET" - "usage: net up|down"}, - {"list_nids", jt_ptl_list_nids, 0, "list local NIDs" - "usage: list_nids [all]"}, - {"which_nid", jt_ptl_which_nid, 0, "choose a NID" - "usage: which_nid NID [NID...]"}, + /* Network configuration commands */ + {"===== network config =====", jt_noop, 0, "network config"}, + {"--net", jt_opt_net, 0, "run after selecting network \n" + "usage: --net "}, + {"network", jt_ptl_network, 0, "configure LNET" + "usage: network up|down"}, + {"net", jt_ptl_network, 0, "configure LNET" + "usage: net up|down"}, + {"list_nids", jt_ptl_list_nids, 0, "list local NIDs" + "usage: list_nids [all]"}, + {"which_nid", jt_ptl_which_nid, 0, "choose a NID" + "usage: which_nid NID [NID...]"}, {"replace_nids", jt_replace_nids, 0, "replace primary NIDs for a device\n" "usage: replace_nids [,nid2,nid3]"}, - {"interface_list", jt_ptl_print_interfaces,0,"print interface entries\n" - "usage: interface_list"}, - {"peer_list", jt_ptl_print_peers, 0, "print peer entries\n" - "usage: peer_list"}, - {"conn_list", jt_ptl_print_connections, 0, - "print all the connected remote nid\n" - "usage: conn_list"}, - {"active_tx", jt_ptl_print_active_txs, 0, "print active transmits\n" - "usage: active_tx"}, - {"route_list", jt_ptl_print_routes, 0, - "print the portals routing table, same as show_route\n" - "usage: route_list"}, - {"show_route", jt_ptl_print_routes, 0, - "print the portals routing table, same as route_list\n" - "usage: show_route"}, - {"ping", jt_ptl_ping, 0, "Check LNET connectivity\n" - "usage: ping nid [timeout] [pid]"}, + {"interface_list", jt_ptl_print_interfaces, 0, + "print network interface entries\n" + "usage: interface_list"}, + {"peer_list", jt_ptl_print_peers, 0, "print peer LNet NIDs\n" + "usage: peer_list"}, + {"conn_list", jt_ptl_print_connections, 0, + "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" + "usage: route_list"}, + {"show_route", jt_ptl_print_routes, 0, + "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]"}, + {"net_drop_add", jt_ptl_drop_add, 0, "Add LNet drop rule\n" + "usage: net_drop_add <-s | --source NID>\n" + " <-d | --dest NID>\n" + " <<-r | --rate DROP_RATE> |\n" + " <-i | --interval SECONDS>>\n" + " [<-p | --portal> PORTAL...]\n" + " [<-m | --message> ...]\n"}, + {"net_drop_del", jt_ptl_drop_del, 0, "remove LNet drop rule\n" + "usage: net_drop_del <[-a | --all] |\n" + " <-s | --source NID>\n" + " <-d | --dest NID>>\n"}, + {"net_drop_reset", jt_ptl_drop_reset, 0, "reset drop rule stats\n" + "usage: net_drop_reset"}, + {"net_drop_list", jt_ptl_drop_list, 0, "list LNet drop rules\n" + "usage: net_drop_list"}, + {"net_delay_add", jt_ptl_delay_add, 0, "Add LNet delay rule\n" + "usage: net_delay_add <-s | --source NID>\n" + " <-d | --dest NID>\n" + " <<-r | --rate DROP_RATE> |\n" + " <-i | --interval SECONDS>>\n" + " <-l | --latency SECONDS>\n" + " [<-p | --portal> PORTAL...]\n" + " [<-m | --message> ...]\n"}, + {"net_delay_del", jt_ptl_delay_del, 0, "remove LNet delay rule\n" + "usage: net_delay_del <[-a | --all] |\n" + " <-s | --source NID>\n" + " <-d | --dest NID>>\n"}, + {"net_delay_reset", jt_ptl_delay_reset, 0, "reset delay rule stats\n" + "usage: net_delay_reset"}, + {"net_delay_list", jt_ptl_delay_list, 0, "list LNet delay rules\n" + "usage: net_delay_list"}, /* Device selection commands */ {"==== obd device selection ====", jt_noop, 0, "device selection"}, @@ -134,26 +162,25 @@ command_t cmdlist[] = { "abort recovery on a restarting MDT or OST device\n"}, {"set_timeout", jt_lcfg_set_timeout, 0, "usage: conf_param obd_timeout=\n"}, -#if LUSTRE_VERSION >= OBD_OCD_VERSION(3,0,53,0) -#warning "remove conf_param option" -#else +#if LUSTRE_VERSION_CODE < OBD_OCD_VERSION(3, 0, 53, 0) {"conf_param", jt_lcfg_mgsparam, 0,"set a permanent config parameter.\n" "This command must be run on the MGS node\n" "usage: conf_param [-d] \n" " -d Remove the permanent setting."}, #endif - {"local_param", jt_lcfg_param, 0, "set a temporary, local param\n" - "usage: local_param \n"}, - {"get_param", jt_lcfg_getparam, 0, "get the Lustre or LNET parameter\n" - "usage: get_param [-n|-N|-F] \n" - "Get the value of Lustre or LNET parameter from the specified path.\n" - "The path can contain shell-style filename patterns.\n" - " -n Print only the value and not parameter name.\n" - " -N Print only matched parameter names and not the values.\n" - " (Especially useful when using patterns.)\n" - " -F When -N specified, add '/', '@' or '=' for directories,\n" - " symlinks and writeable files, respectively."}, - {"set_param", jt_lcfg_setparam, 0, "set the Lustre or LNET parameter\n" + {"local_param", jt_lcfg_param, 0, "set a temporary, local param\n" + "usage: local_param \n"}, + {"get_param", jt_lcfg_getparam, 0, "get the Lustre or LNET parameter\n" + "usage: get_param [-F|n|-N|-R] \n" + "Get the value of Lustre or LNET parameter from the specified path.\n" + "The path can contain shell-style filename patterns.\n" + " -F When -N specified, add '/', '@' or '=' for directories,\n" + " symlinks and writeable files, respectively.\n" + " -n Print only the value and not parameter name.\n" + " -N Print only matched parameter names and not the values.\n" + " (Especially useful when using patterns.)\n" + " -R Get parameters recursively from the specified entry.\n"}, + {"set_param", jt_lcfg_setparam, 0, "set the Lustre or LNET parameter\n" "usage: set_param [-n] [-P] [-d]" "\n" "Set the value of the Lustre or LNET parameter at the specified path.\n" @@ -161,12 +188,13 @@ command_t cmdlist[] = { " -P Set the parameter permanently, filesystem-wide.\n" " -d Remove the permanent setting (only with -P option).\n"}, {"list_param", jt_lcfg_listparam, 0, - "list the Lustre or LNET parameter name\n" - "usage: list_param [-F|-R] \n" - "List the name of Lustre or LNET parameter from the specified path.\n" - " -F Add '/', '@' or '=' for dirs, symlinks and writeable files,\n" - "respectively.\n" - " -R Recursively list all parameters under the specified path.\n"}, + "list the Lustre or LNET parameter name\n" + "usage: list_param [-F|-R|-D] \n" + "List the name of Lustre or LNET parameter from the specified path.\n" + " -F Add '/', '@' or '=' for dirs, symlinks and writeable files,\n" + "respectively.\n" + " -D Only list directories.\n" + " -R Recursively list all parameters under the specified path.\n"}, /* Debug commands */ {"==== debugging control ====", jt_noop, 0, "debug"}, @@ -209,7 +237,7 @@ command_t cmdlist[] = { "detach a lustre regular file from a virtual block device\n" "usage: blockdev_detach "}, {"blockdev_info", jt_blockdev_info, 0, - "get the device info of a attached file\n" + "get the device info of an attached file\n" "usage: blockdev_info "}, /* Pool commands */ @@ -232,15 +260,34 @@ command_t cmdlist[] = { /* Nodemap commands */ {"=== Nodemap ===", jt_noop, 0, "nodemap management"}, - {"nodemap_activate_idmap", jt_nodemap_activate, 0, + {"nodemap_activate", jt_nodemap_activate, 0, "activate nodemap idmapping functions\n" - "usage: nodemap_activate_idmap"}, + "usage: nodemap_activate"}, {"nodemap_add", jt_nodemap_add, 0, "add a new nodemap\n" "usage: nodemap_add "}, {"nodemap_del", jt_nodemap_del, 0, "remove a nodemap\n" "usage: nodemap_del "}, + {"nodemap_add_range", jt_nodemap_add_range, 0, + "add a range to a nodemap\n" + "usage: nodemap_add_range "}, + {"nodemap_del_range", jt_nodemap_del_range, 0, + "add a range to a nodemap\n" + "usage: nodemap_del_range "}, + {"nodemap_modify", jt_nodemap_modify, 0, + "modify a nodemap parameters" + "usage: nodemap_modify nodemap_name param value"}, + {"nodemap_add_idmap", jt_nodemap_add_idmap, 0, + "add a UID or GID mapping to a nodemap"}, + {"nodemap_del_idmap", jt_nodemap_del_idmap, 0, + "delete a UID or GID mapping from a nodemap"}, + {"nodemap_test_nid", jt_nodemap_test_nid, 0, + "usage: nodemap_test_nid "}, + {"nodemap_test_id", jt_nodemap_test_id, 0, + "Usage: nodemap_test_id --nid --idtype [uid|gid] --id "}, + {"nodemap_info", jt_nodemap_info, 0, + "Usage: nodemap_info [list|nodemap_name|all]"}, /* Changelog commands */ {"=== Changelogs ==", jt_noop, 0, "changelog user management"}, @@ -265,9 +312,6 @@ command_t cmdlist[] = { "usage: setup "}, {"cleanup", jt_obd_cleanup, 0, "cleanup previously setup device\n" "usage: cleanup [force | failover]"}, - {"dump_cfg", jt_cfg_dump_log, 0, - "print log of recorded commands for this config to kernel debug log\n" - "usage: dump_cfg config-uuid-name"}, /* Test only commands */ {"==== testing (DANGEROUS) ====", jt_noop, 0, "testing (DANGEROUS)"}, @@ -280,30 +324,29 @@ command_t cmdlist[] = { "disable writes to the underlying device\n"}, {"notransno", jt_obd_no_transno, 0, "disable sending of committed-transno updates\n"}, - {"add_uuid", jt_lcfg_add_uuid, 0, "associate a UUID with a nid\n" - "usage: add_uuid "}, - {"del_uuid", jt_lcfg_del_uuid, 0, "delete a UUID association\n" - "usage: del_uuid "}, - {"add_peer", jt_ptl_add_peer, 0, "add an peer entry\n" - "usage: add_peer "}, - {"del_peer", jt_ptl_del_peer, 0, "remove an peer entry\n" - "usage: del_peer [] []"}, - {"add_conn ", jt_lcfg_add_conn, 0, - "usage: add_conn [priority]\n"}, - {"del_conn ", jt_lcfg_del_conn, 0, - "usage: del_conn \n"}, - {"disconnect", jt_ptl_disconnect, 0, "disconnect from a remote nid\n" - "usage: disconnect []"}, - {"push", jt_ptl_push_connection, 0, "flush connection to a remote nid\n" - "usage: push []"}, - {"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 []"}, - {"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]"}, + {"add_uuid", jt_lcfg_add_uuid, 0, "associate a UUID with a NID\n" + "usage: add_uuid "}, + {"del_uuid", jt_lcfg_del_uuid, 0, "delete a UUID association\n" + "usage: del_uuid "}, + {"add_peer", jt_ptl_add_peer, 0, "add an peer entry\n" + "usage: add_peer "}, + {"del_peer", jt_ptl_del_peer, 0, "remove an peer entry\n" + "usage: del_peer [] []"}, + {"add_conn ", jt_lcfg_add_conn, 0, + "usage: add_conn [priority]\n"}, + {"del_conn ", jt_lcfg_del_conn, 0, + "usage: del_conn "}, + {"disconnect", jt_ptl_disconnect, 0, "disconnect from a remote NID\n" + "usage: disconnect []"}, + {"push", jt_ptl_push_connection, 0, "flush connection to a remote NID\n" + "usage: push []"}, + {"mynid", jt_ptl_mynid, 0, "inform the LND of the local NID. " + "The NID defaults to hostname for TCP networks.\n" + "usage: mynid []"}, + {"fail", jt_ptl_fail_nid, 0, "fail/restore network communications\n" + "Omitting the count means indefinitely, 0 means restore, " + "otherwise fail 'count' messages.\n" + "usage: fail nid|_all_ [count]"}, /*Test commands for echo client*/ {"test_create", jt_obd_test_create, 0, @@ -355,9 +398,6 @@ command_t cmdlist[] = { {"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]]]]"}, - {"memhog", jt_ptl_memhog, 0, - "memory pressure testing\n" - "usage: memhog []"}, {"getobjversion", jt_get_obj_version, 0, "get the version of an object on servers\n" "usage: getobjversion \n" @@ -367,13 +407,16 @@ command_t cmdlist[] = { {"==== LFSCK ====", jt_noop, 0, "LFSCK"}, {"lfsck_start", jt_lfsck_start, 0, "start LFSCK\n" "usage: lfsck_start <-M | --device [MDT,OST]_device>\n" - " [-e | --error error_handle] [-h | --help]\n" - " [-n | --dryrun switch] [-r | --reset]\n" - " [-s | --speed speed_limit]\n" + " [-A | --all] [-c | --create_ostobj [on | off]]\n" + " [-C | --create_mdtobj [on | off]]\n" + " [-e | --error {continue | abort}] [-h | --help]\n" + " [-n | --dryrun [on | off]] [-o | --orphan]\n" + " [-r | --reset] [-s | --speed speed_limit]\n" " [-t | --type lfsck_type[,lfsck_type...]]\n" - " [-w | --windows win_size]"}, + " [-w | --window_size size]"}, {"lfsck_stop", jt_lfsck_stop, 0, "stop lfsck(s)\n" - "usage: lfsck_stop <-M | --device [MDT,OST]_device> [-h | --help]"}, + "usage: lfsck_stop <-M | --device [MDT,OST]_device>\n" + " [-A | --all] [-h | --help]"}, {"==== obsolete (DANGEROUS) ====", jt_noop, 0, "obsolete (DANGEROUS)"}, /* some test scripts still use these */ @@ -422,13 +465,13 @@ command_t cmdlist[] = { {"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 portals routing table\n" + "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 portals routing table\n" + "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 portals routing table\n" + "enable/disable routes via gateway in the LNet routing table\n" "usage: set_route [