xref: /onnv-gate/usr/src/lib/lvm/libmeta/common/meta_mn_msg_table.c (revision 8452:89d32dfdae6e)
10Sstevel@tonic-gate /*
20Sstevel@tonic-gate  * CDDL HEADER START
30Sstevel@tonic-gate  *
40Sstevel@tonic-gate  * The contents of this file are subject to the terms of the
51623Stw21770  * Common Development and Distribution License (the "License").
61623Stw21770  * You may not use this file except in compliance with the License.
70Sstevel@tonic-gate  *
80Sstevel@tonic-gate  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
90Sstevel@tonic-gate  * or http://www.opensolaris.org/os/licensing.
100Sstevel@tonic-gate  * See the License for the specific language governing permissions
110Sstevel@tonic-gate  * and limitations under the License.
120Sstevel@tonic-gate  *
130Sstevel@tonic-gate  * When distributing Covered Code, include this CDDL HEADER in each
140Sstevel@tonic-gate  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
150Sstevel@tonic-gate  * If applicable, add the following below this CDDL HEADER, with the
160Sstevel@tonic-gate  * fields enclosed by brackets "[]" replaced with your own identifying
170Sstevel@tonic-gate  * information: Portions Copyright [yyyy] [name of copyright owner]
180Sstevel@tonic-gate  *
190Sstevel@tonic-gate  * CDDL HEADER END
200Sstevel@tonic-gate  */
210Sstevel@tonic-gate /*
22*8452SJohn.Wren.Kennedy@Sun.COM  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
230Sstevel@tonic-gate  * Use is subject to license terms.
240Sstevel@tonic-gate  */
250Sstevel@tonic-gate 
260Sstevel@tonic-gate #include <meta.h>
270Sstevel@tonic-gate 
280Sstevel@tonic-gate extern void mdmn_do_cmd(HANDLER_PARMS);
290Sstevel@tonic-gate extern void mdmn_do_clu(HANDLER_PARMS);
300Sstevel@tonic-gate extern void mdmn_do_req_owner(HANDLER_PARMS);
310Sstevel@tonic-gate extern void mdmn_do_susp_write(HANDLER_PARMS);
320Sstevel@tonic-gate extern void mdmn_do_state_upd_reswr(HANDLER_PARMS);
330Sstevel@tonic-gate extern void mdmn_do_allocate_hotspare(HANDLER_PARMS);
340Sstevel@tonic-gate extern void mdmn_do_poke_hotspares(HANDLER_PARMS);
350Sstevel@tonic-gate extern void mdmn_do_resync(HANDLER_PARMS);
360Sstevel@tonic-gate extern void mdmn_do_setsync(HANDLER_PARMS);
370Sstevel@tonic-gate extern void mdmn_do_choose_owner(HANDLER_PARMS);
380Sstevel@tonic-gate extern void mdmn_do_change_owner(HANDLER_PARMS);
390Sstevel@tonic-gate extern void mdmn_do_set_cap(HANDLER_PARMS);
400Sstevel@tonic-gate extern void mdmn_do_dummy(HANDLER_PARMS);
410Sstevel@tonic-gate extern void mdmn_do_mddb_parse(HANDLER_PARMS);
420Sstevel@tonic-gate extern void mdmn_do_mddb_block(HANDLER_PARMS);
430Sstevel@tonic-gate extern void mdmn_do_sm_mddb_attach(HANDLER_PARMS);
440Sstevel@tonic-gate extern void mdmn_do_sm_mddb_detach(HANDLER_PARMS);
450Sstevel@tonic-gate extern void mdmn_do_meta_db_newside(HANDLER_PARMS);
460Sstevel@tonic-gate extern void mdmn_do_meta_db_delside(HANDLER_PARMS);
470Sstevel@tonic-gate extern void mdmn_do_meta_md_addside(HANDLER_PARMS);
480Sstevel@tonic-gate extern void mdmn_do_meta_md_delside(HANDLER_PARMS);
490Sstevel@tonic-gate extern void mdmn_do_mddb_optrecerr(HANDLER_PARMS);
500Sstevel@tonic-gate extern void mdmn_do_iocset(HANDLER_PARMS);
510Sstevel@tonic-gate extern void mdmn_do_sp_setstat(HANDLER_PARMS);
520Sstevel@tonic-gate extern void mdmn_do_addkeyname(HANDLER_PARMS);
530Sstevel@tonic-gate extern void mdmn_do_delkeyname(HANDLER_PARMS);
540Sstevel@tonic-gate extern void mdmn_do_get_tstate(HANDLER_PARMS);
550Sstevel@tonic-gate extern void mdmn_do_get_mirstate(HANDLER_PARMS);
561623Stw21770 extern void mdmn_do_addmdname(HANDLER_PARMS);
57*8452SJohn.Wren.Kennedy@Sun.COM extern void mdmn_do_mark_dirty(HANDLER_PARMS);
58*8452SJohn.Wren.Kennedy@Sun.COM extern void mdmn_do_mark_clean(HANDLER_PARMS);
590Sstevel@tonic-gate 
600Sstevel@tonic-gate extern int mdmn_smgen_test6(SMGEN_PARMS);
610Sstevel@tonic-gate extern int mdmn_smgen_state_upd(SMGEN_PARMS);
620Sstevel@tonic-gate extern int mdmn_smgen_mddb_attach(SMGEN_PARMS);
630Sstevel@tonic-gate extern int mdmn_smgen_mddb_detach(SMGEN_PARMS);
640Sstevel@tonic-gate 
650Sstevel@tonic-gate md_mn_msg_tbl_entry_t  msg_table[MD_MN_NMESSAGES] = {
660Sstevel@tonic-gate 
670Sstevel@tonic-gate /*
680Sstevel@tonic-gate  * In order to have fast direct access to the table, we use the message type as
690Sstevel@tonic-gate  * an index into it.
700Sstevel@tonic-gate  * Thus the order of the elements in this table MUST match the order of the
710Sstevel@tonic-gate  * message types specified in mdmn_commd.x!
720Sstevel@tonic-gate  * See the definition of md_mn_msg_t.
730Sstevel@tonic-gate  *
740Sstevel@tonic-gate  * Be careful and do not disturb the order of the messages!
750Sstevel@tonic-gate  */
760Sstevel@tonic-gate 	{
770Sstevel@tonic-gate 	/* MD_MN_MSG_NULL */
780Sstevel@tonic-gate 		MD_MSG_CLASS0,	/* message class */
790Sstevel@tonic-gate 		NULL, 		/* message handler */
800Sstevel@tonic-gate 		NULL, 		/* submessage generator */
810Sstevel@tonic-gate 		1,		/* timeout in seconds */
820Sstevel@tonic-gate 		0, 0, 		/* class busy retry / time delta */
830Sstevel@tonic-gate 		0, 0		/* comm fail retry / time delta */
840Sstevel@tonic-gate 	},
850Sstevel@tonic-gate 
860Sstevel@tonic-gate 	{
870Sstevel@tonic-gate 	/* MD_MN_MSG_TEST1 */
880Sstevel@tonic-gate 		MD_MSG_CLASS1,	/* message class */
890Sstevel@tonic-gate 		mdmn_do_dummy, 	/* message handler */
900Sstevel@tonic-gate 		NULL, 		/* submessage generator */
910Sstevel@tonic-gate 		1,		/* timeout in seconds */
920Sstevel@tonic-gate 		200, 4,		/* class busy retry / time delta */
930Sstevel@tonic-gate 		10, 100		/* comm fail retry / time delta */
940Sstevel@tonic-gate 	},
950Sstevel@tonic-gate 
960Sstevel@tonic-gate 	{
970Sstevel@tonic-gate 	/* MD_MN_MSG_TEST2 */
980Sstevel@tonic-gate 		MD_MSG_CLASS2,	/* message class */
990Sstevel@tonic-gate 		mdmn_do_dummy, 	/* message handler */
1000Sstevel@tonic-gate 		NULL, 		/* submessage generator */
1010Sstevel@tonic-gate 		1,		/* timeout in seconds */
1020Sstevel@tonic-gate 		200, 4,		/* class busy retry / time delta */
1030Sstevel@tonic-gate 		10, 100		/* comm fail retry / time delta */
1040Sstevel@tonic-gate 	},
1050Sstevel@tonic-gate 
1060Sstevel@tonic-gate 	{
1070Sstevel@tonic-gate 	/* MD_MN_MSG_TEST3 */
1080Sstevel@tonic-gate 		MD_MSG_CLASS3,	/* message class */
1090Sstevel@tonic-gate 		mdmn_do_dummy, 	/* message handler */
1100Sstevel@tonic-gate 		NULL, 		/* submessage generator */
1110Sstevel@tonic-gate 		1,		/* timeout in seconds */
1120Sstevel@tonic-gate 		200, 4,		/* class busy retry / time delta */
1130Sstevel@tonic-gate 		10, 100		/* comm fail retry / time delta */
1140Sstevel@tonic-gate 	},
1150Sstevel@tonic-gate 
1160Sstevel@tonic-gate 	{
1170Sstevel@tonic-gate 	/* MD_MN_MSG_TEST4 */
1180Sstevel@tonic-gate 		MD_MSG_CLASS4,	/* message class */
1190Sstevel@tonic-gate 		mdmn_do_dummy, 	/* message handler */
1200Sstevel@tonic-gate 		NULL, 		/* submessage generator */
1210Sstevel@tonic-gate 		1,		/* timeout in seconds */
1220Sstevel@tonic-gate 		200, 4,		/* class busy retry / time delta */
1230Sstevel@tonic-gate 		10, 100		/* comm fail retry / time delta */
1240Sstevel@tonic-gate 	},
1250Sstevel@tonic-gate 
1260Sstevel@tonic-gate 	{
1270Sstevel@tonic-gate 	/* MD_MN_MSG_TEST5 */
1280Sstevel@tonic-gate 		MD_MSG_CLASS5,	/* message class */
1290Sstevel@tonic-gate 		mdmn_do_dummy, 	/* message handler */
1300Sstevel@tonic-gate 		NULL, 		/* submessage generator */
1310Sstevel@tonic-gate 		4,		/* timeout in seconds */
1320Sstevel@tonic-gate 		200, 4, 	/* class busy retry / time delta */
1330Sstevel@tonic-gate 		10, 100		/* comm fail retry / time delta */
1340Sstevel@tonic-gate 	},
1350Sstevel@tonic-gate 
1360Sstevel@tonic-gate 	{
1370Sstevel@tonic-gate 	/* MD_MN_MSG_TEST6 */
1380Sstevel@tonic-gate 		MD_MSG_CLASS1,	/* message class */
1390Sstevel@tonic-gate 		NULL,		/* message handler */
1400Sstevel@tonic-gate 		mdmn_smgen_test6, /* submessage generator */
1410Sstevel@tonic-gate 		1,		/* timeout in seconds */
1420Sstevel@tonic-gate 		200, 4, 	/* class busy retry / time delta */
1430Sstevel@tonic-gate 		10, 100		/* comm fail retry / time delta */
1440Sstevel@tonic-gate 	},
1450Sstevel@tonic-gate 
1460Sstevel@tonic-gate 	{
1470Sstevel@tonic-gate 	/*
1480Sstevel@tonic-gate 	 * MD_MN_MSG_CMD
1490Sstevel@tonic-gate 	 * Send a command string to all nodes
1500Sstevel@tonic-gate 	 */
1510Sstevel@tonic-gate 		MD_MSG_CLASS1,	/* message class */
1520Sstevel@tonic-gate 		mdmn_do_cmd, 	/* message handler */
1530Sstevel@tonic-gate 		NULL, 		/* submessage generator */
1540Sstevel@tonic-gate 		90,		/* times out in 90 secs */
1550Sstevel@tonic-gate 		40, 20,		/* class busy retry / time delta */
1560Sstevel@tonic-gate 		10, 1000	/* comm fail retry / time delta */
1570Sstevel@tonic-gate 	},
1580Sstevel@tonic-gate 
1590Sstevel@tonic-gate 	{
1600Sstevel@tonic-gate 	/*
1610Sstevel@tonic-gate 	 * MD_MN_MSG_CMD_RETRY
1620Sstevel@tonic-gate 	 * Send a command string to all nodes and retry on busy
1630Sstevel@tonic-gate 	 */
1640Sstevel@tonic-gate 		MD_MSG_CLASS1,	/* message class */
1650Sstevel@tonic-gate 		mdmn_do_cmd, 	/* message handler */
1660Sstevel@tonic-gate 		NULL, 		/* submessage generator */
1670Sstevel@tonic-gate 		90,		/* times out in 90 secs */
1680Sstevel@tonic-gate 		100000, 20, 	/* class busy retry / time delta */
1690Sstevel@tonic-gate 		10, 1000	/* comm fail retry / time delta */
1700Sstevel@tonic-gate 	},
1710Sstevel@tonic-gate 
1720Sstevel@tonic-gate 	{
1730Sstevel@tonic-gate 	/* MD_MN_MSG_CLU_CHECK */
1740Sstevel@tonic-gate 		MD_MSG_CLASS2,	/* message class */
1750Sstevel@tonic-gate 		mdmn_do_clu, 	/* message handler */
1760Sstevel@tonic-gate 		NULL, 		/* submessage generator */
1770Sstevel@tonic-gate 		5,		/* timeout in seconds */
1780Sstevel@tonic-gate 		10000, 2, 	/* class busy retry / time delta */
1790Sstevel@tonic-gate 		0, 0		/* comm fail retry / time delta */
1800Sstevel@tonic-gate 	},
1810Sstevel@tonic-gate 
1820Sstevel@tonic-gate 	{
1830Sstevel@tonic-gate 	/* MD_MN_MSG_CLU_LOCK */
1840Sstevel@tonic-gate 		MD_MSG_CLASS2,	/* message class */
1850Sstevel@tonic-gate 		mdmn_do_clu, 	/* message handler */
1860Sstevel@tonic-gate 		NULL, 		/* submessage generator */
1870Sstevel@tonic-gate 		1,		/* timeout in seconds */
1880Sstevel@tonic-gate 		10000, 2, 	/* class busy retry / time delta */
1890Sstevel@tonic-gate 		0, 0		/* comm fail retry / time delta */
1900Sstevel@tonic-gate 	},
1910Sstevel@tonic-gate 
1920Sstevel@tonic-gate 	{
1930Sstevel@tonic-gate 	/* MD_MN_MSG_CLU_UNLOCK */
1940Sstevel@tonic-gate 		MD_MSG_CLASS2,	/* message class */
1950Sstevel@tonic-gate 		mdmn_do_clu, 	/* message handler */
1960Sstevel@tonic-gate 		NULL, 		/* submessage generator */
1970Sstevel@tonic-gate 		1,		/* timeout in seconds */
1980Sstevel@tonic-gate 		10000, 2,	/* class busy retry / time delta */
1990Sstevel@tonic-gate 		0, 0		/* comm fail retry / time delta */
2000Sstevel@tonic-gate 	},
2010Sstevel@tonic-gate 
2020Sstevel@tonic-gate 	{
2030Sstevel@tonic-gate 	/* MD_MN_MSG_REQUIRE_OWNER */
2040Sstevel@tonic-gate 		MD_MSG_CLASS5,	/* message class */
2050Sstevel@tonic-gate 		mdmn_do_req_owner, /* message handler */
2060Sstevel@tonic-gate 		NULL, 		/* submessage generator */
2070Sstevel@tonic-gate 		12,		/* timeout in seconds */
2080Sstevel@tonic-gate 		UINT_MAX, 10,	/* class busy retry / time delta */
2090Sstevel@tonic-gate 		UINT_MAX, 100	/* comm fail retry / time delta */
2100Sstevel@tonic-gate 	},
2110Sstevel@tonic-gate 
2120Sstevel@tonic-gate 	{
2130Sstevel@tonic-gate 	/*
2140Sstevel@tonic-gate 	 * MD_MN_MSG_CHOOSE_OWNER
2150Sstevel@tonic-gate 	 * Using the current resync count for the set, choose a resync
2160Sstevel@tonic-gate 	 * owner and send a CHANGE_OWNER message to request that node
2170Sstevel@tonic-gate 	 * to make itself the owner
2180Sstevel@tonic-gate 	 */
2190Sstevel@tonic-gate 		MD_MSG_CLASS3,	/* message class */
2200Sstevel@tonic-gate 		mdmn_do_choose_owner, /* message handler */
2210Sstevel@tonic-gate 		NULL, 		/* submessage generator */
2220Sstevel@tonic-gate 		12,		/* timeout in seconds */
2230Sstevel@tonic-gate 		UINT_MAX, 10,	/* class busy retry / time delta */
2240Sstevel@tonic-gate 		UINT_MAX, 100	/* comm fail retry / time delta */
2250Sstevel@tonic-gate 	},
2260Sstevel@tonic-gate 
2270Sstevel@tonic-gate 	{
2280Sstevel@tonic-gate 	/*
2290Sstevel@tonic-gate 	 * MD_MN_MSG_CHANGE_OWNER
2300Sstevel@tonic-gate 	 * Request a change of ownership to the specified node
2310Sstevel@tonic-gate 	 */
2320Sstevel@tonic-gate 		MD_MSG_CLASS4,	/* message class */
2330Sstevel@tonic-gate 		mdmn_do_change_owner, /* message handler */
2340Sstevel@tonic-gate 		NULL, 		/* submessage generator */
2350Sstevel@tonic-gate 		12,		/* timeout in seconds */
2360Sstevel@tonic-gate 		UINT_MAX, 10,	/* class busy retry / time delta */
2370Sstevel@tonic-gate 		UINT_MAX, 100	/* comm fail retry / time delta */
2380Sstevel@tonic-gate 	},
2390Sstevel@tonic-gate 
2400Sstevel@tonic-gate 	{
2410Sstevel@tonic-gate 	/*
2420Sstevel@tonic-gate 	 * MD_MN_MSG_SUSPEND_WRITES
2430Sstevel@tonic-gate 	 * Suspend all writes to the specified mirror
2440Sstevel@tonic-gate 	 */
2450Sstevel@tonic-gate 		MD_MSG_CLASS6,	/* message class */
2460Sstevel@tonic-gate 		mdmn_do_susp_write, /* message handler */
2470Sstevel@tonic-gate 		NULL, 		/* submessage generator */
2480Sstevel@tonic-gate 		8,		/* timeout in seconds */
2490Sstevel@tonic-gate 		UINT_MAX, 10,	/* class busy retry / time delta */
2500Sstevel@tonic-gate 		200, 100	/* comm fail retry / time delta */
2510Sstevel@tonic-gate 	},
2520Sstevel@tonic-gate 
2530Sstevel@tonic-gate 	{
2540Sstevel@tonic-gate 	/*
2550Sstevel@tonic-gate 	 * MD_MN_MSG_STATE_UPDATE_RESWR
2560Sstevel@tonic-gate 	 * Update the state of a mirror component
2570Sstevel@tonic-gate 	 */
2580Sstevel@tonic-gate 		MD_MSG_CLASS1,	/* message class */
2590Sstevel@tonic-gate 		mdmn_do_state_upd_reswr, /* message handler */
2600Sstevel@tonic-gate 		NULL, 		/* submessage generator */
2610Sstevel@tonic-gate 		8,		/* timeout in seconds */
2620Sstevel@tonic-gate 		UINT_MAX, 10,	/* class busy retry / time delta */
2630Sstevel@tonic-gate 		UINT_MAX, 100	/* comm fail retry / time delta */
2640Sstevel@tonic-gate 	},
2650Sstevel@tonic-gate 
2660Sstevel@tonic-gate 	{
2670Sstevel@tonic-gate 	/*
2680Sstevel@tonic-gate 	 * MD_MN_MSG_STATE_UPDATE
2690Sstevel@tonic-gate 	 * Suspend writes to a mirror and then update the state of a
2700Sstevel@tonic-gate 	 * mirror component
2710Sstevel@tonic-gate 	 */
2720Sstevel@tonic-gate 		MD_MSG_CLASS1,	/* message class */
2730Sstevel@tonic-gate 		NULL,		 /* message handler */
2740Sstevel@tonic-gate 		mdmn_smgen_state_upd,	/* submessage generator */
2750Sstevel@tonic-gate 		16,		/* SUSPEND_WRITES + STATE_UPDATE_RESWR */
2760Sstevel@tonic-gate 		UINT_MAX, 10,	/* class busy retry / time delta */
2770Sstevel@tonic-gate 		UINT_MAX, 100	/* comm fail retry / time delta */
2780Sstevel@tonic-gate 	},
2790Sstevel@tonic-gate 
2800Sstevel@tonic-gate 	{
2810Sstevel@tonic-gate 	/*
2820Sstevel@tonic-gate 	 * MD_MN_MSG_ALLOCATE_HOTSPARE
2830Sstevel@tonic-gate 	 * Allocate a hotspare for a mirror component
2840Sstevel@tonic-gate 	 */
2850Sstevel@tonic-gate 		MD_MSG_CLASS1,	/* message class */
2860Sstevel@tonic-gate 		mdmn_do_allocate_hotspare, /* message handler */
2870Sstevel@tonic-gate 		NULL, 		/* submessage generator */
2880Sstevel@tonic-gate 		8,		/* timeout in seconds */
2890Sstevel@tonic-gate 		UINT_MAX, 10,	/* class busy retry / time delta */
2900Sstevel@tonic-gate 		UINT_MAX, 100	/* comm fail retry / time delta */
2910Sstevel@tonic-gate 	},
2920Sstevel@tonic-gate 
2930Sstevel@tonic-gate 	{
2940Sstevel@tonic-gate 	/*
2950Sstevel@tonic-gate 	 * MD_MN_MSG_RESYNC_STARTING
2960Sstevel@tonic-gate 	 * Start a resync thread for the specified mirror
2970Sstevel@tonic-gate 	 */
2980Sstevel@tonic-gate 		MD_MSG_CLASS2,	/* message class */
2990Sstevel@tonic-gate 		mdmn_do_resync, /* message handler */
3000Sstevel@tonic-gate 		NULL, 		/* submessage generator */
3010Sstevel@tonic-gate 		8,		/* timeout in seconds */
3020Sstevel@tonic-gate 		UINT_MAX, 10,	/* class busy retry / time delta */
3030Sstevel@tonic-gate 		UINT_MAX, 100	/* comm fail retry / time delta */
3040Sstevel@tonic-gate 	},
3050Sstevel@tonic-gate 
3060Sstevel@tonic-gate 	{
3070Sstevel@tonic-gate 	/*
3080Sstevel@tonic-gate 	 * MD_MN_MSG_RESYNC_NEXT
3090Sstevel@tonic-gate 	 * Send the next region to be resyned to all nodes. For ABR
3100Sstevel@tonic-gate 	 * mirrors, the nodes must suspend all writes to this region until
3110Sstevel@tonic-gate 	 * the next message of this type or a RESYNC_FINISH
3120Sstevel@tonic-gate 	 */
3130Sstevel@tonic-gate 		MD_MSG_CLASS2,	/* message class */
3140Sstevel@tonic-gate 		mdmn_do_resync, /* message handler */
3150Sstevel@tonic-gate 		NULL, 		/* submessage generator */
3160Sstevel@tonic-gate 		8,		/* timeout in seconds */
3170Sstevel@tonic-gate 		UINT_MAX, 10,	/* class busy retry / time delta */
3180Sstevel@tonic-gate 		UINT_MAX, 100	/* comm fail retry / time delta */
3190Sstevel@tonic-gate 	},
3200Sstevel@tonic-gate 
3210Sstevel@tonic-gate 	{
3220Sstevel@tonic-gate 	/*
3230Sstevel@tonic-gate 	 * MD_MN_MSG_RESYNC_FINISH
3240Sstevel@tonic-gate 	 * All resyncs for a mirror are complete, terminate resync thread
3250Sstevel@tonic-gate 	 */
3260Sstevel@tonic-gate 		MD_MSG_CLASS1,	/* message class */
3270Sstevel@tonic-gate 		mdmn_do_resync, /* message handler */
3280Sstevel@tonic-gate 		NULL, 		/* submessage generator */
3290Sstevel@tonic-gate 		8,		/* timeout in seconds */
3300Sstevel@tonic-gate 		UINT_MAX, 10,	/* class busy retry / time delta */
3310Sstevel@tonic-gate 		UINT_MAX, 100	/* comm fail retry / time delta */
3320Sstevel@tonic-gate 	},
3330Sstevel@tonic-gate 
3340Sstevel@tonic-gate 	{
3350Sstevel@tonic-gate 	/*
3360Sstevel@tonic-gate 	 * MD_MN_MSG_RESYNC_PHASE_DONE
3370Sstevel@tonic-gate 	 * A resync phase, optimized, submirror or component is complete
3380Sstevel@tonic-gate 	 */
3390Sstevel@tonic-gate 		MD_MSG_CLASS2,	/* message class */
3400Sstevel@tonic-gate 		mdmn_do_resync, /* message handler */
3410Sstevel@tonic-gate 		NULL, 		/* submessage generator */
3420Sstevel@tonic-gate 		8,		/* timeout in seconds */
3430Sstevel@tonic-gate 		UINT_MAX, 10,	/* class busy retry / time delta */
3440Sstevel@tonic-gate 		UINT_MAX, 100	/* comm fail retry / time delta */
3450Sstevel@tonic-gate 	},
3460Sstevel@tonic-gate 
3470Sstevel@tonic-gate 	{
3480Sstevel@tonic-gate 	/*
3490Sstevel@tonic-gate 	 * MD_MN_MSG_SET_CAP
3500Sstevel@tonic-gate 	 * Set the specified metadevice capability on all nodes
3510Sstevel@tonic-gate 	 * This is used to propagate the ABR capability
3520Sstevel@tonic-gate 	 */
3530Sstevel@tonic-gate 		MD_MSG_CLASS1,	/* message class */
3540Sstevel@tonic-gate 		mdmn_do_set_cap, /* message handler */
3550Sstevel@tonic-gate 		NULL,		/* submessage generator */
3560Sstevel@tonic-gate 		8,		/* timeout in seconds */
3570Sstevel@tonic-gate 		100000, 10,	/* class busy retry/ time delta */
3580Sstevel@tonic-gate 		200, 100	/* comm fail retry / time delta */
3590Sstevel@tonic-gate 	},
3600Sstevel@tonic-gate 
3610Sstevel@tonic-gate 	{
3620Sstevel@tonic-gate 	/* MD_MN_MSG_VERBOSITY */
3630Sstevel@tonic-gate 		MD_MSG_CLASS0,	/* special message class */
3640Sstevel@tonic-gate 		mdmn_do_dummy,	/* dummy handler */
3650Sstevel@tonic-gate 		NULL, 		/* submessage generator */
3660Sstevel@tonic-gate 		1,		/* timeout in seconds */
3670Sstevel@tonic-gate 		0, 0,		/* No retries for class busy */
3680Sstevel@tonic-gate 		0, 0		/* No retries for comm fail */
3690Sstevel@tonic-gate 	},
3700Sstevel@tonic-gate 
3710Sstevel@tonic-gate 	{
3720Sstevel@tonic-gate 	/*
3730Sstevel@tonic-gate 	 * MD_MN_MSG_MDDB_PARSE
3740Sstevel@tonic-gate 	 * Message cannot fail unless node failure causes node panic
3750Sstevel@tonic-gate 	 */
3760Sstevel@tonic-gate 		MD_MSG_CLASS7,		/* message class */
3770Sstevel@tonic-gate 		mdmn_do_mddb_parse,	/* reparse mddb */
3780Sstevel@tonic-gate 		NULL, 			/* submessage generator */
3790Sstevel@tonic-gate 		10,			/* timeout in seconds */
3800Sstevel@tonic-gate 		UINT_MAX, 2,		/* class busy retry / time delta */
3810Sstevel@tonic-gate 		UINT_MAX, 100		/* comm fail retry / time delta */
3820Sstevel@tonic-gate 	},
3830Sstevel@tonic-gate 
3840Sstevel@tonic-gate 	{
3850Sstevel@tonic-gate 	/*
3860Sstevel@tonic-gate 	 * MD_MN_MSG_MDDB_BLOCK
3870Sstevel@tonic-gate 	 * Message cannot fail unless node failure causes node panic
3880Sstevel@tonic-gate 	 */
3890Sstevel@tonic-gate 		MD_MSG_CLASS3,		/* message class */
3900Sstevel@tonic-gate 		mdmn_do_mddb_block,	/* block/unblock reparse */
3910Sstevel@tonic-gate 		NULL, 			/* submessage generator */
3920Sstevel@tonic-gate 		5,			/* timeout in seconds */
3930Sstevel@tonic-gate 		UINT_MAX, 2,		/* class busy retry / time delta */
3940Sstevel@tonic-gate 		UINT_MAX, 100		/* comm fail retry / time delta */
3950Sstevel@tonic-gate 	},
3960Sstevel@tonic-gate 
3970Sstevel@tonic-gate 	{
3980Sstevel@tonic-gate 	/*
3990Sstevel@tonic-gate 	 * MD_MN_MSG_META_DB_ATTACH
4000Sstevel@tonic-gate 	 */
4010Sstevel@tonic-gate 		MD_MSG_CLASS3,		/* message class */
4020Sstevel@tonic-gate 		NULL,			/* message handler */
4030Sstevel@tonic-gate 		mdmn_smgen_mddb_attach,	/* submessage generator */
4040Sstevel@tonic-gate 		30,			/* timeout in seconds */
4050Sstevel@tonic-gate 		UINT_MAX, 2,		/* class busy retry / time delta */
4060Sstevel@tonic-gate 		10, 100			/* comm fail retry / time delta */
4070Sstevel@tonic-gate 	},
4080Sstevel@tonic-gate 
4090Sstevel@tonic-gate 	{
4100Sstevel@tonic-gate 	/*
4110Sstevel@tonic-gate 	 * MD_MN_MSG_SM_MDDB_ATTACH
4120Sstevel@tonic-gate 	 */
4130Sstevel@tonic-gate 		MD_MSG_CLASS3,		/* message class */
4140Sstevel@tonic-gate 		mdmn_do_sm_mddb_attach,	/* message handler */
4150Sstevel@tonic-gate 		NULL,			/* submessage generator */
4160Sstevel@tonic-gate 		20,			/* timeout in seconds */
4170Sstevel@tonic-gate 					/* creates mddbs */
4180Sstevel@tonic-gate 		UINT_MAX, 2,		/* class busy retry / time delta */
4190Sstevel@tonic-gate 		10, 100			/* comm fail retry / time delta */
4200Sstevel@tonic-gate 	},
4210Sstevel@tonic-gate 
4220Sstevel@tonic-gate 	{
4230Sstevel@tonic-gate 	/*
4240Sstevel@tonic-gate 	 * MD_MN_MSG_META_DB_DETACH
4250Sstevel@tonic-gate 	 */
4260Sstevel@tonic-gate 		MD_MSG_CLASS3,		/* message class */
4270Sstevel@tonic-gate 		NULL,			/* detach mddb */
4280Sstevel@tonic-gate 		mdmn_smgen_mddb_detach,	/* submessage generator */
4290Sstevel@tonic-gate 		10,			/* timeout in seconds */
4300Sstevel@tonic-gate 		UINT_MAX, 2,		/* class busy retry / time delta */
4310Sstevel@tonic-gate 		10, 100			/* comm fail retry / time delta */
4320Sstevel@tonic-gate 	},
4330Sstevel@tonic-gate 	{
4340Sstevel@tonic-gate 
4350Sstevel@tonic-gate 	/*
4360Sstevel@tonic-gate 	 * MD_MN_MSG_SM_MDDB_DETACH
4370Sstevel@tonic-gate 	 */
4380Sstevel@tonic-gate 		MD_MSG_CLASS3,		/* message class */
4390Sstevel@tonic-gate 		mdmn_do_sm_mddb_detach,	/* detach mddb */
4400Sstevel@tonic-gate 		NULL,			/* submessage generator */
4410Sstevel@tonic-gate 		5,			/* timeout in seconds */
4420Sstevel@tonic-gate 		UINT_MAX, 2,		/* class busy retry / time delta */
4430Sstevel@tonic-gate 		10, 100			/* comm fail retry / time delta */
4440Sstevel@tonic-gate 	},
4450Sstevel@tonic-gate 
4460Sstevel@tonic-gate 	{
4470Sstevel@tonic-gate 	/*
4480Sstevel@tonic-gate 	 * MD_MN_MSG_META_DB_NEWSIDE
4490Sstevel@tonic-gate 	 */
4500Sstevel@tonic-gate 		MD_MSG_CLASS3,		/* message class */
4510Sstevel@tonic-gate 		mdmn_do_meta_db_newside, /* add new mddb side info */
4520Sstevel@tonic-gate 		NULL, 			/* submessage generator */
4530Sstevel@tonic-gate 		10,			/* timeout in seconds */
4540Sstevel@tonic-gate 		UINT_MAX, 2,		/* class busy retry / time delta */
4550Sstevel@tonic-gate 		10, 100			/* comm fail retry / time delta */
4560Sstevel@tonic-gate 	},
4570Sstevel@tonic-gate 
4580Sstevel@tonic-gate 	{
4590Sstevel@tonic-gate 	/*
4600Sstevel@tonic-gate 	 * MD_MN_MSG_META_DB_DELSIDE
4610Sstevel@tonic-gate 	 */
4620Sstevel@tonic-gate 		MD_MSG_CLASS3,		/* message class */
4630Sstevel@tonic-gate 		mdmn_do_meta_db_delside, /* delete mddb side info */
4640Sstevel@tonic-gate 		NULL, 			/* submessage generator */
4650Sstevel@tonic-gate 		10,			/* timeout in seconds */
4660Sstevel@tonic-gate 		UINT_MAX, 2,		/* class busy retry / time delta */
4670Sstevel@tonic-gate 		10, 100			/* comm fail retry / time delta */
4680Sstevel@tonic-gate 	},
4690Sstevel@tonic-gate 
4700Sstevel@tonic-gate 	{
4710Sstevel@tonic-gate 	/*
4720Sstevel@tonic-gate 	 * MD_MN_MSG_META_MD_ADDSIDE
4730Sstevel@tonic-gate 	 */
4740Sstevel@tonic-gate 		MD_MSG_CLASS3,		/* message class */
4750Sstevel@tonic-gate 		mdmn_do_meta_md_addside, /* add new md side info */
4760Sstevel@tonic-gate 		NULL, 			/* submessage generator */
4770Sstevel@tonic-gate 		10,			/* timeout in seconds */
4780Sstevel@tonic-gate 		UINT_MAX, 2,		/* class busy retry / time delta */
4790Sstevel@tonic-gate 		10, 100			/* comm fail retry / time delta */
4800Sstevel@tonic-gate 	},
4810Sstevel@tonic-gate 
4820Sstevel@tonic-gate 	{
4830Sstevel@tonic-gate 	/*
4840Sstevel@tonic-gate 	 * MD_MN_MSG_META_MD_DELSIDE
4850Sstevel@tonic-gate 	 */
4860Sstevel@tonic-gate 		MD_MSG_CLASS3,		/* message class */
4870Sstevel@tonic-gate 		mdmn_do_meta_md_delside, /* delete md side info */
4880Sstevel@tonic-gate 		NULL, 			/* submessage generator */
4890Sstevel@tonic-gate 		10,			/* timeout in seconds */
4900Sstevel@tonic-gate 		UINT_MAX, 2,		/* class busy retry / time delta */
4910Sstevel@tonic-gate 		10, 100			/* comm fail retry / time delta */
4920Sstevel@tonic-gate 	},
4930Sstevel@tonic-gate 
4940Sstevel@tonic-gate 	{
4950Sstevel@tonic-gate 	/*
4960Sstevel@tonic-gate 	 * MD_MN_MSG_MDDB_OPTRECERR
4970Sstevel@tonic-gate 	 * Message cannot fail unless node failure causes node panic
4980Sstevel@tonic-gate 	 */
4990Sstevel@tonic-gate 		MD_MSG_CLASS3,		/* message class */
5000Sstevel@tonic-gate 		mdmn_do_mddb_optrecerr,	/* fix opt rec mddb */
5010Sstevel@tonic-gate 		NULL, 			/* submessage generator */
5020Sstevel@tonic-gate 		3,			/* timeout in seconds */
5030Sstevel@tonic-gate 		UINT_MAX, 2,		/* class busy retry / time delta */
5040Sstevel@tonic-gate 		10, 100			/* comm fail retry / time delta */
5050Sstevel@tonic-gate 	},
5060Sstevel@tonic-gate 
5070Sstevel@tonic-gate 	{
5080Sstevel@tonic-gate 	/*
5090Sstevel@tonic-gate 	 * MD_MN_MSG_ABORT
5100Sstevel@tonic-gate 	 */
5110Sstevel@tonic-gate 		MD_MSG_CLASS0,		/* special message class */
5120Sstevel@tonic-gate 		mdmn_do_dummy,		/* dummy handler */
5130Sstevel@tonic-gate 		NULL, 			/* submessage generator */
5140Sstevel@tonic-gate 		1,			/* timeout in seconds */
5150Sstevel@tonic-gate 		0, 0,			/* No retries for class busy */
5160Sstevel@tonic-gate 		0, 0			/* No retries for comm fail */
5170Sstevel@tonic-gate 	},
5180Sstevel@tonic-gate 
5190Sstevel@tonic-gate 	{
5200Sstevel@tonic-gate 	/*
5210Sstevel@tonic-gate 	 * MD_MN_MSG_STATE_UPDATE_RESWR2
5220Sstevel@tonic-gate 	 * Update the state of a mirror component, called if during the updates
5230Sstevel@tonic-gate 	 * of the watermarks for a softpartition, an IO error on a submirror
5240Sstevel@tonic-gate 	 * occurs.  Need to have a class different from CLASS1, otherwise we
5250Sstevel@tonic-gate 	 * deadlock with the command that is currently being processed
5260Sstevel@tonic-gate 	 * (metainit/metaclear/metattach/metarecover)
5270Sstevel@tonic-gate 	 *
5280Sstevel@tonic-gate 	 * And we may actually use a class different than CLASS1 because this
5290Sstevel@tonic-gate 	 * can only happen when a metainit or similar is called, and in that
5300Sstevel@tonic-gate 	 * case all potential metadb or metaset commands are blocked anyway.
5310Sstevel@tonic-gate 	 * Besides the different class it does exactly what
5320Sstevel@tonic-gate 	 * MD_MN_MSG_STATE_UPDATE_RESWR would do
5330Sstevel@tonic-gate 	 */
5340Sstevel@tonic-gate 		MD_MSG_CLASS3,	/* message class */
5350Sstevel@tonic-gate 		mdmn_do_state_upd_reswr, /* message handler */
5360Sstevel@tonic-gate 		NULL, 		/* submessage generator */
5370Sstevel@tonic-gate 		8,		/* timeout in seconds */
5380Sstevel@tonic-gate 		UINT_MAX, 10,	/* class busy retry / time delta */
5390Sstevel@tonic-gate 		UINT_MAX, 100	/* comm fail retry / time delta */
5400Sstevel@tonic-gate 	},
5410Sstevel@tonic-gate 
5420Sstevel@tonic-gate 	{
5430Sstevel@tonic-gate 	/*
5440Sstevel@tonic-gate 	 * MD_MN_MSG_STATE_UPDATE2
5450Sstevel@tonic-gate 	 * Like MD_MN_MSG_STATE_UPDATE only using a different class.
5460Sstevel@tonic-gate 	 * See comment for MD_MN_MSG_STATE_UPDATE_RESWR2
5470Sstevel@tonic-gate 	 */
5480Sstevel@tonic-gate 		MD_MSG_CLASS3,	/* message class */
5490Sstevel@tonic-gate 		NULL,		 /* message handler */
5500Sstevel@tonic-gate 		mdmn_smgen_state_upd,	/* submessage generator */
5510Sstevel@tonic-gate 		16,		/* SUSPEND_WRITES + STATE_UPDATE_RESWR */
5520Sstevel@tonic-gate 		UINT_MAX, 10,	/* class busy retry / time delta */
5530Sstevel@tonic-gate 		UINT_MAX, 100	/* comm fail retry / time delta */
5540Sstevel@tonic-gate 	},
5550Sstevel@tonic-gate 
5560Sstevel@tonic-gate 	{
5570Sstevel@tonic-gate 	/*
5580Sstevel@tonic-gate 	 * MD_MN_MSG_ALLOCATE_HOTSPARE2
5590Sstevel@tonic-gate 	 * Like MD_MN_MSG_ALLOCATE_HOTSPARE only using a different class.
5600Sstevel@tonic-gate 	 * See comment for MD_MN_MSG_STATE_UPDATE_RESWR2
5610Sstevel@tonic-gate 	 */
5620Sstevel@tonic-gate 		MD_MSG_CLASS3,	/* message class */
5630Sstevel@tonic-gate 		mdmn_do_allocate_hotspare, /* message handler */
5640Sstevel@tonic-gate 		NULL, 		/* submessage generator */
5650Sstevel@tonic-gate 		8,		/* timeout in seconds */
5660Sstevel@tonic-gate 		UINT_MAX, 10,	/* class busy retry / time delta */
5670Sstevel@tonic-gate 		UINT_MAX, 100	/* comm fail retry / time delta */
5680Sstevel@tonic-gate 	},
5690Sstevel@tonic-gate 
5700Sstevel@tonic-gate 	{
5710Sstevel@tonic-gate 	/*
5720Sstevel@tonic-gate 	 * MD_MN_MSG_IOCSET
5730Sstevel@tonic-gate 	 * Send IOCSET ioctl to create a soft part
5740Sstevel@tonic-gate 	 */
5750Sstevel@tonic-gate 		MD_MSG_CLASS1,		/* message class */
5760Sstevel@tonic-gate 		mdmn_do_iocset,		/* create softpart */
5770Sstevel@tonic-gate 		NULL, 			/* submessage generator */
5780Sstevel@tonic-gate 		90,			/* times out in 90 secs */
5790Sstevel@tonic-gate 		10000, 2, 		/* class busy retry / time delta */
5800Sstevel@tonic-gate 		10, 1000		/* comm fail retry / time delta */
5810Sstevel@tonic-gate 	},
5820Sstevel@tonic-gate 
5830Sstevel@tonic-gate 	{
5840Sstevel@tonic-gate 	/*
5850Sstevel@tonic-gate 	 * MD_MN_MSG_SP_SETSTAT
5860Sstevel@tonic-gate 	 * Update the status of a softpart
5870Sstevel@tonic-gate 	 */
5880Sstevel@tonic-gate 		MD_MSG_CLASS1,		/* message class */
5890Sstevel@tonic-gate 		mdmn_do_sp_setstat,	/* create softpart */
5900Sstevel@tonic-gate 		NULL, 			/* submessage generator */
5910Sstevel@tonic-gate 		90,			/* times out in 90 secs */
5920Sstevel@tonic-gate 		10000, 2, 		/* class busy retry / time delta */
5930Sstevel@tonic-gate 		10, 1000		/* comm fail retry / time delta */
5940Sstevel@tonic-gate 	},
5950Sstevel@tonic-gate 
5960Sstevel@tonic-gate 	{
5970Sstevel@tonic-gate 	/*
5980Sstevel@tonic-gate 	 * MD_MN_MSG_ADDKEYNAME
5990Sstevel@tonic-gate 	 * Add a key to the namespace
6000Sstevel@tonic-gate 	 */
6010Sstevel@tonic-gate 		MD_MSG_CLASS1,		/* message class */
6020Sstevel@tonic-gate 		mdmn_do_addkeyname,	/* add key */
6030Sstevel@tonic-gate 		NULL, 			/* submessage generator */
6040Sstevel@tonic-gate 		90,			/* times out in 90 secs */
6050Sstevel@tonic-gate 		10000, 2, 		/* class busy retry / time delta */
6060Sstevel@tonic-gate 		10, 1000		/* comm fail retry / time delta */
6070Sstevel@tonic-gate 	},
6080Sstevel@tonic-gate 
6090Sstevel@tonic-gate 	{
6100Sstevel@tonic-gate 	/*
6110Sstevel@tonic-gate 	 * MD_MN_MSG_SP_DELKEYNAME
6120Sstevel@tonic-gate 	 * Remove a key from the namespace
6130Sstevel@tonic-gate 	 */
6140Sstevel@tonic-gate 		MD_MSG_CLASS1,		/* message class */
6150Sstevel@tonic-gate 		mdmn_do_delkeyname,	/* delete key */
6160Sstevel@tonic-gate 		NULL, 			/* submessage generator */
6170Sstevel@tonic-gate 		90,			/* times out in 90 secs */
6180Sstevel@tonic-gate 		10000, 2, 		/* class busy retry / time delta */
6190Sstevel@tonic-gate 		10, 1000		/* comm fail retry / time delta */
6200Sstevel@tonic-gate 	},
6210Sstevel@tonic-gate 
6220Sstevel@tonic-gate 	{
6230Sstevel@tonic-gate 	/*
6240Sstevel@tonic-gate 	 * MD_MN_MSG_GET_TSTATE
6250Sstevel@tonic-gate 	 * Get ui_tstate for a metadevice from the master. Used to get ABR
6260Sstevel@tonic-gate 	 * state from the master node.
6270Sstevel@tonic-gate 	 */
6280Sstevel@tonic-gate 		MD_MSG_CLASS2,		/* message class */
6290Sstevel@tonic-gate 		mdmn_do_get_tstate,	/* get tstate */
6300Sstevel@tonic-gate 		NULL,			/* submessage generator */
6310Sstevel@tonic-gate 		5,			/* times out in 5 secs */
6320Sstevel@tonic-gate 		UINT_MAX, 10, 		/* class busy retry / time delta */
6330Sstevel@tonic-gate 		UINT_MAX, 100		/* comm fail retry / time delta */
6340Sstevel@tonic-gate 	},
6350Sstevel@tonic-gate 
6360Sstevel@tonic-gate 	{
6370Sstevel@tonic-gate 	/*
6380Sstevel@tonic-gate 	 * MD_MN_MSG_GET_MIRROR_STATE
6390Sstevel@tonic-gate 	 * Get submirror state for specified submirror from master node.
6400Sstevel@tonic-gate 	 * Used to synchronise initial resync state across a cluster.
6410Sstevel@tonic-gate 	 */
6420Sstevel@tonic-gate 		MD_MSG_CLASS1,		/* message class */
6430Sstevel@tonic-gate 		mdmn_do_get_mirstate,	/* get smstate */
6440Sstevel@tonic-gate 		NULL,			/* submessage generator */
6450Sstevel@tonic-gate 		5,			/* times out in 5 secs */
6460Sstevel@tonic-gate 		UINT_MAX, 10,		/* class busy retry / time delta */
6470Sstevel@tonic-gate 		UINT_MAX, 100		/* comm fail retry / time delta */
6480Sstevel@tonic-gate 	},
6490Sstevel@tonic-gate 
6500Sstevel@tonic-gate 	{
6510Sstevel@tonic-gate 	/*
6520Sstevel@tonic-gate 	 * MD_MN_MSG_SP_SETSTAT2
6530Sstevel@tonic-gate 	 * Update the status of a softpart. Used for propagating an error from
6540Sstevel@tonic-gate 	 * the soft-part sp_error() routine
6550Sstevel@tonic-gate 	 */
6560Sstevel@tonic-gate 		MD_MSG_CLASS4,		/* message class */
6570Sstevel@tonic-gate 		mdmn_do_sp_setstat,	/* update softpart state */
6580Sstevel@tonic-gate 		NULL,			/* submessage generator */
6590Sstevel@tonic-gate 		90,			/* times out in 90 secs */
6600Sstevel@tonic-gate 		10000, 2, 		/* class busy retry / time delta */
6610Sstevel@tonic-gate 		10, 1000		/* comm fail retry / time delta */
6620Sstevel@tonic-gate 	},
6630Sstevel@tonic-gate 
6640Sstevel@tonic-gate 	{
6650Sstevel@tonic-gate 	/*
6660Sstevel@tonic-gate 	 * MD_MN_MSG_SETSYNC
6670Sstevel@tonic-gate 	 * Start a resync thread for the specified mirror
6680Sstevel@tonic-gate 	 */
6690Sstevel@tonic-gate 		MD_MSG_CLASS1,		/* message class */
6700Sstevel@tonic-gate 		mdmn_do_setsync,	/* message handler */
6710Sstevel@tonic-gate 		NULL, 			/* submessage generator */
6720Sstevel@tonic-gate 		90,			/* timeout in seconds */
6730Sstevel@tonic-gate 		10000, 2,		/* class busy retry / time delta */
6740Sstevel@tonic-gate 		10, 1000		/* comm fail retry / time delta */
6750Sstevel@tonic-gate 	},
6760Sstevel@tonic-gate 
6770Sstevel@tonic-gate 	{
6780Sstevel@tonic-gate 	/*
6790Sstevel@tonic-gate 	 * MD_MN_MSG_POKE_HOTSPARES
6800Sstevel@tonic-gate 	 * Call poke_hotspares()
6810Sstevel@tonic-gate 	 */
6820Sstevel@tonic-gate 		MD_MSG_CLASS1,		/* message class */
6830Sstevel@tonic-gate 		mdmn_do_poke_hotspares,	/* message handler */
6840Sstevel@tonic-gate 		NULL, 		/* submessage generator */
6850Sstevel@tonic-gate 		8,		/* timeout in seconds */
6860Sstevel@tonic-gate 		UINT_MAX, 10,	/* class busy retry / time delta */
6870Sstevel@tonic-gate 		UINT_MAX, 100	/* comm fail retry / time delta */
6880Sstevel@tonic-gate 	},
6890Sstevel@tonic-gate 
6901623Stw21770 	{
6911623Stw21770 	/*
6921623Stw21770 	 * MD_MN_MSG_ADDMDNAME
6931623Stw21770 	 * Add metadevice name into replica
6941623Stw21770 	 */
6951623Stw21770 		MD_MSG_CLASS1,		/* message class */
696*8452SJohn.Wren.Kennedy@Sun.COM 		mdmn_do_addmdname,	/* add metadevice name */
6971623Stw21770 		NULL,			/* submessage generator */
6981623Stw21770 		90,			/* times out in 90 secs */
6991623Stw21770 		10000, 2,		/* class busy retry / time delta */
7001623Stw21770 		10, 1000		/* comm fail retry / time delta */
7011623Stw21770 	},
702*8452SJohn.Wren.Kennedy@Sun.COM 
703*8452SJohn.Wren.Kennedy@Sun.COM 	{
704*8452SJohn.Wren.Kennedy@Sun.COM 	/*
705*8452SJohn.Wren.Kennedy@Sun.COM 	 * MD_MN_MSG_RR_DIRTY
706*8452SJohn.Wren.Kennedy@Sun.COM 	 * Mark given range of un_dirty_bm as dirty
707*8452SJohn.Wren.Kennedy@Sun.COM 	 */
708*8452SJohn.Wren.Kennedy@Sun.COM 		MD_MSG_CLASS2,		/* message class */
709*8452SJohn.Wren.Kennedy@Sun.COM 		mdmn_do_mark_dirty,	/* message handler */
710*8452SJohn.Wren.Kennedy@Sun.COM 		NULL,			/* submessage generator */
711*8452SJohn.Wren.Kennedy@Sun.COM 		8,			/* timeout in seconds */
712*8452SJohn.Wren.Kennedy@Sun.COM 		UINT_MAX, 10,		/* class busy retry / time delta */
713*8452SJohn.Wren.Kennedy@Sun.COM 		UINT_MAX, 100		/* comm fail retry / time delta */
714*8452SJohn.Wren.Kennedy@Sun.COM 	},
715*8452SJohn.Wren.Kennedy@Sun.COM 
716*8452SJohn.Wren.Kennedy@Sun.COM 	{
717*8452SJohn.Wren.Kennedy@Sun.COM 	/*
718*8452SJohn.Wren.Kennedy@Sun.COM 	 * MD_MN_MSG_RR_CLEAN
719*8452SJohn.Wren.Kennedy@Sun.COM 	 * Mark given range of un_dirty_bm as clean
720*8452SJohn.Wren.Kennedy@Sun.COM 	 */
721*8452SJohn.Wren.Kennedy@Sun.COM 		MD_MSG_CLASS2,		/* message class */
722*8452SJohn.Wren.Kennedy@Sun.COM 		mdmn_do_mark_clean,	/* message handler */
723*8452SJohn.Wren.Kennedy@Sun.COM 		NULL,			/* submessage generator */
724*8452SJohn.Wren.Kennedy@Sun.COM 		8,			/* timeout in seconds */
725*8452SJohn.Wren.Kennedy@Sun.COM 		UINT_MAX, 10,		/* class busy retry / time delta */
726*8452SJohn.Wren.Kennedy@Sun.COM 		UINT_MAX, 100		/* comm fail retry / time delta */
727*8452SJohn.Wren.Kennedy@Sun.COM 	},
7280Sstevel@tonic-gate };
729