xref: /titanic_41/usr/src/head/metad.x (revision ead1f93ee620d7580f7e53350fe5a884fc4f158a)
1 %/*
2 % * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
3 % * Use is subject to license terms.
4 % *
5 % * CDDL HEADER START
6 % *
7 % * The contents of this file are subject to the terms of the
8 % * Common Development and Distribution License, Version 1.0 only
9 % * (the "License").  You may not use this file except in compliance
10 % * with the License.
11 % *
12 % * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
13 % * or http://www.opensolaris.org/os/licensing.
14 % * See the License for the specific language governing permissions
15 % * and limitations under the License.
16 % *
17 % * When distributing Covered Code, include this CDDL HEADER in each
18 % * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
19 % * If applicable, add the following below this CDDL HEADER, with the
20 % * fields enclosed by brackets "[]" replaced with your own identifying
21 % * information: Portions Copyright [yyyy] [name of copyright owner]
22 % *
23 % * CDDL HEADER END
24 % */
25 %
26 %#pragma ident	"%Z%%M%	%I%	%E% SMI"
27 %
28 
29 %#include <mdiox.h>
30 %#include <meta_basic.h>
31 %#include <sys/lvm/mdmn_commd.h>
32 
33 #ifdef RPC_SVC
34 %
35 %int md_in_daemon = 1;
36 %#include <signal.h>
37 #endif /* RPC_SVC */
38 
39 #ifdef RPC_CLNT
40 %int _md_in_daemon = 0;
41 %#pragma weak md_in_daemon = _md_in_daemon
42 #endif /* RPC_CLNT */
43 
44 #ifdef RPC_HDR
45 %
46 %extern	int	md_in_daemon;
47 %/*
48 % * There are too many external factors that affect the timing of the
49 % * operations, so we set the timeout to a very large value, in this
50 % * case 1 day, which should handle HW timeouts, large configurations,
51 % * and other potential delays.
52 % */
53 %#define	CL_LONG_TMO	86400L
54 #endif /* RPC_HDR */
55 
56 #ifdef	RPC_XDR
57 %
58 %/* Start - Avoid duplicate definitions, but get the xdr calls right */
59 %#if 0
60 #include "../uts/common/sys/lvm/meta_arr.x"
61 %#endif	/* 0 */
62 %/* End   - Avoid duplicate definitions, but get the xdr calls right */
63 %
64 #endif	/* RPC_XDR */
65 
66 %
67 %/*
68 % * Structure Revisions
69 % */
70 enum mdrpc_metad_args_rev {
71 	MD_METAD_ARGS_REV_1 = 1			/* Revision 1 */
72 };
73 
74 %
75 %/*
76 % *	device id
77 % */
78 struct mdrpc_devid_res {
79 	string		enc_devid<>;		/* encoded device id */
80 	md_error_t	status;			/* status of RPC call */
81 };
82 
83 %
84 %/*
85 % * svm rpc version 2 device id arguments
86 % * (member union in mdrpc_devid_2_args)
87 % */
88 struct mdrpc_devid_args {
89 	md_setkey_t	*cl_sk;
90 	mdsetname_t	*sp;
91 	mddrivename_t	*drivenamep;
92 };
93 
94 %
95 %/*
96 % * svm rpc version 2 device id arguments
97 % * (union of all version 2 revisions)
98 % */
99 union mdrpc_devid_2_args switch (mdrpc_metad_args_rev rev) {
100 	case MD_METAD_ARGS_REV_1:
101 	    mdrpc_devid_args	rev1;
102 	default:
103 	    void;
104 };
105 
106 %
107 %/*
108 % * For getting the devinfo based upon devid
109 % */
110 struct mdrpc_devidstr_args {
111 	mdsetname_t	*sp;
112 	string		enc_devid<>;		/* encoded device id */
113 	md_error_t	status;			/* status of RPC call */
114 };
115 
116 %
117 %/*
118 % * For getting the devinfo based upon devid/devname
119 % */
120 struct mdrpc_devid_name_args {
121 	mdsetname_t	*sp;
122 	string		orig_devname<>;		/* devname on orig node */
123 	string		enc_devid<>;		/* encoded device id */
124 };
125 
126 %
127 %/*
128 % * svm rpc version 2 devinfo based upon devid/devname
129 % * (union of all version 2 revisions)
130 % */
131 union mdrpc_devid_name_2_args switch (mdrpc_metad_args_rev rev) {
132 	case MD_METAD_ARGS_REV_1:
133 	    mdrpc_devid_name_args	rev1;
134 	default:
135 	    void;
136 };
137 
138 %
139 %/*
140 % * version 1 device info
141 % */
142 struct mdrpc_devinfo_res {
143 	dev_t		dev;			/* major.minor */
144 	int		vtime;			/* vtoc timestamp */
145 	md_error_t	status;			/* status of RPC call */
146 };
147 
148 %
149 %/*
150 % * version 2 device info. dev_t is always 64-bit
151 % */
152 struct mdrpc_devinfo_2_res {
153 	md_dev64_t	dev;			/* major.minor */
154 	int		vtime;			/* vtoc timestamp */
155 	string		enc_devid<>;		/* encoded device id */
156 	string		devname<>;		/* name of the device */
157 	string		drivername<>;		/* name of the driver */
158 	md_error_t	status;			/* status of RPC call */
159 };
160 
161 %
162 %/*
163 % * svm rpc version 1 device info arguments
164 % */
165 struct mdrpc_devinfo_args {
166 	md_setkey_t	*cl_sk;
167 	mdsetname_t	*sp;
168 	o_mddrivename_t	*drivenamep;
169 };
170 
171 %
172 %/*
173 % * svm rpc version 2 (revision 1) device info arguments
174 % * (member of union in mdrpc_devinfo_2_args)
175 % */
176 struct mdrpc_devinfo_2_args_r1 {
177 	md_setkey_t	*cl_sk;
178 	mdsetname_t	*sp;
179 	mddrivename_t	*drivenamep;
180 	string		enc_devid<>;	/* encoded device id */
181 };
182 
183 %
184 %/*
185 % * svm rpc version 2 device info arguments
186 % * (union of all version 2 revisions)
187 % */
188 union mdrpc_devinfo_2_args switch (mdrpc_metad_args_rev rev) {
189     case MD_METAD_ARGS_REV_1:
190 	mdrpc_devinfo_2_args_r1	rev1;
191     default:
192 	void;
193 };
194 
195 struct mdrpc_hostname_res {
196 	string		hostname<>;
197 	md_error_t	status;
198 };
199 
200 %
201 %/*
202 % * svm rpc version 1 and version 2 (revision 1) getset arguments
203 % */
204 struct mdrpc_getset_args {
205 	string		setname<>;
206 	set_t		setno;
207 };
208 
209 %
210 %/*
211 % * svm rpc version 2 getset arguments
212 % * (union of all version 2 revisions)
213 % */
214 union mdrpc_getset_2_args switch (mdrpc_metad_args_rev rev) {
215     case MD_METAD_ARGS_REV_1:
216 	mdrpc_getset_args	rev1;
217     default:
218 	void;
219 };
220 
221 %
222 %/* NOTE: if you add to this struct, then fix the clnt_getset() */
223 %/*	  to prevent memory leaks */
224 struct mdrpc_getset_res {
225 	md_set_record	*sr;
226 	md_error_t	status;
227 };
228 
229 %
230 %/* NOTE: if you add to this struct, then fix the clnt_mngetset() */
231 %/*	  to prevent memory leaks */
232 struct mdrpc_mngetset_res {
233 	md_mnset_record	*mnsr;
234 	md_error_t	status;
235 };
236 
237 %
238 %/* NOTE: if you add to this struct, then fix the clnt_getdrivedesc() */
239 %/*	  to prevent memory leaks */
240 struct mdrpc_getdrivedesc_res {
241 	md_drive_desc	*dd;
242 	md_error_t	status;
243 };
244 
245 #ifdef RPC_HDR
246 %#ifndef STRINGARRAY
247 #endif
248 typedef string stringarray<>;
249 #ifdef RPC_HDR
250 %#define STRINGARRAY
251 %#endif
252 #endif
253 
254 %
255 %/*
256 % * svm rpc version 1 and version 2 (revision 1) createset arguments
257 % */
258 struct mdrpc_createset_args {
259 	md_setkey_t		*cl_sk;
260 	mdsetname_t		*sp;
261 	md_node_nm_arr_t	nodes;
262 	md_timeval32_t		timestamp;
263 	u_long			genid;
264 };
265 
266 %
267 %/*
268 % * svm rpc version 2 createset arguments
269 % * (union of all version 2 revisions)
270 % */
271 union mdrpc_createset_2_args switch (mdrpc_metad_args_rev rev) {
272     case MD_METAD_ARGS_REV_1:
273 	mdrpc_createset_args	rev1;
274     default:
275 	void;
276 };
277 
278 struct mdrpc_mncreateset_args {
279 	md_setkey_t		*cl_sk;
280 	mdsetname_t		*sp;
281 	md_mnnode_desc		*nodelist;
282 	md_timeval32_t		timestamp;
283 	u_long			genid;
284 	md_node_nm_t		master_nodenm;
285 	int			master_nodeid;
286 };
287 
288 %
289 %/*
290 % * svm rpc version 2 mncreateset arguments
291 % * (union of all version 2 revisions)
292 % */
293 union mdrpc_mncreateset_2_args switch (mdrpc_metad_args_rev rev) {
294     case MD_METAD_ARGS_REV_1:
295 	mdrpc_mncreateset_args  rev1;
296     default:
297 	void;
298 };
299 
300 
301 struct mdrpc_bool_res {
302 	int		value;
303 	md_error_t	status;
304 };
305 
306 %
307 %/*
308 % * svm rpc version 1 drive arguments
309 % */
310 struct mdrpc_drives_args {
311 	md_setkey_t	*cl_sk;
312 	mdsetname_t	*sp;
313 	o_md_drive_desc	*drivedescs;
314 	md_timeval32_t	timestamp;
315 	u_long		genid;
316 };
317 
318 %
319 %/*
320 % * svm rpc version 2 (revision 1) drive arguments
321 % * (member of union in mrpc_drives_2_args)
322 % */
323 struct mdrpc_drives_2_args_r1 {
324 	md_setkey_t	*cl_sk;
325 	mdsetname_t	*sp;
326 	md_drive_desc	*drivedescs;
327 	md_timeval32_t	timestamp;
328 	u_long		genid;
329 };
330 
331 %
332 %/*
333 % * svm rpc version 2 drive arguments
334 % * (union of all version 2 revisions)
335 % */
336 union mdrpc_drives_2_args switch (mdrpc_metad_args_rev rev) {
337     case MD_METAD_ARGS_REV_1:
338 	mdrpc_drives_2_args_r1	rev1;
339     default:
340 	void;
341 };
342 
343 %
344 %/*
345 % * svm rpc version 1 sidename arguments
346 % */
347 struct mdrpc_drv_sidenm_args {
348 	md_setkey_t	*cl_sk;
349 	string		hostname<>;
350 	mdsetname_t	*sp;
351 	o_md_set_desc	*sd;
352 	stringarray	node_v<>;
353 };
354 
355 %
356 %/*
357 % * svm rpc version 2 (revision 1) sidename arguments
358 % * (member of union in mdrpc_drv_sidenm_2_args)
359 % */
360 struct mdrpc_drv_sidenm_2_args_r1 {
361 	md_setkey_t	*cl_sk;
362 	string		hostname<>;
363 	mdsetname_t	*sp;
364 	md_set_desc	*sd;
365 	stringarray	node_v<>;
366 };
367 
368 %
369 %/*
370 % * svm rpc version 2 sidename arguments
371 % * (union of all version 2 revisions)
372 % */
373 union mdrpc_drv_sidenm_2_args switch (mdrpc_metad_args_rev rev) {
374     case MD_METAD_ARGS_REV_1:
375 	mdrpc_drv_sidenm_2_args_r1	rev1;
376     default:
377 	void;
378 };
379 
380 %
381 %/*
382 % * svm rpc version 1 drvused arguments
383 % */
384 struct mdrpc_drvused_args {
385 	md_setkey_t	*cl_sk;
386 	mdsetname_t	*sp;
387 	o_mddrivename_t	*drivenamep;
388 };
389 
390 %
391 %/*
392 % * svm rpc version 2 (revision 1) drvused arguments
393 % * (member of union in mdrpc_drvused_2_args)
394 % */
395 struct mdrpc_drvused_2_args_r1 {
396 	md_setkey_t	*cl_sk;
397 	mdsetname_t	*sp;
398 	mddrivename_t	*drivenamep;
399 };
400 
401 %
402 %/*
403 % * svm rpc version 2 drvused arguments
404 % * (union of all version 2 revisions)
405 % */
406 union mdrpc_drvused_2_args switch (mdrpc_metad_args_rev rev) {
407     case MD_METAD_ARGS_REV_1:
408 	mdrpc_drvused_2_args_r1	rev1;
409     default:
410 	void;
411 };
412 
413 %
414 %/*
415 % * svm rpc version 1 and version 2 (revision 1) host arguments
416 % */
417 struct mdrpc_host_args {
418 	md_setkey_t	*cl_sk;
419 	mdsetname_t	*sp;
420 	stringarray	hosts<>;
421 };
422 
423 %
424 %/*
425 % * svm rpc version 2 host arguments
426 % * (union of all version 2 revisions)
427 % */
428 union mdrpc_host_2_args switch (mdrpc_metad_args_rev rev) {
429     case MD_METAD_ARGS_REV_1:
430 	mdrpc_host_args	rev1;
431     default:
432 	void;
433 };
434 
435 struct mdrpc_gtimeout_res {
436 	md_error_t	status;
437 	mhd_mhiargs_t	*mhiargsp;
438 };
439 
440 %
441 %/*
442 % * svm rpc version 1 and version 2 (revision 1) set timeout arguments
443 % */
444 struct mdrpc_stimeout_args {
445 	md_setkey_t	*cl_sk;
446 	mdsetname_t	*sp;
447 	mhd_mhiargs_t	*mhiargsp;
448 };
449 
450 %
451 %/*
452 % * svm rpc version 2 set timeout arguments
453 % * (union of all version 2 revisions)
454 % */
455 union mdrpc_stimeout_2_args switch (mdrpc_metad_args_rev rev) {
456     case MD_METAD_ARGS_REV_1:
457 	mdrpc_stimeout_args	rev1;
458     default:
459 	void;
460 };
461 
462 %
463 %/*
464 % * svm rpc version 1 arguments
465 % */
466 struct mdrpc_upd_dr_flags_args {
467 	md_setkey_t	*cl_sk;
468 	mdsetname_t	*sp;
469 	o_md_drive_desc	*drivedescs;
470 	u_int		new_flags;
471 };
472 
473 %
474 %/*
475 % * svm rpc version 2 (revision 1) arguments
476 % * (member of union in mdrpc_upd_dr_flags_2_args)
477 % */
478 struct mdrpc_upd_dr_flags_2_args_r1 {
479 	md_setkey_t	*cl_sk;
480 	mdsetname_t	*sp;
481 	md_drive_desc	*drivedescs;
482 	u_int		new_flags;
483 };
484 
485 %
486 %/*
487 % * svm rpc version 2 arguments
488 % * (union of all version 2 revisions)
489 % */
490 union mdrpc_upd_dr_flags_2_args switch (mdrpc_metad_args_rev rev) {
491     case MD_METAD_ARGS_REV_1:
492 	mdrpc_upd_dr_flags_2_args_r1	rev1;
493     default:
494 	void;
495 };
496 
497 %
498 %/*
499 % * svm rpc version 1 and version 2 (revision 1) arguments
500 % */
501 struct mdrpc_upd_sr_flags_args {
502 	md_setkey_t	*cl_sk;
503 	mdsetname_t	*sp;
504 	u_int		new_flags;
505 };
506 
507 %
508 %/*
509 % * svm rpc version 2 arguments
510 % * (union of all version 2 revisions)
511 % */
512 union mdrpc_upd_sr_flags_2_args switch (mdrpc_metad_args_rev rev) {
513     case MD_METAD_ARGS_REV_1:
514 	mdrpc_upd_sr_flags_args	rev1;
515     default:
516 	void;
517 };
518 
519 %
520 %/*
521 % * svm rpc version 2 (revision 1) arguments
522 % */
523 struct mdrpc_upd_nr_flags_args {
524 	md_setkey_t	*cl_sk;
525 	mdsetname_t	*sp;
526 	md_mnnode_desc	*nodedescs;
527 	u_int		flag_action;
528 	u_int		flags;
529 };
530 
531 %
532 %/*
533 % * svm rpc version 2 arguments
534 % * (union of all version 2 revisions)
535 % */
536 union mdrpc_upd_nr_flags_2_args switch (mdrpc_metad_args_rev rev) {
537     case MD_METAD_ARGS_REV_1:
538 	mdrpc_upd_nr_flags_args	rev1;
539     default:
540 	void;
541 };
542 
543 
544 struct mdrpc_setlock_res {
545 	md_setkey_t	*cl_sk;
546 	md_error_t	status;
547 };
548 
549 struct mdrpc_generic_res {
550 	md_error_t	status;
551 };
552 
553 %
554 %/*
555 % * svm rpc version 1 and version 2 (revision 1) set arguments
556 % */
557 struct mdrpc_setno_args {
558 	md_setkey_t	*cl_sk;
559 	set_t		setno;
560 };
561 
562 %
563 %/*
564 % * svm rpc version 2 set arguments
565 % * (union of all version 2 revisions)
566 % */
567 union mdrpc_setno_2_args switch (mdrpc_metad_args_rev rev) {
568     case MD_METAD_ARGS_REV_1:
569 	mdrpc_setno_args	rev1;
570     default:
571 	void;
572 };
573 
574 struct mdrpc_null_args {
575 	md_setkey_t	*cl_sk;
576 };
577 
578 %
579 %/*
580 % * svm rpc version 1 and version 2 (revision 1) arguments
581 % */
582 struct mdrpc_sp_args {
583 	md_setkey_t	*cl_sk;
584 	mdsetname_t	*sp;
585 };
586 
587 %
588 %/*
589 % * svm rpc version 2 arguments
590 % * (union of all version 2 revisions)
591 % */
592 union mdrpc_sp_2_args switch (mdrpc_metad_args_rev rev) {
593     case MD_METAD_ARGS_REV_1:
594 	mdrpc_sp_args	rev1;
595     default:
596 	void;
597 };
598 
599 %
600 %/*
601 % * svm rpc version 2 (revision 1) arguments
602 % */
603 struct mdrpc_sp_flags_args {
604 	md_setkey_t	*cl_sk;
605 	mdsetname_t	*sp;
606 	int		flags;
607 };
608 
609 %
610 %/*
611 % * svm rpc version 2 arguments
612 % * (union of all version 2 revisions)
613 % */
614 union mdrpc_sp_flags_2_args switch (mdrpc_metad_args_rev rev) {
615     case MD_METAD_ARGS_REV_1:
616 	mdrpc_sp_flags_args	rev1;
617     default:
618 	void;
619 };
620 
621 %
622 %/*
623 % * svm rpc version 1 and version 2 (revision 1) arguments
624 % */
625 struct mdrpc_updmeds_args {
626 	md_setkey_t		*cl_sk;
627 	mdsetname_t		*sp;
628 	md_h_arr_t		meds;
629 };
630 
631 %
632 %/*
633 % * svm rpc version 2 arguments
634 % * (union of all version 2 revisions)
635 % */
636 union mdrpc_updmeds_2_args switch (mdrpc_metad_args_rev rev) {
637     case MD_METAD_ARGS_REV_1:
638 	mdrpc_updmeds_args	rev1;
639     default:
640 	void;
641 };
642 
643 struct mdrpc_mnsetmaster_args {
644 	md_setkey_t	*cl_sk;
645 	mdsetname_t	*sp;
646 	md_node_nm_t	master_nodenm;
647 	int		master_nodeid;
648 };
649 
650 %
651 %/*
652 % * svm rpc version 2 arguments
653 % * (union of all version 2 revisions)
654 % */
655 union mdrpc_mnsetmaster_2_args switch (mdrpc_metad_args_rev rev) {
656     case MD_METAD_ARGS_REV_1:
657 	mdrpc_mnsetmaster_args  rev1;
658     default:
659 	void;
660 };
661 
662 /*
663  * Defines and structures to support rpc.mdcommd.
664  * RPC routines in rpc.metad will be used to suspend, resume
665  * and reinitialize the rpc.mdcommd running on that node.
666  * These actions are needed when the nodelist is changing.
667  */
668 %#define	COMMDCTL_SUSPEND	1
669 %#define	COMMDCTL_RESUME		2
670 %#define	COMMDCTL_REINIT		3
671 
672 struct mdrpc_mdcommdctl_args {
673 	int			flag_action;
674 	set_t			setno;
675 	md_mn_msgclass_t	class;
676 	int			flags;
677 };
678 
679 %
680 %
681 %/*
682 % * svm rpc version 2 arguments
683 % * (union of all version 2 revisions)
684 % */
685 union mdrpc_mdcommdctl_2_args switch (mdrpc_metad_args_rev rev) {
686     case MD_METAD_ARGS_REV_1:
687 	mdrpc_mdcommdctl_args  rev1;
688     default:
689 	void;
690 };
691 
692 %
693 %/*
694 % * svm rpc version 2 (revision 1) nodeid arguments
695 % */
696 struct mdrpc_nodeid_args {
697 	md_setkey_t	*cl_sk;
698 	mdsetname_t	*sp;
699 	int		nodeid<>;
700 };
701 
702 %
703 %/*
704 % * svm rpc version 2 nodeid arguments
705 % * (union of all version 2 revisions)
706 % */
707 union mdrpc_nodeid_2_args switch (mdrpc_metad_args_rev rev) {
708     case MD_METAD_ARGS_REV_1:
709 	mdrpc_nodeid_args 	rev1;
710     default:
711 	void;
712 };
713 
714 %
715 %/*
716 % * Defines and structures to support suspend and resume I/O
717 % * driven by a remote node.
718 % */
719 %#define	MN_SUSP_IO	1
720 %#define	MN_RES_IO	2
721 %
722 %/*
723 % * svm rpc version 2 (revision 1) mn_susp_res_io arguments
724 % * setno of 0 represents all disksets.
725 % */
726 struct mdrpc_mn_susp_res_io_args {
727 	md_setkey_t	*susp_res_l_sk;
728 	set_t		susp_res_setno;
729 	int		susp_res_cmd;
730 };
731 
732 %
733 %/*
734 % * svm rpc version 2 nodeid arguments
735 % * (union of all version 2 revisions)
736 % */
737 union mdrpc_mn_susp_res_io_2_args switch (mdrpc_metad_args_rev rev) {
738     case MD_METAD_ARGS_REV_1:
739 	mdrpc_mn_susp_res_io_args 	rev1;
740     default:
741 	void;
742 };
743 
744 #ifdef	RPC_HDR
745 %
746 %/*
747 % *	authorization info
748 % */
749 const	METAD_GID = 14;				/* magic sysadmin group */
750 #endif	/* RPC_HDR */
751 
752 %
753 %/*
754 % *	services available
755 % */
756 program METAD {
757 	version METAD_VERSION {
758 		md_error_t
759 		mdrpc_nullproc(void)				= 0;
760 
761 		mdrpc_hostname_res
762 		mdrpc_hostname(mdrpc_null_args)			= 1;
763 
764 		mdrpc_generic_res
765 		mdrpc_addhosts(mdrpc_host_args)			= 2;
766 
767 		mdrpc_generic_res
768 		mdrpc_delhosts(mdrpc_host_args)			= 3;
769 
770 		mdrpc_generic_res
771 		mdrpc_createset(mdrpc_createset_args)		= 4;
772 
773 		mdrpc_generic_res
774 		mdrpc_delset(mdrpc_sp_args)			= 5;
775 
776 		mdrpc_getset_res
777 		mdrpc_getset(mdrpc_getset_args)			= 6;
778 
779 		mdrpc_bool_res
780 		mdrpc_setnumbusy(mdrpc_setno_args)		= 7;
781 
782 		mdrpc_bool_res
783 		mdrpc_setnameok(mdrpc_sp_args)			= 8;
784 
785 		mdrpc_bool_res
786 		mdrpc_ownset(mdrpc_sp_args)			= 9;
787 
788 		mdrpc_generic_res
789 		mdrpc_adddrvs(mdrpc_drives_args)		= 10;
790 
791 		mdrpc_generic_res
792 		mdrpc_deldrvs(mdrpc_drives_args)		= 11;
793 
794 		mdrpc_generic_res
795 		mdrpc_upd_dr_dbinfo(mdrpc_drives_args)		= 12;
796 
797 		mdrpc_devinfo_res
798 		mdrpc_devinfo(mdrpc_devinfo_args)		= 13;
799 
800 		mdrpc_generic_res
801 		mdrpc_drvused(mdrpc_drvused_args)		= 14;
802 
803 		mdrpc_generic_res
804 		mdrpc_add_drv_sidenms(mdrpc_drv_sidenm_args)	= 15;
805 
806 		mdrpc_generic_res
807 		mdrpc_del_drv_sidenms(mdrpc_sp_args)		= 16;
808 
809 		mdrpc_gtimeout_res
810 		mdrpc_gtimeout(mdrpc_sp_args)			= 17;
811 
812 		mdrpc_generic_res
813 		mdrpc_stimeout(mdrpc_stimeout_args)		= 18;
814 
815 		mdrpc_generic_res
816 		mdrpc_upd_dr_flags(mdrpc_upd_dr_flags_args)	= 19;
817 
818 		mdrpc_generic_res
819 		mdrpc_upd_sr_flags(mdrpc_upd_sr_flags_args)	= 20;
820 
821 		mdrpc_setlock_res
822 		mdrpc_unlock_set(mdrpc_null_args)		= 21;
823 
824 		mdrpc_setlock_res
825 		mdrpc_lock_set(mdrpc_null_args)			= 22;
826 
827 		mdrpc_generic_res
828 		mdrpc_updmeds(mdrpc_updmeds_args)		= 23;
829 
830 		mdrpc_generic_res
831 		mdrpc_flush_internal(mdrpc_null_args)		= 24;
832 
833 	} = 1;
834 
835 	version METAD_VERSION_DEVID {
836 		md_error_t
837 		mdrpc_nullproc(void)				= 0;
838 
839 		mdrpc_hostname_res
840 		mdrpc_hostname(mdrpc_null_args)			= 1;
841 
842 		mdrpc_generic_res
843 		mdrpc_addhosts(mdrpc_host_2_args)		= 2;
844 
845 		mdrpc_generic_res
846 		mdrpc_delhosts(mdrpc_host_2_args)		= 3;
847 
848 		mdrpc_generic_res
849 		mdrpc_createset(mdrpc_createset_2_args)		= 4;
850 
851 		mdrpc_generic_res
852 		mdrpc_delset(mdrpc_sp_2_args)			= 5;
853 
854 		mdrpc_getset_res
855 		mdrpc_getset(mdrpc_getset_2_args)		= 6;
856 
857 		mdrpc_bool_res
858 		mdrpc_setnumbusy(mdrpc_setno_2_args)		= 7;
859 
860 		mdrpc_bool_res
861 		mdrpc_setnameok(mdrpc_sp_2_args)		= 8;
862 
863 		mdrpc_bool_res
864 		mdrpc_ownset(mdrpc_sp_2_args)			= 9;
865 
866 		mdrpc_generic_res
867 		mdrpc_adddrvs(mdrpc_drives_2_args)		= 10;
868 
869 		mdrpc_generic_res
870 		mdrpc_deldrvs(mdrpc_drives_2_args)		= 11;
871 
872 		mdrpc_generic_res
873 		mdrpc_upd_dr_dbinfo(mdrpc_drives_2_args)	= 12;
874 
875 		mdrpc_devinfo_2_res
876 		mdrpc_devinfo(mdrpc_devinfo_2_args)		= 13;
877 
878 		mdrpc_generic_res
879 		mdrpc_drvused(mdrpc_drvused_2_args)		= 14;
880 
881 		mdrpc_generic_res
882 		mdrpc_add_drv_sidenms(mdrpc_drv_sidenm_2_args)	= 15;
883 
884 		mdrpc_generic_res
885 		mdrpc_del_drv_sidenms(mdrpc_sp_2_args)		= 16;
886 
887 		mdrpc_gtimeout_res
888 		mdrpc_gtimeout(mdrpc_sp_2_args)			= 17;
889 
890 		mdrpc_generic_res
891 		mdrpc_stimeout(mdrpc_stimeout_2_args)		= 18;
892 
893 		mdrpc_generic_res
894 		mdrpc_upd_dr_flags(mdrpc_upd_dr_flags_2_args)	= 19;
895 
896 		mdrpc_generic_res
897 		mdrpc_upd_sr_flags(mdrpc_upd_sr_flags_2_args)	= 20;
898 
899 		mdrpc_setlock_res
900 		mdrpc_unlock_set(mdrpc_null_args)		= 21;
901 
902 		mdrpc_setlock_res
903 		mdrpc_lock_set(mdrpc_null_args)			= 22;
904 
905 		mdrpc_generic_res
906 		mdrpc_updmeds(mdrpc_updmeds_2_args)		= 23;
907 
908 		mdrpc_generic_res
909 		mdrpc_flush_internal(mdrpc_null_args)		= 24;
910 
911 		mdrpc_devid_res
912 		mdrpc_devid(mdrpc_devid_2_args)			= 25;
913 
914 		mdrpc_devinfo_2_res
915 		mdrpc_devinfo_by_devid(mdrpc_devidstr_args)	= 26;
916 
917 		mdrpc_generic_res
918 		mdrpc_resnarf_set(mdrpc_setno_2_args)		= 27;
919 
920 		mdrpc_generic_res
921 		mdrpc_mncreateset(mdrpc_mncreateset_2_args)	= 28;
922 
923 		mdrpc_mngetset_res
924 		mdrpc_mngetset(mdrpc_getset_2_args)		= 29;
925 
926 		mdrpc_generic_res
927 		mdrpc_mnsetmaster(mdrpc_mnsetmaster_2_args)	= 30;
928 
929 		mdrpc_generic_res
930 		mdrpc_joinset(mdrpc_sp_flags_2_args)		= 31;
931 
932 		mdrpc_generic_res
933 		mdrpc_withdrawset(mdrpc_sp_2_args)		= 32;
934 
935 		mdrpc_generic_res
936 		mdrpc_upd_nr_flags(mdrpc_upd_nr_flags_2_args)	= 33;
937 
938 		mdrpc_bool_res
939 		mdrpc_mn_is_stale(mdrpc_setno_2_args)		= 34;
940 
941 		mdrpc_generic_res
942 		mdrpc_mdcommdctl(mdrpc_mdcommdctl_2_args)	= 35;
943 
944 		mdrpc_generic_res
945 		mdrpc_clr_mnsetlock(mdrpc_null_args)		= 36;
946 
947 		mdrpc_getdrivedesc_res
948 		mdrpc_getdrivedesc(mdrpc_sp_2_args)		= 37;
949 
950 		mdrpc_generic_res
951 		mdrpc_upd_dr_reconfig(mdrpc_upd_dr_flags_2_args) = 38;
952 
953 		mdrpc_generic_res
954 		mdrpc_reset_mirror_owner(mdrpc_nodeid_2_args)	 = 39;
955 
956 		mdrpc_generic_res
957 		mdrpc_mn_susp_res_io(mdrpc_mn_susp_res_io_2_args) = 40;
958 
959 		mdrpc_generic_res
960 		mdrpc_mn_mirror_resync_all(mdrpc_setno_2_args) = 41;
961 
962 		mdrpc_devinfo_2_res
963 		mdrpc_devinfo_by_devid_name(mdrpc_devid_name_2_args) = 42;
964 
965 		mdrpc_generic_res
966 		mdrpc_mn_sp_update_abr(mdrpc_setno_2_args) = 43;
967 
968 		mdrpc_generic_res
969 		mdrpc_imp_adddrvs(mdrpc_drives_2_args) = 44;
970 
971 	} = 2;
972 } = 100229;
973 
974 #ifdef RPC_HDR
975 %
976 %extern	void	short_circuit_getset(mdrpc_getset_args *args,
977 %		    mdrpc_getset_res *res);
978 %extern	void	short_circuit_mngetset(mdrpc_getset_args *args,
979 %		    mdrpc_mngetset_res *res);
980 #endif	/* RPC_HDR */
981