Whamcloud - gitweb
- Added lctl.c which is basically ptlctl/obdctl/debugctl all
[fs/lustre-release.git] / lustre / utils / lctl.h
1 #ifndef _LCTL_H_
2 #define _LCTL_H_
3
4 #include "parser.h"
5 extern command_t cmdlist[];
6
7 /* Network configuration commands */ 
8 int jt_net_network(int argc, char **argv);
9 int jt_net_connect(int argc, char **argv);
10 int jt_net_disconnect(int argc, char **argv);
11 int jt_net_add_uuid(int argc, char **argv);
12 int jt_net_del_uuid(int argc, char **argv);
13 int jt_net_mynid(int argc, char **argv);
14 int jt_net_add_route(int argc, char **argv);
15 int jt_net_del_route(int argc, char **argv);
16 int jt_net_route_list(int argc, char **argv);
17 int jt_net_recv_mem(int argc, char **argv);
18 int jt_net_send_mem(int argc, char **argv);
19 int jt_net_nagle(int argc, char **argv);
20
21 /* Device selection commands */
22 int jt_dev_newdev(int argc, char **argv);
23 int jt_dev_uuid2dev(int argc, char **argv);
24 int jt_dev_name2dev(int argc, char **argv);
25 int jt_dev_device(int argc, char **argv);
26 int jt_dev_list(int argc, char **argv);
27
28 /* Device configuration commands */
29 int jt_dev_attach(int argc, char **argv);
30 int jt_dev_setup(int argc, char **argv);
31 int jt_dev_cleanup(int argc, char **argv);
32 int jt_dev_detach(int argc, char **argv);
33 int jt_dev_lov_config(int argc, char **argv);
34
35 /* Device operations */
36 int jt_dev_probe(int argc, char **argv);
37 int jt_dev_close(int argc, char **argv);
38 int jt_dev_getattr(int argc, char **argv);
39 int jt_dev_setattr(int argc, char **argv);
40 int jt_dev_test_getattr(int argc, char **argv);
41 int jt_dev_test_brw(int argc, char **argv);
42 int jt_dev_test_ldlm(int argc, char **argv);
43
44 /* Debug commands */
45 int jt_debug_kernel(int argc, char **argv);
46 int jt_debug_file(int argc, char **argv);
47 int jt_debug_clear(int argc, char **argv);
48 int jt_debug_mark(int argc, char **argv);
49 int jt_debug_filter(int argc, char **argv);
50 int jt_debug_show(int argc, char **argv);
51 int jt_debug_list(int argc, char **argv);
52 int jt_debug_modules(int argc, char **argv);
53 int jt_debug_panic(int argc, char **argv);
54
55 int do_disconnect(char *func, int verbose);
56 int network_setup(int argc, char **argv);
57 int device_setup(int argc, char **argv);
58 int debug_setup(int argc, char **argv);
59
60
61 /* So we can tell between error codes and devices */
62 #define N2D_OFF         0x100
63
64 #define IOCINIT(data)                                                   \
65 do {                                                                    \
66         memset(&data, 0, sizeof(data));                                 \
67         data.ioc_version = OBD_IOCTL_VERSION;                           \
68         data.ioc_addr = conn_addr;                                      \
69         data.ioc_cookie = conn_cookie;                                  \
70         data.ioc_len = sizeof(data);                                    \
71         if (fd < 0) {                                                   \
72                 fprintf(stderr, "No device open, use device\n");        \
73                 return 1;                                               \
74         }                                                               \
75 } while (0)
76
77 #define PORTALS_CONNECT                                                 \
78 do {                                                                    \
79         if (g_pfd != -1)                                                \
80                 break;                                                  \
81                                                                         \
82         g_pfd = open("/dev/portals", O_RDWR);                           \
83         if (g_pfd < 0) {                                                \
84                 fprintf(stderr, "error: failed to open /dev/portals: %s\n" \
85                         "hint: the portals module may not be loaded\n",    \
86                         strerror(errno));                               \
87                 return -1;                                              \
88         }                                                               \
89 } while(0)
90
91 #define LUSTRE_CONNECT(func)                                            \
92 do {                                                                    \
93         if (fd != -1)                                                   \
94                 break;                                                  \
95                                                                         \
96         fd = open("/dev/obd", O_RDWR);                                  \
97         if (fd < 0) {                                                   \
98                 fprintf(stderr, "error: %s failed to open /dev/obd: %s\n" \
99                         "hint: the lustre modules may not be loaded\n",   \
100                         cmdname(func), strerror(errno));                \
101                 return -1;                                              \
102         }                                                               \
103 } while(0)
104
105 #define difftime(a, b)                                                  \
106         ((double)((a)->tv_sec - (b)->tv_sec) +                          \
107         ((double)((a)->tv_usec - (b)->tv_usec) / 1000000))
108
109 static inline char *cmdname(char *func) {
110         static char buf[512];
111         int thread = 0;
112         
113         if (thread) {
114                 sprintf(buf, "%s-%d", func, thread);
115                 return buf;
116         }
117
118         return func;
119 }
120
121 typedef struct {
122         char *name;
123         int num;
124 } name2num_t;
125
126 #endif
127