Annotation of sys/dev/raidframe/rf_openbsd.h, Revision 1.1.1.1
1.1 nbrk 1: /* $OpenBSD: rf_openbsd.h,v 1.5 2002/12/16 07:01:04 tdeval Exp $ */
2:
3: /*
4: * Copyright (c) 1996, 1997, 1998 The NetBSD Foundation, Inc.
5: * All rights reserved.
6: *
7: * This code is derived from software contributed to The NetBSD Foundation
8: * by Greg Oster
9: *
10: * Redistribution and use in source and binary forms, with or without
11: * modification, are permitted provided that the following conditions
12: * are met:
13: * 1. Redistributions of source code must retain the above copyright
14: * notice, this list of conditions and the following disclaimer.
15: * 2. Redistributions in binary form must reproduce the above copyright
16: * notice, this list of conditions and the following disclaimer in the
17: * documentation and/or other materials provided with the distribution.
18: * 3. All advertising materials mentioning features or use of this software
19: * must display the following acknowledgement:
20: * This product includes software developed by the NetBSD
21: * Foundation, Inc. and its contributors.
22: * 4. Neither the name of The NetBSD Foundation nor the names of its
23: * contributors may be used to endorse or promote products derived
24: * from this software without specific prior written permission.
25: *
26: * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
27: * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
28: * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
29: * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
30: * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
31: * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
32: * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
33: * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
34: * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
35: * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
36: * POSSIBILITY OF SUCH DAMAGE.
37: */
38:
39: /*
40: * Copyright (c) 1996, 1997, 1998 The NetBSD Foundation, Inc.
41: * All rights reserved.
42: *
43: * This code is derived from software contributed to The NetBSD Foundation
44: * by Jason R. Thorpe.
45: *
46: * Redistribution and use in source and binary forms, with or without
47: * modification, are permitted provided that the following conditions
48: * are met:
49: * 1. Redistributions of source code must retain the above copyright
50: * notice, this list of conditions and the following disclaimer.
51: * 2. Redistributions in binary form must reproduce the above copyright
52: * notice, this list of conditions and the following disclaimer in the
53: * documentation and/or other materials provided with the distribution.
54: * 3. All advertising materials mentioning features or use of this software
55: * must display the following acknowledgement:
56: * This product includes software developed by the NetBSD
57: * Foundation, Inc. and its contributors.
58: * 4. Neither the name of The NetBSD Foundation nor the names of its
59: * contributors may be used to endorse or promote products derived
60: * from this software without specific prior written permission.
61: *
62: * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
63: * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
64: * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
65: * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
66: * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
67: * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
68: * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
69: * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
70: * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
71: * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
72: * POSSIBILITY OF SUCH DAMAGE.
73: */
74:
75:
76: #ifndef _RF__RF_OPENBSD_H_
77: #define _RF__RF_OPENBSD_H_
78:
79: #ifdef _KERNEL
80: #include <sys/fcntl.h>
81: #include <sys/systm.h>
82: #include <sys/namei.h>
83: #include <sys/vnode.h>
84: #endif /* _KERNEL */
85:
86: /* The per-component label information that the user can set. */
87: typedef struct RF_ComponentInfo_s {
88: int row; /* The row number of this component. */
89: int column; /* The column number of this component. */
90: int serial_number; /*
91: * A user-specified serial number for this
92: * RAID set.
93: */
94: } RF_ComponentInfo_t;
95:
96: /* The per-component label information. */
97: typedef struct RF_ComponentLabel_s {
98: int version; /* The version of this label. */
99: int serial_number; /*
100: * A user-specified serial number for this
101: * RAID set.
102: */
103: int mod_counter; /*
104: * Modification counter. Changed (usually
105: * by incrementing) every time the label
106: * is changed.
107: */
108: int row; /* The row number of this component. */
109: int column; /* The column number of this component. */
110: int num_rows; /* Number of rows in this RAID set. */
111: int num_columns; /* Number of columns in this RAID set. */
112: int clean; /* 1 when clean, 0 when dirty. */
113: int status; /*
114: * rf_ds_optimal, rf_ds_dist_spared, whatever.
115: */
116: /* Stuff that will be in version 2 of the label. */
117: int sectPerSU; /* Sectors per Stripe Unit. */
118: int SUsPerPU; /* Stripe Units per Parity Units. */
119: int SUsPerRU; /* Stripe Units per Reconstruction Units. */
120: int parityConfig; /* '0' == RAID0, '1' == RAID1, etc. */
121: int maxOutstanding; /* maxOutstanding disk requests. */
122: int blockSize; /*
123: * Size of component block.
124: * (disklabel->d_secsize)
125: */
126: int numBlocks; /*
127: * Number of blocks on this component. May
128: * be smaller than the partition size.
129: */
130: int partitionSize; /*
131: * Number of blocks on this *partition*.
132: * Must exactly match the partition size
133: * from the disklabel.
134: */
135: int future_use[33]; /* Future expansion. */
136: int autoconfigure; /*
137: * Automatically configure this RAID set.
138: * 0 == no, 1 == yes
139: */
140: int root_partition; /*
141: * Use this set as :
142: * 0 == no, 1 == yes
143: */
144: int last_unit; /*
145: * Last unit number (e.g. 0 for /dev/raid0)
146: * of this component. Used for autoconfigure
147: * only.
148: */
149: int config_order; /*
150: * 0 .. n. The order in which the component
151: * should be auto-configured. E.g. 0 is will
152: * done first, (and would become raid0).
153: * This may be in conflict with last_unit !!?!
154: */
155: /* Not currently used. */
156: int fut_use2[44]; /* More future expansion. */
157: } RF_ComponentLabel_t;
158:
159: typedef struct RF_SingleComponent_s {
160: int row;
161: int column;
162: char component_name[50]; /* name of the component */
163: } RF_SingleComponent_t;
164:
165: #ifdef _KERNEL
166:
167: struct raidcinfo {
168: struct vnode *ci_vp; /* Component device's vnode. */
169: dev_t ci_dev; /* Component device's dev_t. */
170: RF_ComponentLabel_t ci_label; /*
171: * Components RAIDframe label.
172: */
173: #if 0
174: size_t ci_size; /* Size. */
175: char *ci_path; /* Path to component. */
176: size_t ci_pathlen; /* Length of component path. */
177: #endif
178: };
179:
180: /* XXX Probably belongs in a different .h file. */
181: typedef struct RF_AutoConfig_s {
182: char devname[56]; /*
183: * The name of this component.
184: */
185: int flag; /* A general-purpose flag. */
186: dev_t dev; /*
187: * The device for this
188: * component.
189: */
190: struct vnode *vp; /* Master Vnode Pointer. */
191: RF_ComponentLabel_t *clabel; /* The label. */
192: struct RF_AutoConfig_s *next; /*
193: * The next autoconfig
194: * structure in this set.
195: */
196: } RF_AutoConfig_t;
197:
198: typedef struct RF_ConfigSet_s {
199: struct RF_AutoConfig_s *ac; /*
200: * All of the autoconfig
201: * structures for this
202: * config set.
203: */
204: int rootable; /*
205: * Set to 1 if this set can
206: * be root.
207: */
208: struct RF_ConfigSet_s *next;
209: } RF_ConfigSet_t;
210:
211:
212: #endif /* _KERNEL */
213: #endif /* _RF__RF_OPENBSD_H_ */
CVSweb