Annotation of sys/dev/raidframe/rf_openbsd.h, Revision 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