X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Futils%2Flctl.c;h=4ed25e89c9245fed1db292a32933991d17f72e04;hb=1f6cb3534e74f0c9462008c8088b5734b64ed41c;hp=7837a60ef825a46b986b84c60a28dc2365c46310;hpb=70e80ade90af09300396706b8910e196a7928520;p=fs%2Flustre-release.git diff --git a/lustre/utils/lctl.c b/lustre/utils/lctl.c index 7837a60..4ed25e8 100644 --- a/lustre/utils/lctl.c +++ b/lustre/utils/lctl.c @@ -1,6 +1,4 @@ -/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- - * vim:expandtab:shiftwidth=8:tabstop=8: - * +/* * GPL HEADER START * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. @@ -16,18 +14,16 @@ * in the LICENSE file that accompanied this code). * * You should have received a copy of the GNU General Public License - * version 2 along with this program; If not, see [sun.com URL with a - * copy of GPLv2]. - * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * version 2 along with this program; If not, see + * http://www.gnu.org/licenses/gpl-2.0.html * * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. + * + * Copyright (c) 2012, 2017, Intel Corporation. */ /* * This file is part of Lustre, http://www.lustre.org/ @@ -40,20 +36,18 @@ * Author: Robert Read */ +#include +#include #include #include -#include +#include +#include +#include #include "obdctl.h" -#include "parser.h" - -static int jt_quit(int argc, char **argv) { - Parser_quit(argc, argv); - return 0; -} +#include +#include -static int jt_noop(int argc, char **argv) { - return 0; -} +static int lctl_list_commands(int argc, char **argv); static int jt_opt_ignore_errors(int argc, char **argv) { Parser_ignore_errors(1); @@ -61,267 +55,489 @@ static int jt_opt_ignore_errors(int argc, char **argv) { } command_t cmdlist[] = { - /* Metacommands */ - {"===== metacommands =======", jt_noop, 0, "metacommands"}, - {"--device", jt_opt_device, 0, - "run after connecting to device \n" - "--device "}, - {"--ignore_errors", jt_opt_ignore_errors, 0, - "ignore errors that occur during script processing\n" - "--ignore_errors"}, - {"ignore_errors", jt_opt_ignore_errors, 0, - "ignore errors that occur during script processing\n" - "ignore_errors"}, + /* Metacommands */ + {"===== metacommands =======", NULL, 0, "metacommands"}, + {"--device", jt_opt_device, 0, + "run after connecting to device \n" + "--device "}, + {"--ignore_errors", jt_opt_ignore_errors, 0, + "ignore errors that occur during script processing\n" + "--ignore_errors"}, + {"ignore_errors", jt_opt_ignore_errors, 0, + "ignore errors that occur during script processing\n" + "ignore_errors"}, - /* User interface commands */ - {"======== control =========", jt_noop, 0, "control commands"}, - {"help", Parser_help, 0, "help"}, - {"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"}, + /* User interface commands */ + {"======== control =========", NULL, 0, "control commands"}, + {"help", Parser_help, 0, "help"}, + {"lustre_build_version", jt_get_version, 0, + "print version of Lustre modules\n" + "usage: lustre_build_version"}, + {"exit", Parser_quit, 0, "quit"}, + {"quit", Parser_quit, 0, "quit"}, + {"--version", Parser_version, 0, + "print build version of this utility and exit"}, + {"--list-commands", lctl_list_commands, 0, + "list commands supported by this 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...]"}, - {"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]"}, + /* Network configuration commands */ + {"===== network config =====", NULL, 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:nid4,nid5:nid6]"}, + {"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" + " [< -e | --health_error]\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"}, - {"device", jt_obd_device, 0, - "set current device to \n" - "usage: device <%name|$name|devno>"}, - {"device_list", jt_obd_list, 0, "show all devices\n" - "usage: device_list"}, - {"dl", jt_obd_list, 0, "show all devices\n" - "usage: dl [-t]"}, + /* Device selection commands */ + {"==== obd device selection ====", NULL, 0, "device selection"}, + {"device", jt_obd_device, 0, + "set current device to \n" + "usage: device <%name|$name|devno>"}, + {"device_list", jt_obd_list, 0, "show all devices\n" + "usage: device_list"}, + {"dl", jt_obd_list, 0, "show all devices\n" + "usage: dl [-t]"}, - /* Device operations */ - {"==== obd device operations ====", jt_noop, 0, "device operations"}, - {"activate", jt_obd_activate, 0, "activate an import\n"}, - {"deactivate", jt_obd_deactivate, 0, "deactivate an import. " - "This command should be used on failed OSC devices in an MDT LOV.\n"}, - {"abort_recovery", jt_obd_abort_recovery, 0, - "abort recovery on a restarting MDT or OST device\n"}, - {"set_timeout", jt_lcfg_set_timeout, 0, - "usage: conf_param obd_timeout=\n"}, - {"conf_param", jt_lcfg_mgsparam, 0, "set a permanent config param. " - "This command must be run on the MGS node\n" - "usage: conf_param ...\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 [-n|-N] name.of.param\n" - "Get the value of Lustre or LNET parameter from the specified path\n" - "Use '-n' to disable printing of parameter name when printing value\n" - "Use '-N' to print only parameter names and not the values."}, - {"set_param", jt_lcfg_setparam, 0, "set the Lustre or LNET parameter\n" - "usage: set_param [-n] name.of.param=value\n" - "Set the value of the Lustre or LNET parameter at the specified path\n" - "Use '-n' to disable printing of parameter name when setting value\n"}, + /* Device operations */ + {"==== obd device operations ====", NULL, 0, "device operations"}, + {"activate", jt_obd_activate, 0, "activate an import\n"}, + {"deactivate", jt_obd_deactivate, 0, "deactivate an import. " + "This command should be used on failed OSC devices in an MDT LOV.\n"}, + {"abort_recovery", jt_obd_abort_recovery, 0, + "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_CODE < OBD_OCD_VERSION(3, 0, 53, 0) + {"conf_param", jt_lcfg_confparam, 0, + "set a permanent config parameter.\n" + "This command must be run on the MGS node\n" + "usage: conf_param [-d] \n" + " -d Delete the permanent setting from the configuration."}, +#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 [-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] [-F]" + "\n" + "Set the value of the Lustre or LNET parameter at the specified path.\n" + " -n Disable printing of the key name when printing values.\n" + " -P Set the parameter permanently, filesystem-wide.\n" + " -d Remove the permanent setting (only with -P option).\n" + " -F Read permanent configuration from a YAML file.\n"}, + {"list_param", jt_lcfg_listparam, 0, + "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"}, - {"debug_daemon", jt_dbg_debug_daemon, 0, - "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" - "usage: debug_kernel [file] [raw]"}, - {"dk", jt_dbg_debug_kernel, 0, - "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" - "usage: df [output]"}, - {"clear", jt_dbg_clear_debug_buf, 0, "clear kernel debug buffer\n" - "usage: clear"}, - {"mark", jt_dbg_mark_debug_buf, 0, - "insert marker text in kernel debug buffer\n" - "usage: mark "}, - {"filter", jt_dbg_filter, 0, "filter message type\n" - "usage: filter "}, - {"show", jt_dbg_show, 0, "Show specific type of messages\n" - "usage: show "}, - {"debug_list", jt_dbg_list, 0, "list subsystem and debug types\n" - "usage: debug_list "}, - {"modules", jt_dbg_modules, 0, - "provide gdb-friendly module information\n" - "usage: modules "}, + /* Debug commands */ + {"==== debugging control ====", NULL, 0, "debug"}, + {"debug_daemon", jt_dbg_debug_daemon, 0, + "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" + "usage: debug_kernel [file] [raw]"}, + {"dk", jt_dbg_debug_kernel, 0, + "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" + "usage: df [output]"}, + {"clear", jt_dbg_clear_debug_buf, 0, "clear kernel debug buffer\n" + "usage: clear"}, + {"mark", jt_dbg_mark_debug_buf, 0, + "insert marker text in kernel debug buffer\n" + "usage: mark "}, + {"filter", jt_dbg_filter, 0, "filter message type\n" + "usage: filter "}, + {"show", jt_dbg_show, 0, "Show specific type of messages\n" + "usage: show "}, + {"debug_list", jt_dbg_list, 0, "list subsystem and debug types\n" + "usage: debug_list "}, + {"modules", jt_dbg_modules, 0, + "provide gdb-friendly module information\n" + "usage: modules "}, - /* Device configuration commands */ - {"== device setup (these are not normally used post 1.4) ==", - jt_noop, 0, "device config"}, - {"attach", jt_lcfg_attach, 0, - "set the type, name, and uuid of the current device\n" - "usage: attach type name uuid"}, - {"detach", jt_obd_detach, 0, - "remove driver (and name and uuid) from current device\n" - "usage: detach"}, - {"setup", jt_lcfg_setup, 0, - "type specific device configuration information\n" - "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"}, + /* Pool commands */ + {"=== Pools ==", NULL, 0, "pool management"}, + {"pool_new", jt_pool_cmd, 0, + "add a new pool\n" + "usage: pool_new ."}, + {"pool_add", jt_pool_cmd, 0, + "add the named OSTs to the pool\n" + "usage: pool_add . "}, + {"pool_remove", jt_pool_cmd, 0, + "remove the named OST from the pool\n" + "usage: pool_remove . "}, + {"pool_destroy", jt_pool_cmd, 0, + "destroy a pool\n" + "usage: pool_destroy ."}, + {"pool_list", jt_pool_cmd, 0, + "list pools and pools members\n" + "usage: pool_list [.] | "}, - /* virtual block operations */ - {"==== virtual block device ====", jt_noop, 0, "virtual block device"}, - {"blockdev_attach", jt_blockdev_attach, 0, - "attach a lustre regular file to a virtual block device\n" - "usage: blockdev_attach "}, - {"blockdev_detach", jt_blockdev_detach, 0, - "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" - "usage: blockdev_info "}, +#ifdef HAVE_SERVER_SUPPORT + /* Barrier commands */ + {"=== Barrier ==", NULL, 0, "barrier management"}, + {"barrier_freeze", jt_barrier_freeze, 0, + "freeze write barrier on MDTs\n" + "usage: barrier_freeze [timeout (in seconds)]"}, + {"barrier_thaw", jt_barrier_thaw, 0, + "thaw write barrier on MDTs\n" + "usage: barrier_thaw "}, + {"barrier_stat", jt_barrier_stat, 0, + "query write barrier status on MDTs\n" + "usage: barrier_stat [--state|-s] [--timeout|-t] "}, + {"barrier_rescan", jt_barrier_rescan, 0, + "rescan the system to filter out inactive MDT(s) for barrier\n" + "usage: barrier_rescan [timeout (in seconds)]"}, - /* Test only commands */ - {"==== testing (DANGEROUS) ====", jt_noop, 0, "testing (DANGEROUS)"}, - {"--threads", jt_opt_threads, 0, - "run separate instances of on device \n" - "--threads "}, - {"lookup", jt_obd_mdc_lookup, 0, "report file mode info\n" - "usage: lookup "}, - {"readonly", jt_obd_set_readonly, 0, - "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 []"}, - {"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]"}, - {"getattr", jt_obd_getattr, 0, - "get attribute for OST object \n" - "usage: getattr "}, - {"setattr", jt_obd_setattr, 0, - "set mode attribute for OST object \n" - "usage: setattr "}, - {"create", jt_obd_create, 0, - "create OST objects (with )\n" - "usage: create [num [mode [verbose [lsm data]]]]"}, - {"destroy", jt_obd_destroy, 0, - "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_setattr", jt_obd_test_setattr, 0, - "do setattrs (on OST object (objid+1 on each thread))\n" - "usage: test_setattr [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]]]]"}, - {"lwt", jt_ptl_lwt, 0, - "light-weight tracing\n" - "usage: lwt start\n" - " lwt stop [file]"}, - {"memhog", jt_ptl_memhog, 0, - "memory pressure testing\n" - "usage: memhog []"}, + /* Snapshot commands */ + {"=== Snapshot ==", NULL, 0, "Snapshot management"}, + {"snapshot_create", jt_snapshot_create, 0, + "create the snapshot\n" + "usage: snapshot_create [-b | --barrier [on | off]]\n" + " [-c | --comment comment]\n" + " <-F | --fsname fsname>\n" + " [-h | --help] <-n | --name ssname>\n" + " [-r | --rsh remote_shell]\n" + " [-t | --timeout timeout]"}, + {"snapshot_destroy", jt_snapshot_destroy, 0, + "destroy the snapshot\n" + "usage: snapshot_destroy [-f | --force]\n" + " <-F | --fsname fsname> [-h | --help]\n" + " <-n | --name ssname>\n" + " [-r | --rsh remote_shell]"}, + {"snapshot_modify", jt_snapshot_modify, 0, + "modify the snapshot\n" + "usage: snapshot_modify [-c | --comment comment]\n" + " <-F | --fsname fsname> [-h | --help]\n" + " <-n | --name ssname> [-N | --new new_ssname]\n" + " [-r | --rsh remote_shell]"}, + {"snapshot_list", jt_snapshot_list, 0, + "query the snapshot(s)\n" + "usage: snapshot_list [-d | --detail]\n" + " <-F | --fsname fsname> [-h | --help]\n" + " [-n | --name ssname] [-r | --rsh remote_shell]"}, + {"snapshot_mount", jt_snapshot_mount, 0, + "mount the snapshot\n" + "usage: snapshot_mount <-F | --fsname fsname> [-h | --help]\n" + " <-n | --name ssname>\n" + " [-r | --rsh remote_shell]"}, + {"snapshot_umount", jt_snapshot_umount, 0, + "umount the snapshot\n" + "usage: snapshot_umount <-F | --fsname fsname> [-h | --help]\n" + " <-n | --name ssname>\n" + " [-r | --rsh remote_shell]"}, +#endif /* HAVE_SERVER_SUPPORT */ + /* Nodemap commands */ + {"=== Nodemap ===", NULL, 0, "nodemap management"}, + {"nodemap_activate", jt_nodemap_activate, 0, + "activate nodemap idmapping functions\n" + "usage: nodemap_activate {0|1}"}, + {"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_set_fileset", jt_nodemap_set_fileset, 0, + "set a fileset on a nodemap\n" + "usage: nodemap_set_fileset "}, + {"nodemap_set_sepol", jt_nodemap_set_sepol, 0, + "set SELinux policy info on a nodemap\n" + "usage: nodemap_set_sepol "}, + {"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]"}, - {"==== obsolete (DANGEROUS) ====", jt_noop, 0, "obsolete (DANGEROUS)"}, - /* some test scripts still use these */ - {"cfg_device", jt_obd_device, 0, - "set current device to \n" - "usage: device "}, - {"recover", jt_obd_recover, 0, - "try to restore a lost connection immediately\n" - "usage: recover [MDC/OSC device]"}, - /* saving for sanity 44a */ - {"lov_getconfig", jt_obd_lov_getconfig, 0, - "read lov configuration from an mds device\n" - "usage: lov_getconfig "}, - /* Llog operations */ - {"llog_catlist", jt_llog_catlist, 0, - "list all catalog logs on current device.\n" - "usage: llog_catlist"}, - {"llog_info", jt_llog_info, 0, - "print log header information.\n" - "usage: llog_info <$logname|#oid#ogr#ogen>\n" - " oid, ogr and ogen are hexadecimal."}, - {"llog_print", jt_llog_print, 0, - "print log content information.\n" - "usage: llog_print <$logname|#oid#ogr#ogen> [from] [to]\n" - " oid, ogr and ogen are hexadecimal.\n" - " print all records from index 1 by default."}, - {"llog_check", jt_llog_check, 0, - "print log content information.\n" - "usage: llog_check <$logname|#oid#ogr#ogen> [from] [to]\n" - " oid, ogr and ogen are hexadecimal.\n" - " check all records from index 1 by default."}, - {"llog_cancel", jt_llog_cancel, 0, - "cancel one record in log.\n" - "usage: llog_cancel "}, - {"llog_remove", jt_llog_remove, 0, - "remove one log from catalog, erase it from disk.\n" - "usage: llog_remove "}, - /* 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 portals 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" - "usage: del_route [] []"}, - {"set_route", jt_ptl_notify_router, 0, - "enable/disable routes via gateway in the portals routing table\n" - "usage: set_route [