xref: /onnv-gate/usr/src/uts/common/sys/lvm/md_mirror_shared.h (revision 0:68f95e015346)
1*0Sstevel@tonic-gate /*
2*0Sstevel@tonic-gate  * CDDL HEADER START
3*0Sstevel@tonic-gate  *
4*0Sstevel@tonic-gate  * The contents of this file are subject to the terms of the
5*0Sstevel@tonic-gate  * Common Development and Distribution License, Version 1.0 only
6*0Sstevel@tonic-gate  * (the "License").  You may not use this file except in compliance
7*0Sstevel@tonic-gate  * with the License.
8*0Sstevel@tonic-gate  *
9*0Sstevel@tonic-gate  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10*0Sstevel@tonic-gate  * or http://www.opensolaris.org/os/licensing.
11*0Sstevel@tonic-gate  * See the License for the specific language governing permissions
12*0Sstevel@tonic-gate  * and limitations under the License.
13*0Sstevel@tonic-gate  *
14*0Sstevel@tonic-gate  * When distributing Covered Code, include this CDDL HEADER in each
15*0Sstevel@tonic-gate  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16*0Sstevel@tonic-gate  * If applicable, add the following below this CDDL HEADER, with the
17*0Sstevel@tonic-gate  * fields enclosed by brackets "[]" replaced with your own identifying
18*0Sstevel@tonic-gate  * information: Portions Copyright [yyyy] [name of copyright owner]
19*0Sstevel@tonic-gate  *
20*0Sstevel@tonic-gate  * CDDL HEADER END
21*0Sstevel@tonic-gate  */
22*0Sstevel@tonic-gate /*
23*0Sstevel@tonic-gate  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
24*0Sstevel@tonic-gate  * Use is subject to license terms.
25*0Sstevel@tonic-gate  */
26*0Sstevel@tonic-gate 
27*0Sstevel@tonic-gate #ifndef _SYS_MD_MIRROR_SHARED_H
28*0Sstevel@tonic-gate #define	_SYS_MD_MIRROR_SHARED_H
29*0Sstevel@tonic-gate 
30*0Sstevel@tonic-gate #pragma ident	"%Z%%M%	%I%	%E% SMI"
31*0Sstevel@tonic-gate 
32*0Sstevel@tonic-gate #include <sys/lvm/mdvar.h>
33*0Sstevel@tonic-gate 
34*0Sstevel@tonic-gate #ifdef	__cplusplus
35*0Sstevel@tonic-gate extern "C" {
36*0Sstevel@tonic-gate #endif
37*0Sstevel@tonic-gate 
38*0Sstevel@tonic-gate /*
39*0Sstevel@tonic-gate  * md_m_shared32_od is part of old 32 bit format
40*0Sstevel@tonic-gate  */
41*0Sstevel@tonic-gate #if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
42*0Sstevel@tonic-gate #pragma pack(4)
43*0Sstevel@tonic-gate #endif
44*0Sstevel@tonic-gate typedef struct md_m_shared32_od {
45*0Sstevel@tonic-gate 	uint_t		ms_flags;
46*0Sstevel@tonic-gate 	uint_t		xms_mx[2];	/* replaces kmutex_t ms_mx */
47*0Sstevel@tonic-gate 	/*
48*0Sstevel@tonic-gate 	 * The following are really private to the mirror code
49*0Sstevel@tonic-gate 	 * but are stored on a per component basic
50*0Sstevel@tonic-gate 	 */
51*0Sstevel@tonic-gate 	comp_state_t	ms_state;	/* component state */
52*0Sstevel@tonic-gate 	uint_t		ms_lasterrcnt;
53*0Sstevel@tonic-gate 	dev32_t		ms_orig_dev;
54*0Sstevel@tonic-gate 	daddr32_t	ms_orig_blk;
55*0Sstevel@tonic-gate 	mdkey_t		ms_hs_key;
56*0Sstevel@tonic-gate 	mddb_recid_t	ms_hs_id;
57*0Sstevel@tonic-gate 	struct timeval32 ms_timestamp;   /* time of last state change */
58*0Sstevel@tonic-gate } md_m_shared32_od_t;
59*0Sstevel@tonic-gate 
60*0Sstevel@tonic-gate typedef struct md_m_shared {
61*0Sstevel@tonic-gate 	uint_t		ms_flags;
62*0Sstevel@tonic-gate 	/*
63*0Sstevel@tonic-gate 	 *	The following are really private to the mirror code
64*0Sstevel@tonic-gate 	 *	but are stored on a per component basic
65*0Sstevel@tonic-gate 	 */
66*0Sstevel@tonic-gate 	comp_state_t	ms_state;	/* component state */
67*0Sstevel@tonic-gate 	uint_t		ms_lasterrcnt;
68*0Sstevel@tonic-gate 	md_dev64_t	ms_orig_dev;	/* 64 bit */
69*0Sstevel@tonic-gate 	diskaddr_t	ms_orig_blk;
70*0Sstevel@tonic-gate 	mdkey_t		ms_hs_key;
71*0Sstevel@tonic-gate 	mddb_recid_t	ms_hs_id;
72*0Sstevel@tonic-gate 	md_timeval32_t	ms_timestamp;	/* time of last state change, 32 bit */
73*0Sstevel@tonic-gate } md_m_shared_t;
74*0Sstevel@tonic-gate 
75*0Sstevel@tonic-gate #define	MDM_S_NOWRITE	0x0001
76*0Sstevel@tonic-gate #define	MDM_S_WRTERR	0x0002
77*0Sstevel@tonic-gate #define	MDM_S_READERR	0x0004
78*0Sstevel@tonic-gate #define	MDM_S_IOERR	(MDM_S_WRTERR | MDM_S_READERR)
79*0Sstevel@tonic-gate #define	MDM_S_ISOPEN	0x0008
80*0Sstevel@tonic-gate #define	MDM_S_RS_TRIED	0x0010		/* resync has tried this component */
81*0Sstevel@tonic-gate #define	MDM_S_PROBEOPEN	0x0020		/* accessed via probe */
82*0Sstevel@tonic-gate 
83*0Sstevel@tonic-gate typedef struct ms_cd_info {
84*0Sstevel@tonic-gate 	md_dev64_t	cd_dev;
85*0Sstevel@tonic-gate 	md_dev64_t	cd_orig_dev;
86*0Sstevel@tonic-gate } ms_cd_info_t;
87*0Sstevel@tonic-gate 
88*0Sstevel@tonic-gate typedef struct ms_new_dev {
89*0Sstevel@tonic-gate 	md_dev64_t	nd_dev;
90*0Sstevel@tonic-gate 	mdkey_t		nd_key;
91*0Sstevel@tonic-gate 	diskaddr_t	nd_start_blk;
92*0Sstevel@tonic-gate 	diskaddr_t	nd_nblks;
93*0Sstevel@tonic-gate 	int		nd_labeled;
94*0Sstevel@tonic-gate 	mddb_recid_t	nd_hs_id;
95*0Sstevel@tonic-gate } ms_new_dev_t;
96*0Sstevel@tonic-gate #if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
97*0Sstevel@tonic-gate #pragma pack()
98*0Sstevel@tonic-gate #endif
99*0Sstevel@tonic-gate 
100*0Sstevel@tonic-gate #ifdef	__cplusplus
101*0Sstevel@tonic-gate }
102*0Sstevel@tonic-gate #endif
103*0Sstevel@tonic-gate 
104*0Sstevel@tonic-gate #endif	/* _SYS_MD_MIRROR_SHARED_H */
105