1 /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
2 * vim:expandtab:shiftwidth=8:tabstop=8:
6 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2 only,
10 * as published by the Free Software Foundation.
12 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * General Public License version 2 for more details (a copy is included
16 * in the LICENSE file that accompanied this code).
18 * You should have received a copy of the GNU General Public License
19 * version 2 along with this program; If not, see
20 * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
22 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
23 * CA 95054 USA or visit www.sun.com if you need additional information or
29 * Copyright 2008 Sun Microsystems, Inc. All rights reserved
30 * Use is subject to license terms.
33 * This file is part of Lustre, http://www.lustre.org/
34 * Lustre is a trademark of Sun Microsystems, Inc.
37 #ifndef __SELFTEST_RPC_H__
38 #define __SELFTEST_RPC_H__
40 #include <lnet/lnetst.h>
43 * LST wired structures
45 * XXX: *REPLY == *REQST + 1
48 SRPC_MSG_MKSN_REQST = 0,
49 SRPC_MSG_MKSN_REPLY = 1,
50 SRPC_MSG_RMSN_REQST = 2,
51 SRPC_MSG_RMSN_REPLY = 3,
52 SRPC_MSG_BATCH_REQST = 4,
53 SRPC_MSG_BATCH_REPLY = 5,
54 SRPC_MSG_STAT_REQST = 6,
55 SRPC_MSG_STAT_REPLY = 7,
56 SRPC_MSG_TEST_REQST = 8,
57 SRPC_MSG_TEST_REPLY = 9,
58 SRPC_MSG_DEBUG_REQST = 10,
59 SRPC_MSG_DEBUG_REPLY = 11,
60 SRPC_MSG_BRW_REQST = 12,
61 SRPC_MSG_BRW_REPLY = 13,
62 SRPC_MSG_PING_REQST = 14,
63 SRPC_MSG_PING_REPLY = 15,
64 SRPC_MSG_JOIN_REQST = 16,
65 SRPC_MSG_JOIN_REPLY = 17,
69 * All srpc_*_reqst_t's 1st field must be matchbits of reply buffer,
70 * and 2nd field matchbits of bulk buffer if any.
72 * All srpc_*_reply_t's 1st field must be a __u32 status, and 2nd field
73 * session id if needed.
76 __u64 rpyid; /* reply buffer matchbits */
77 __u64 bulkid; /* bulk buffer matchbits */
78 } WIRE_ATTR srpc_generic_reqst_t;
83 } WIRE_ATTR srpc_generic_reply_t;
87 __u64 mksn_rpyid; /* reply buffer matchbits */
88 lst_sid_t mksn_sid; /* session id */
89 __u32 mksn_force; /* use brute force */
90 char mksn_name[LST_NAME_SIZE];
91 } WIRE_ATTR srpc_mksn_reqst_t; /* make session request */
94 __u32 mksn_status; /* session status */
95 lst_sid_t mksn_sid; /* session id */
96 __u32 mksn_timeout; /* session timeout */
97 char mksn_name[LST_NAME_SIZE];
98 } WIRE_ATTR srpc_mksn_reply_t; /* make session reply */
101 __u64 rmsn_rpyid; /* reply buffer matchbits */
102 lst_sid_t rmsn_sid; /* session id */
103 } WIRE_ATTR srpc_rmsn_reqst_t; /* remove session request */
107 lst_sid_t rmsn_sid; /* session id */
108 } WIRE_ATTR srpc_rmsn_reply_t; /* remove session reply */
111 __u64 join_rpyid; /* reply buffer matchbits */
112 lst_sid_t join_sid; /* session id to join */
113 char join_group[LST_NAME_SIZE]; /* group name */
114 } WIRE_ATTR srpc_join_reqst_t;
117 __u32 join_status; /* returned status */
118 lst_sid_t join_sid; /* session id */
119 __u32 join_timeout; /* # seconds' inactivity to expire */
120 char join_session[LST_NAME_SIZE]; /* session name */
121 } WIRE_ATTR srpc_join_reply_t;
124 __u64 dbg_rpyid; /* reply buffer matchbits */
125 lst_sid_t dbg_sid; /* session id */
126 __u32 dbg_flags; /* bitmap of debug */
127 } WIRE_ATTR srpc_debug_reqst_t;
130 __u32 dbg_status; /* returned code */
131 lst_sid_t dbg_sid; /* session id */
132 __u32 dbg_timeout; /* session timeout */
133 __u32 dbg_nbatch; /* # of batches in the node */
134 char dbg_name[LST_NAME_SIZE]; /* session name */
135 } WIRE_ATTR srpc_debug_reply_t;
137 #define SRPC_BATCH_OPC_RUN 1
138 #define SRPC_BATCH_OPC_STOP 2
139 #define SRPC_BATCH_OPC_QUERY 3
142 __u64 bar_rpyid; /* reply buffer matchbits */
143 lst_sid_t bar_sid; /* session id */
144 lst_bid_t bar_bid; /* batch id */
145 __u32 bar_opc; /* create/start/stop batch */
146 __u32 bar_testidx; /* index of test */
147 __u32 bar_arg; /* parameters */
148 } WIRE_ATTR srpc_batch_reqst_t;
151 __u32 bar_status; /* status of request */
152 lst_sid_t bar_sid; /* session id */
153 __u32 bar_active; /* # of active tests in batch/test */
154 __u32 bar_time; /* remained time */
155 } WIRE_ATTR srpc_batch_reply_t;
158 __u64 str_rpyid; /* reply buffer matchbits */
159 lst_sid_t str_sid; /* session id */
160 __u32 str_type; /* type of stat */
161 } WIRE_ATTR srpc_stat_reqst_t;
166 sfw_counters_t str_fw;
167 srpc_counters_t str_rpc;
168 lnet_counters_t str_lnet;
169 } WIRE_ATTR srpc_stat_reply_t;
172 __u32 blk_opc; /* bulk operation code */
173 __u32 blk_npg; /* # of pages */
174 __u32 blk_flags; /* reserved flags */
175 } WIRE_ATTR test_bulk_req_t;
178 __u32 png_size; /* size of ping message */
179 __u32 png_flags; /* reserved flags */
180 } WIRE_ATTR test_ping_req_t;
183 __u64 tsr_rpyid; /* reply buffer matchbits */
184 __u64 tsr_bulkid; /* bulk buffer matchbits */
185 lst_sid_t tsr_sid; /* session id */
186 lst_bid_t tsr_bid; /* batch id */
187 __u32 tsr_service; /* test type: bulk|ping|... */
188 /* test client loop count or # server buffers needed */
190 __u32 tsr_concur; /* concurrency of test */
191 __u8 tsr_is_client; /* is test client or not */
192 __u8 tsr_stop_onerr; /* stop on error */
193 __u32 tsr_ndest; /* # of dest nodes */
196 test_bulk_req_t bulk;
197 test_ping_req_t ping;
199 } WIRE_ATTR srpc_test_reqst_t;
202 __u32 tsr_status; /* returned code */
204 } WIRE_ATTR srpc_test_reply_t;
213 } WIRE_ATTR srpc_ping_reqst_t;
219 } WIRE_ATTR srpc_ping_reply_t;
222 __u64 brw_rpyid; /* reply buffer matchbits */
223 __u64 brw_bulkid; /* bulk buffer matchbits */
224 __u32 brw_rw; /* read or write */
225 __u32 brw_len; /* bulk data len */
226 __u32 brw_flags; /* bulk data patterns */
227 } WIRE_ATTR srpc_brw_reqst_t; /* bulk r/w request */
231 } WIRE_ATTR srpc_brw_reply_t; /* bulk r/w reply */
233 #define SRPC_MSG_MAGIC 0xeeb0f00d
234 #define SRPC_MSG_VERSION 1
236 __u32 msg_magic; /* magic */
237 __u32 msg_version; /* # version */
238 __u32 msg_type; /* what's in msg_body? srpc_msg_type_t */
239 __u32 msg_reserved0; /* reserved seats */
243 srpc_generic_reqst_t reqst;
244 srpc_generic_reply_t reply;
246 srpc_mksn_reqst_t mksn_reqst;
247 srpc_mksn_reply_t mksn_reply;
248 srpc_rmsn_reqst_t rmsn_reqst;
249 srpc_rmsn_reply_t rmsn_reply;
250 srpc_debug_reqst_t dbg_reqst;
251 srpc_debug_reply_t dbg_reply;
252 srpc_batch_reqst_t bat_reqst;
253 srpc_batch_reply_t bat_reply;
254 srpc_stat_reqst_t stat_reqst;
255 srpc_stat_reply_t stat_reply;
256 srpc_test_reqst_t tes_reqst;
257 srpc_test_reply_t tes_reply;
258 srpc_join_reqst_t join_reqst;
259 srpc_join_reply_t join_reply;
261 srpc_ping_reqst_t ping_reqst;
262 srpc_ping_reply_t ping_reply;
263 srpc_brw_reqst_t brw_reqst;
264 srpc_brw_reply_t brw_reply;
266 } WIRE_ATTR srpc_msg_t;
268 #endif /* __SELFTEST_RPC_H__ */