portals.c
来自「lustre 1.6.5 source code」· C语言 代码 · 共 1,711 行 · 第 1/4 页
C
1,711 行
lnet_parse_ipaddr (&ipaddr, argv[2]) != 0) { fprintf (stderr, "Can't parse ip addr %s\n", argv[2]); return -1; } LIBCFS_IOC_INIT(data); data.ioc_net = g_net; data.ioc_nid = nid; data.ioc_u32[0] = ipaddr; rc = l_ioctl(LNET_DEV_ID, IOC_LIBCFS_CLOSE_CONNECTION, &data); if (rc != 0) { fprintf(stderr, "failed to remove connection: %s\n", strerror(errno)); return -1; } return 0;}int jt_ptl_push_connection (int argc, char **argv){ struct libcfs_ioctl_data data; int rc; lnet_nid_t nid = LNET_NID_ANY; if (argc > 2) { fprintf(stderr, "usage: %s [nid]\n", argv[0]); return 0; } if (!g_net_is_compatible (argv[0], SOCKLND, 0)) return -1; if (argc > 1 && !libcfs_str2anynid(&nid, argv[1])) { fprintf(stderr, "Can't parse nid: %s\n", argv[1]); return -1; } LIBCFS_IOC_INIT(data); data.ioc_net = g_net; data.ioc_nid = nid; rc = l_ioctl(LNET_DEV_ID, IOC_LIBCFS_PUSH_CONNECTION, &data); if (rc != 0) { fprintf(stderr, "failed to push connection: %s\n", strerror(errno)); return -1; } return 0;}intjt_ptl_print_active_txs (int argc, char **argv){ struct libcfs_ioctl_data data; int index; int rc; if (!g_net_is_compatible (argv[0], QSWLND, 0)) return -1; for (index = 0;;index++) { LIBCFS_IOC_INIT(data); data.ioc_net = g_net; data.ioc_count = index; rc = l_ioctl(LNET_DEV_ID, IOC_LIBCFS_GET_TXDESC, &data); if (rc != 0) break; printf ("type %u payload %6d to %s via %s by pid %6d: " "%s, %s, state %d\n", data.ioc_u32[0], data.ioc_count, libcfs_nid2str(data.ioc_nid), libcfs_nid2str(data.ioc_u64[0]), data.ioc_u32[1], (data.ioc_flags & 1) ? "delayed" : "immediate", (data.ioc_flags & 2) ? "nblk" : "normal", data.ioc_flags >> 2); } if (index == 0) { if (errno == ENOENT) { printf ("<no active descs>\n"); } else { fprintf(stderr, "Error getting active transmits list: " "%s: check dmesg.\n", strerror(errno)); } } return 0;}int jt_ptl_ping(int argc, char **argv){ int rc; int timeout; lnet_process_id_t id; lnet_process_id_t ids[16]; int maxids = sizeof(ids)/sizeof(ids[0]); struct libcfs_ioctl_data data; char *sep; int i; if (argc < 2) { fprintf(stderr, "usage: %s id [timeout (secs)]\n", argv[0]); return 0; } sep = strchr(argv[1], '-'); if (sep == NULL) { id.pid = LNET_PID_ANY; id.nid = libcfs_str2nid(argv[1]); if (id.nid == LNET_NID_ANY) { fprintf (stderr, "Can't parse nid \"%s\"\n", argv[1]); return -1; } } else { char *end; if (argv[1][0] == 'u' || argv[1][0] == 'U') id.pid = strtoul(&argv[1][1], &end, 0) | LNET_PID_USERFLAG; else id.pid = strtoul(argv[1], &end, 0); id.nid = libcfs_str2nid(sep + 1); if (end != sep || id.nid == LNET_NID_ANY) { fprintf(stderr, "Can't parse process id \"%s\"\n", argv[1]); return -1; } } if (argc > 2) timeout = 1000 * atol(argv[2]); else timeout = 1000; /* default 1 second timeout */ LIBCFS_IOC_INIT (data); data.ioc_nid = id.nid; data.ioc_u32[0] = id.pid; data.ioc_u32[1] = timeout; data.ioc_plen1 = sizeof(ids); data.ioc_pbuf1 = (char *)ids; rc = l_ioctl(LNET_DEV_ID, IOC_LIBCFS_PING, &data); if (rc != 0) { fprintf(stderr, "failed to ping %s: %s\n", id.pid == LNET_PID_ANY ? libcfs_nid2str(id.nid) : libcfs_id2str(id), strerror(errno)); return -1; } for (i = 0; i < data.ioc_count && i < maxids; i++) printf("%s\n", libcfs_id2str(ids[i])); if (data.ioc_count > maxids) printf("%d out of %d ids listed\n", maxids, data.ioc_count); return 0;}int jt_ptl_mynid(int argc, char **argv){ struct libcfs_ioctl_data data; lnet_nid_t nid; int rc; if (argc != 2) { fprintf(stderr, "usage: %s NID\n", argv[0]); return 0; } nid = libcfs_str2nid(argv[1]); if (nid == LNET_NID_ANY) { fprintf(stderr, "Can't parse NID '%s'\n", argv[1]); return -1; } LIBCFS_IOC_INIT(data); data.ioc_net = LNET_NIDNET(nid); data.ioc_nid = nid; rc = l_ioctl(LNET_DEV_ID, IOC_LIBCFS_REGISTER_MYNID, &data); if (rc < 0) fprintf(stderr, "setting my NID failed: %s\n", strerror(errno)); else printf("registered my nid %s\n", libcfs_nid2str(nid)); return 0;}intjt_ptl_fail_nid (int argc, char **argv){ int rc; lnet_nid_t nid; unsigned int threshold; struct libcfs_ioctl_data data; if (argc < 2 || argc > 3) { fprintf (stderr, "usage: %s nid|\"*\" [count (0 == mend)]\n", argv[0]); return (0); } if (!libcfs_str2anynid(&nid, argv[1])) { fprintf (stderr, "Can't parse nid \"%s\"\n", argv[1]); return (-1); } if (argc < 3) { threshold = LNET_MD_THRESH_INF; } else if (sscanf (argv[2], "%i", &threshold) != 1) { fprintf (stderr, "Can't parse count \"%s\"\n", argv[2]); return (-1); } LIBCFS_IOC_INIT (data); data.ioc_nid = nid; data.ioc_count = threshold; rc = l_ioctl (LNET_DEV_ID, IOC_LIBCFS_FAIL_NID, &data); if (rc < 0) fprintf (stderr, "IOC_LIBCFS_FAIL_NID failed: %s\n", strerror (errno)); else printf ("%s %s\n", threshold == 0 ? "Unfailing" : "Failing", argv[1]); return (0);}intjt_ptl_add_route (int argc, char **argv){ struct libcfs_ioctl_data data; lnet_nid_t gateway_nid; unsigned int hops = 1; char *end; int rc; if (argc < 2 || argc > 3) { fprintf (stderr, "usage: %s gateway [hopcount]\n", argv[0]); return (0); } if (!g_net_is_set(argv[0])) return (-1); gateway_nid = libcfs_str2nid(argv[1]); if (gateway_nid == LNET_NID_ANY) { fprintf (stderr, "Can't parse gateway NID \"%s\"\n", argv[1]); return (-1); } if (argc == 3) { hops = strtoul(argv[2], &end, 0); if (hops >= 256 || *end != 0) { fprintf (stderr, "Can't parse hopcount \"%s\"\n", argv[2]); return -1; } } LIBCFS_IOC_INIT(data); data.ioc_net = g_net; data.ioc_count = hops; data.ioc_nid = gateway_nid; rc = l_ioctl(LNET_DEV_ID, IOC_LIBCFS_ADD_ROUTE, &data); if (rc != 0) { fprintf (stderr, "IOC_LIBCFS_ADD_ROUTE failed: %s\n", strerror (errno)); return (-1); } return (0);}intjt_ptl_del_route (int argc, char **argv){ struct libcfs_ioctl_data data; lnet_nid_t nid; int rc; if (argc != 2) { fprintf (stderr, "usage: %s gatewayNID\n", argv[0]); return (0); } if (!libcfs_str2anynid(&nid, argv[1])) { fprintf (stderr, "Can't parse gateway NID " "\"%s\"\n", argv[1]); return -1; } LIBCFS_IOC_INIT(data); data.ioc_net = g_net_set ? g_net : LNET_NIDNET(LNET_NID_ANY); data.ioc_nid = nid; rc = l_ioctl(LNET_DEV_ID, IOC_LIBCFS_DEL_ROUTE, &data); if (rc != 0) { fprintf (stderr, "IOC_LIBCFS_DEL_ROUTE (%s) failed: %s\n", libcfs_nid2str(nid), strerror (errno)); return (-1); } return (0);}intjt_ptl_notify_router (int argc, char **argv){ struct libcfs_ioctl_data data; int enable; lnet_nid_t nid; int rc; struct timeval now; time_t when; if (argc < 3) { fprintf (stderr, "usage: %s targetNID <up/down> [<time>]\n", argv[0]); return (0); } nid = libcfs_str2nid(argv[1]); if (nid == LNET_NID_ANY) { fprintf (stderr, "Can't parse target NID \"%s\"\n", argv[1]); return (-1); } if (lnet_parse_bool (&enable, argv[2]) != 0) { fprintf (stderr, "Can't parse boolean %s\n", argv[2]); return (-1); } gettimeofday(&now, NULL); if (argc < 4) { when = now.tv_sec; } else if (lnet_parse_time (&when, argv[3]) != 0) { fprintf(stderr, "Can't parse time %s\n" "Please specify either 'YYYY-MM-DD-HH:MM:SS'\n" "or an absolute unix time in seconds\n", argv[3]); return (-1); } else if (when > now.tv_sec) { fprintf (stderr, "%s specifies a time in the future\n", argv[3]); return (-1); } LIBCFS_IOC_INIT(data); data.ioc_nid = nid; data.ioc_flags = enable; /* Yeuch; 'cept I need a __u64 on 64 bit machines... */ data.ioc_u64[0] = (__u64)when; rc = l_ioctl(LNET_DEV_ID, IOC_LIBCFS_NOTIFY_ROUTER, &data); if (rc != 0) { fprintf (stderr, "IOC_LIBCFS_NOTIFY_ROUTER (%s) failed: %s\n", libcfs_nid2str(nid), strerror (errno)); return (-1); } return (0);}intjt_ptl_print_routes (int argc, char **argv){ struct libcfs_ioctl_data data; int rc; int index; __u32 net; lnet_nid_t nid; unsigned int hops; int alive; for (index = 0;;index++) { LIBCFS_IOC_INIT(data); data.ioc_count = index; rc = l_ioctl(LNET_DEV_ID, IOC_LIBCFS_GET_ROUTE, &data); if (rc != 0) break; net = data.ioc_net; hops = data.ioc_count; nid = data.ioc_nid; alive = data.ioc_flags; printf ("net %18s hops %u gw %32s %s\n", libcfs_net2str(net), hops, libcfs_nid2str(nid), alive ? "up" : "down"); } if (errno != ENOENT) fprintf(stderr, "Error getting routes: %s: check dmesg.\n", strerror(errno)); return (0);}static intlwt_control(int enable, int clear){ struct libcfs_ioctl_data data; int rc; LIBCFS_IOC_INIT(data); data.ioc_flags = (enable ? 1 : 0) | (clear ? 2 : 0); rc = l_ioctl(LNET_DEV_ID, IOC_LIBCFS_LWT_CONTROL, &data); if (rc == 0) return (0);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?