Whamcloud - gitweb
LU-5844 get rid of IOC_LIBCFS_MEMHOG and IOC_LIBCFS_PANIC ioctls
[fs/lustre-release.git] / lnet / utils / portals.c
index bd670ce..ab3f9f7 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  *
- * Copyright (c) 2013, 2014, Intel Corporation.
+ * Copyright (c) 2013, 2015, Intel Corporation.
  *
  *   This file is part of Lustre, https://wiki.hpdd.intel.com/
  *
@@ -22,7 +22,9 @@
 #include <errno.h>
 #include <getopt.h>
 #include <limits.h>
-#include <netdb.h>
+#ifdef HAVE_NETDB_H
+# include <netdb.h>
+#endif
 #include <stdarg.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <sys/time.h>
 #include <time.h>
 #include <linux/types.h>
-#include <libcfs/libcfs.h>
+
 #include <libcfs/util/string.h>
 #include <libcfs/util/ioctl.h>
+#include <libcfs/user-time.h>
+#include <libcfs/libcfs_debug.h>
 #include <lnet/lnetctl.h>
 #include <lnet/socklnd.h>
 #include <lnet/lnet.h>
@@ -41,7 +45,8 @@
 unsigned int libcfs_debug;
 unsigned int libcfs_printk = D_CANTMASK;
 
-static int   g_net_set;
+static bool  g_net_interactive;
+static bool  g_net_set;
 static __u32 g_net;
 
 #define IOC_BUF_SIZE   8192
@@ -225,30 +230,40 @@ lnet_parse_nid(char *nid_str, lnet_process_id_t *id_ptr)
         return 0;
 }
 
-int g_net_is_set (char *cmd)
+static int g_net_is_set(char *cmd)
 {
-        if (g_net_set)
-                return 1;
+       if (g_net_set)
+               return 1;
 
-        if (cmd != NULL)
-                fprintf(stderr,
-                        "You must run the 'network' command before '%s'.\n",
-                        cmd);
-        return 0;
+       if (cmd != NULL) {
+               char *net;
+
+               if (g_net_interactive)
+                       net = "network";
+               else
+                       net = "--net";
+
+               fprintf(stderr,
+                       "You must run '%s <network>' command before '%s'\n",
+                       cmd, net);
+               return 0;
+       }
+
+       return 0;
 }
 
-int g_net_is_compatible (char *cmd, ...)
+static int g_net_is_compatible(char *cmd, ...)
 {
-        va_list       ap;
-        int           nal;
+       va_list ap;
+       int nal;
 
-        if (!g_net_is_set(cmd))
-                return 0;
+       if (!g_net_is_set(cmd))
+               return 0;
 
-        va_start(ap, cmd);
+       va_start(ap, cmd);
 
-        do {
-                nal = va_arg (ap, int);
+       do {
+               nal = va_arg(ap, int);
                 if (nal == LNET_NETTYP(g_net)) {
                         va_end (ap);
                         return 1;
@@ -262,11 +277,15 @@ int g_net_is_compatible (char *cmd, ...)
                          "Command %s not compatible with %s NAL\n",
                          cmd,
                          libcfs_lnd2str(LNET_NETTYP(g_net)));
+
         return 0;
 }
 
 int ptl_initialize(int argc, char **argv)
 {
+       if (argc > 1)
+               g_net_interactive = true;
+
         register_ioc_dev(LNET_DEV_ID, LNET_DEV_PATH,
                          LNET_DEV_MAJOR, LNET_DEV_MINOR);
         return 0;
@@ -275,65 +294,62 @@ int ptl_initialize(int argc, char **argv)
 
 int jt_ptl_network(int argc, char **argv)
 {
-        struct libcfs_ioctl_data data;
-        __u32                    net = LNET_NIDNET(LNET_NID_ANY);
-        int                      rc;
+       struct libcfs_ioctl_data data;
+       __u32 net = LNET_NIDNET(LNET_NID_ANY);
+       int rc;
 
-        if (argc < 2) {
-                fprintf(stderr, "usage: %s <net>|up|down\n", argv[0]);
-                return 0;
-        }
-
-        if (!strcmp(argv[1], "unconfigure") ||
-            !strcmp(argv[1], "down")) {
-                LIBCFS_IOC_INIT(data);
-                rc = l_ioctl(LNET_DEV_ID, IOC_LIBCFS_UNCONFIGURE, &data);
+       if (argc != 2) {
+               fprintf(stderr, "usage: %s <net>|up|down\n", argv[0]);
+               return -1;
+       }
 
-                if (rc == 0) {
-                        printf ("LNET ready to unload\n");
-                        return 0;
-                }
+       if (!strcmp(argv[1], "unconfigure") || !strcmp(argv[1], "down")) {
+               LIBCFS_IOC_INIT(data);
+               rc = l_ioctl(LNET_DEV_ID, IOC_LIBCFS_UNCONFIGURE, &data);
 
-                if (errno == EBUSY)
-                        fprintf(stderr, "LNET busy\n");
-                else
-                        fprintf(stderr, "LNET unconfigure error %d: %s\n",
-                                errno, strerror(errno));
-                return -1;
-        }
+               if (rc == 0) {
+                       printf("LNET ready to unload\n");
+                       return 0;
+               }
 
-        if (!strcmp(argv[1], "configure") ||
-            !strcmp(argv[1], "up")) {
-                LIBCFS_IOC_INIT(data);
-                rc = l_ioctl(LNET_DEV_ID, IOC_LIBCFS_CONFIGURE, &data);
+               if (errno == EBUSY)
+                       fprintf(stderr, "LNET busy\n");
+               else
+                       fprintf(stderr, "LNET unconfigure error %d: %s\n",
+                               errno, strerror(errno));
+               return -1;
+       } else if (!strcmp(argv[1], "configure") || !strcmp(argv[1], "up")) {
+               LIBCFS_IOC_INIT(data);
+               rc = l_ioctl(LNET_DEV_ID, IOC_LIBCFS_CONFIGURE, &data);
 
-                if (rc == 0) {
-                        printf ("LNET configured\n");
-                        return 0;
-                }
+               if (rc == 0) {
+                       printf("LNET configured\n");
+                       return 0;
+               }
 
-                fprintf(stderr, "LNET configure error %d: %s\n",
-                        errno, strerror(errno));
-                return -1;
-        }
+               fprintf(stderr, "LNET configure error %d: %s\n",
+                       errno, strerror(errno));
+               return -1;
+       }
 
-        net = libcfs_str2net(argv[1]);
-        if (net == LNET_NIDNET(LNET_NID_ANY)) {
-                fprintf(stderr, "Can't parse net %s\n", argv[1]);
-                return -1;
-        }
+       net = libcfs_str2net(argv[1]);
+       if (net == LNET_NIDNET(LNET_NID_ANY)) {
+               fprintf(stderr, "Can't parse net %s\n", argv[1]);
+               return -1;
+       }
 
-        if (LNET_NETTYP(net) == CIBLND    ||
-            LNET_NETTYP(net) == OPENIBLND ||
-            LNET_NETTYP(net) == IIBLND    ||
-            LNET_NETTYP(net) == VIBLND) {
-                fprintf(stderr, "Net %s obsoleted\n", libcfs_lnd2str(net));
-                return -1;
-        }
+       if (LNET_NETTYP(net) == QSWLND || LNET_NETTYP(net) == GMLND ||
+           LNET_NETTYP(net) == PTLLND || LNET_NETTYP(net) == CIBLND ||
+           LNET_NETTYP(net) == OPENIBLND || LNET_NETTYP(net) == IIBLND ||
+           LNET_NETTYP(net) == RALND || LNET_NETTYP(net) == VIBLND ||
+           LNET_NETTYP(net) == MXLND) {
+               fprintf(stderr, "Net %s obsoleted\n", libcfs_lnd2str(net));
+               return -1;
+       }
 
-        g_net_set = 1;
-        g_net = net;
-        return 0;
+       g_net_set = true;
+       g_net = net;
+       return 0;
 }
 
 int
@@ -648,23 +664,22 @@ jt_ptl_print_peers (int argc, char **argv)
         return 0;
 }
 
-int
-jt_ptl_add_peer (int argc, char **argv)
+int jt_ptl_add_peer(int argc, char **argv)
 {
-        struct libcfs_ioctl_data data;
-        lnet_nid_t               nid;
-        __u32                    ip = 0;
-        int                      port = 0;
-        int                      rc;
+       struct libcfs_ioctl_data data;
+       lnet_nid_t nid;
+       __u32 ip = 0;
+       int port = 0;
+       int rc;
 
        if (!g_net_is_compatible(argv[0], SOCKLND, GNILND, 0))
-                return -1;
+               return -1;
 
-        if (argc != 4) {
-               fprintf (stderr, "usage(tcp,ra,gni): %s nid ipaddr port\n",
-                         argv[0]);
-                return 0;
-        }
+       if (argc != 4) {
+               fprintf(stderr, "usage(tcp,gni): %s nid ipaddr port\n",
+                       argv[0]);
+               return 0;
+       }
 
         nid = libcfs_str2nid(argv[1]);
         if (nid == LNET_NID_ANY) {
@@ -1048,7 +1063,7 @@ jt_ptl_add_route (int argc, char **argv)
 {
        struct lnet_ioctl_config_data data;
        lnet_nid_t               gateway_nid;
-       unsigned int             hops = 1;
+       __u32                    hops = LNET_UNDEFINED_HOPS;
        unsigned int             priority = 0;
        char                    *end;
        int                      rc;
@@ -1069,8 +1084,9 @@ jt_ptl_add_route (int argc, char **argv)
        }
 
        if (argc > 2) {
-               hops = strtoul(argv[2], &end, 0);
-               if (hops == 0 || hops >= 256 || (end != NULL && *end != 0)) {
+               hops = strtol(argv[2], &end, 0);
+               if (hops == 0 || hops >= 256 ||
+                   (end != NULL && *end != 0)) {
                        fprintf(stderr, "Can't parse hopcount \"%s\"\n",
                                argv[2]);
                        return -1;
@@ -1666,49 +1682,6 @@ get_cycles_per_usec ()
         return (1000.0);
 }
 
-int jt_ptl_memhog(int argc, char **argv)
-{
-        static int                gfp = 0;        /* sticky! */
-
-        struct libcfs_ioctl_data  data;
-        int                       rc;
-        int                       count;
-        char                     *end;
-
-        if (argc < 2)  {
-                fprintf(stderr, "usage: %s <npages> [<GFP flags>]\n", argv[0]);
-                return 0;
-        }
-
-        count = strtol(argv[1], &end, 0);
-        if (count < 0 || *end != 0) {
-                fprintf(stderr, "Can't parse page count '%s'\n", argv[1]);
-                return -1;
-        }
-
-        if (argc >= 3) {
-                rc = strtol(argv[2], &end, 0);
-                if (*end != 0) {
-                        fprintf(stderr, "Can't parse gfp flags '%s'\n", argv[2]);
-                        return -1;
-                }
-                gfp = rc;
-        }
-
-        LIBCFS_IOC_INIT(data);
-        data.ioc_count = count;
-        data.ioc_flags = gfp;
-        rc = l_ioctl(LNET_DEV_ID, IOC_LIBCFS_MEMHOG, &data);
-
-        if (rc != 0) {
-                fprintf(stderr, "memhog %d failed: %s\n", count, strerror(errno));
-                return -1;
-        }
-
-        printf("memhog %d OK\n", count);
-        return 0;
-}
-
 int jt_ptl_testprotocompat(int argc, char **argv)
 {
         struct libcfs_ioctl_data  data;