Annotation of sys/dev/raidframe/rf_configure.h, Revision 1.1.1.1
1.1 nbrk 1: /* $OpenBSD: rf_configure.h,v 1.5 2002/12/16 07:01:03 tdeval Exp $ */
2: /* $NetBSD: rf_configure.h,v 1.4 1999/03/02 03:18:49 oster Exp $ */
3:
4: /*
5: * Copyright (c) 1995 Carnegie-Mellon University.
6: * All rights reserved.
7: *
8: * Author: Mark Holland
9: *
10: * Permission to use, copy, modify and distribute this software and
11: * its documentation is hereby granted, provided that both the copyright
12: * notice and this permission notice appear in all copies of the
13: * software, derivative works or modified versions, and any portions
14: * thereof, and that both notices appear in supporting documentation.
15: *
16: * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
17: * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
18: * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
19: *
20: * Carnegie Mellon requests users of this software to return to
21: *
22: * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
23: * School of Computer Science
24: * Carnegie Mellon University
25: * Pittsburgh PA 15213-3890
26: *
27: * any improvements or extensions that they make and grant Carnegie the
28: * rights to redistribute these changes.
29: */
30:
31: /*****************************************************************************
32: *
33: * rf_configure.h
34: *
35: * Header file for RAIDframe configuration in the kernel version only.
36: * Configuration is invoked via ioctl rather than at boot time.
37: *
38: *****************************************************************************/
39:
40:
41: #ifndef _RF__RF_CONFIGURE_H_
42: #define _RF__RF_CONFIGURE_H_
43:
44: #include "rf_archs.h"
45: #include "rf_types.h"
46:
47: #include <sys/param.h>
48: #include <sys/proc.h>
49:
50: #include <sys/ioctl.h>
51:
52: /*
53: * The RAIDframe configuration, passed down through an ioctl.
54: * The driver can be reconfigured (with total loss of data) at any time,
55: * but it must be shut down first.
56: */
57: struct RF_Config_s {
58: /* Number of rows, columns, and spare disks. */
59: RF_RowCol_t numRow, numCol, numSpare;
60:
61: /* Device numbers for disks comprising array. */
62: dev_t devs[RF_MAXROW][RF_MAXCOL];
63:
64: /* Device names. */
65: char devnames[RF_MAXROW][RF_MAXCOL][50];
66:
67: /* Device numbers for spare disks. */
68: dev_t spare_devs[RF_MAXSPARE];
69:
70: /* Device names. */
71: char spare_names[RF_MAXSPARE][50];
72:
73: /* Sectors per stripe unit. */
74: RF_SectorNum_t sectPerSU;
75:
76: /* Stripe units per parity unit. */
77: RF_StripeNum_t SUsPerPU;
78:
79: /* Stripe units per reconstruction unit. */
80: RF_StripeNum_t SUsPerRU;
81:
82: /* Identifies the RAID architecture to be used. */
83: RF_ParityConfig_t parityConfig;
84:
85: /* 'f' = fifo, 'c' = cvscan, not used in kernel. */
86: RF_DiskQueueType_t diskQueueType;
87:
88: /* # concurrent reqs to be sent to a disk. Not used in kernel. */
89: char maxOutstandingDiskReqs;
90:
91: /* Space for specifying debug variables & their values. */
92: char debugVars[RF_MAXDBGV][RF_MAXDBGVLEN];
93:
94: /* Size in bytes of layout-specific info. */
95: unsigned int layoutSpecificSize;
96:
97: /* A pointer to a layout-specific structure to be copied in. */
98: void *layoutSpecific;
99:
100: /* If !0, ignore many fatal configuration conditions. */
101: int force;
102: /*
103: * "force" is used to override cases where the component labels
104: * would indicate that configuration should not proceed without
105: * user intervention.
106: */
107: };
108:
109: #ifndef _KERNEL
110: int rf_MakeConfig(char *, RF_Config_t *);
111: int rf_MakeLayoutSpecificNULL(FILE *, RF_Config_t *, void *);
112: int rf_MakeLayoutSpecificDeclustered(FILE *, RF_Config_t *, void *);
113: void *rf_ReadSpareTable(RF_SparetWait_t *, char *);
114: #endif /* !_KERNEL */
115:
116: #endif /* !_RF__RF_CONFIGURE_H_ */
CVSweb