Whamcloud - gitweb
b=22455 add "list_param -R"
[fs/lustre-release.git] / lustre / utils / lctl.c
index a1b58f6..f1c7c31 100644 (file)
@@ -137,14 +137,25 @@ command_t cmdlist[] = {
         {"local_param", jt_lcfg_param, 0, "set a temporary, local param\n"
          "usage: local_param <target.keyword=val> ...\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."},
+         "usage: get_param [-n|-N|-F] <param_path1 param_path2 ...>\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"
-         "usage: set_param [-n] name.of.param=value\n"
+         "usage: set_param [-n] <param_path1=value1 param_path2 value2 ...>\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"},
+         "  -n  Disable printing of the key name when printing values."},
+        {"list_param", jt_lcfg_listparam, 0,
+         "list the Lustre or LNET parameter name\n"
+         "usage: list_param [-F] <param_path1 param_path2 ...>\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"},
 
         /* Debug commands */
         {"==== debugging control ====", jt_noop, 0, "debug"},
@@ -178,6 +189,45 @@ command_t cmdlist[] = {
          "provide gdb-friendly module information\n"
          "usage: modules <path>"},
 
+        /* 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 <file_name> <device_name>"},
+        {"blockdev_detach", jt_blockdev_detach, 0,
+         "detach a lustre regular file from a virtual block device\n"
+         "usage: blockdev_detach <device_name>"},
+        {"blockdev_info", jt_blockdev_info, 0,
+         "get the device info of a attached file\n"
+         "usage: blockdev_info <device_name>"},
+
+        /* Pool commands */
+        {"===  Pools ==", jt_noop, 0, "pool management"},
+        {"pool_new", jt_pool_cmd, 0,
+         "add a new pool\n"
+         "usage pool_new <fsname>.<poolname>"},
+        {"pool_add", jt_pool_cmd, 0,
+         "add the named OSTs to the pool\n"
+         "usage pool_add <fsname>.<poolname> <ostname indexed list>"},
+        {"pool_remove", jt_pool_cmd, 0,
+         "remove the named OST from the pool\n"
+         "usage pool_remove <fsname>.<poolname> <ostname indexed list>"},
+        {"pool_destroy", jt_pool_cmd, 0,
+         "destroy a pool\n"
+         "usage pool_destroy <fsname>.<poolname>"},
+        {"pool_list", jt_pool_cmd, 0,
+         "list pools and pools members\n"
+         "usage pool_list  <fsname>[.<poolname>] | <pathname>"},
+
+        /* Changelog commands */
+        {"===  Changelogs ==", jt_noop, 0, "changelog user management"},
+        {"changelog_register", jt_changelog_register, 0,
+         "register a new persistent changelog user, returns id\n"
+         "usage:\tdevice <mdtname>\n\tchangelog_register [-n]"},
+        {"changelog_deregister", jt_changelog_deregister, 0,
+         "deregister an existing changelog user\n"
+         "usage:\tdevice <mdtname>\n\tchangelog_deregister <id>"},
+
         /* Device configuration commands */
         {"== device setup (these are not normally used post 1.4) ==",
                 jt_noop, 0, "device config"},
@@ -196,18 +246,6 @@ command_t cmdlist[] = {
          "print log of recorded commands for this config to kernel debug log\n"
          "usage: dump_cfg config-uuid-name"},
 
-        /* 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 <file_name> <device_name>"},
-        {"blockdev_detach", jt_blockdev_detach, 0,
-         "detach a lustre regular file from a virtual block device\n"
-         "usage: blockdev_detach <device_name>"},
-        {"blockdev_info", jt_blockdev_info, 0,
-         "get the device info of a attached file\n"
-         "usage: blockdev_info <device_name>"},
-
         /* Test only commands */
         {"==== testing (DANGEROUS) ====", jt_noop, 0, "testing (DANGEROUS)"},
         {"--threads", jt_opt_threads, 0,
@@ -269,6 +307,9 @@ command_t cmdlist[] = {
         {"memhog", jt_ptl_memhog, 0,
          "memory pressure testing\n"
          "usage: memhog <page count> [<gfp flags>]"},
+        {"getobjversion", jt_get_obj_version, 0,
+         "get the version of an object on servers\n"
+         "usage: getobjversion <fid>"},
 
         {"==== obsolete (DANGEROUS) ====", jt_noop, 0, "obsolete (DANGEROUS)"},
         /* some test scripts still use these */
@@ -345,7 +386,7 @@ int lctl_main(int argc, char **argv)
         }
 
         obd_finalize(argc, argv);
-        return rc;
+        return rc < 0 ? -rc : rc;
 }
 
 #ifndef LIBLUSTRE_TEST