X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;ds=sidebyside;f=lustre%2Futils%2Flctl.c;h=8ff3dcc27ce65b120078e9ea442a7e1eae1ab621;hb=4527a65cc1a46740c8edee7557a3cdd7ce035d87;hp=95421d257f7715463d857dff6541581424eee7af;hpb=d3a0b3d00a7e14c5918880da43bd420fd8f01198;p=fs%2Flustre-release.git diff --git a/lustre/utils/lctl.c b/lustre/utils/lctl.c index 95421d2..8ff3dcc 100644 --- a/lustre/utils/lctl.c +++ b/lustre/utils/lctl.c @@ -25,8 +25,12 @@ +#include +#include +#include #include #include +#include #include #include "obdctl.h" #include "parser.h" @@ -45,6 +49,75 @@ static int jt_opt_ignore_errors(int argc, char **argv) { return 0; } +/* + * XXX Should not belong to here + */ +static int flush_cred_ioctl(char *mp) +{ + int fd, rc; + + fd = open(mp, O_RDONLY); + if (fd == -1) { + fprintf(stderr, "flush_cred_ioctl: error open %s: %s\n", + mp, strerror(errno)); + return -1; + } + + rc = ioctl(fd, LL_IOC_FLUSH_CRED); + if (rc == -1) { + fprintf(stderr, "flush_cred_ioctl: error ioctl %s: %s\n", + mp, strerror(errno)); + } + + close(fd); + return rc; +} + +static int jt_flush_cred(int argc, char **argv) +{ + FILE *proc; + char procline[PATH_MAX], *line; + int i, rc = 0; + + /* no args means search all lustre mountpoints */ + if (argc < 2) { + proc = fopen("/proc/mounts", "r"); + if (!proc) { + fprintf(stderr, "%s: can't open /proc/mounts\n", + jt_cmdname(argv[0])); + return -1; + } + + while ((line = fgets(procline, PATH_MAX, proc)) != NULL) { + char dev[PATH_MAX]; + char mp[PATH_MAX]; + char fs[PATH_MAX]; + + if (sscanf(line, "%s %s %s", dev, mp, fs) != 3) { + fprintf(stderr, "%s: unexpected format in " + "/proc/mounts\n", + jt_cmdname(argv[0])); + return -1; + } + + if (strcmp(fs, "lustre") && + strcmp(fs, "lustre_lite")) + continue; + + if (flush_cred_ioctl(mp)) + rc = -1; + } + } else { + /* follow the exact flush sequence as supplied */ + for (i = 1; i < argc; i++) { + if (flush_cred_ioctl(argv[i])) + rc = -1; + } + } + + return rc; +} + command_t cmdlist[] = { /* Metacommands */ {"--device", jt_opt_device, 0, @@ -67,19 +140,25 @@ command_t cmdlist[] = { "usage: --net "}, {"network", jt_ptl_network, 0, "commands that follow apply to net\n" "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 [ise]"}, - {"del_autoconn", jt_ptl_del_autoconnect, 0, "remove an autoconnect entry\n" - "usage: del_autoconn [] [] [ks]"}, + {"interface_list", jt_ptl_print_interfaces, 0, "print interface entries\n" + "usage: interface_list"}, + {"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]"}, + {"peer_list", jt_ptl_print_peers, 0, "print peer entries\n" + "usage: peer_list"}, + {"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 [] [] [ks]"}, {"conn_list", jt_ptl_print_connections, 0, "print all the connected remote nid\n" "usage: conn_list"}, {"connect", jt_ptl_connect, 0, "connect to a remote nid\n" "usage: connect [iIOC]"}, {"disconnect", jt_ptl_disconnect, 0, "disconnect from a remote nid\n" "usage: disconnect []"}, - {"active_tx", jt_ptl_print_active_txs, 0, "print active transmits (no args)\n" + {"active_tx", jt_ptl_print_active_txs, 0, "print active transmits\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 " @@ -97,22 +176,17 @@ command_t cmdlist[] = { "add an entry to the portals routing table\n" "usage: add_route []"}, {"del_route", jt_ptl_del_route, 0, - "delete the route via the given gateway to the given targets from the portals routing table\n" + "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 the given gateway in the portals routing table\n" + "enable/disable routes via gateway in the portals routing table\n" "usage: set_route [