Annotation of sys/dev/raidframe/rf_raidframe.h, Revision 1.1.1.1
1.1 nbrk 1: /* $OpenBSD: rf_raidframe.h,v 1.6 2002/12/16 07:01:05 tdeval Exp $ */
2: /* $NetBSD: rf_raidframe.h,v 1.11 2000/05/28 00:48:31 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_raidframe.h
34: *
35: * Main header file for using RAIDframe in the kernel.
36: *
37: *****************************************************/
38:
39:
40: #ifndef _RF__RF_RAIDFRAME_H_
41: #define _RF__RF_RAIDFRAME_H_
42:
43: #include "rf_types.h"
44: #include "rf_configure.h"
45: #include "rf_disks.h"
46: #include "rf_raid.h"
47:
48: typedef RF_uint32 RF_ReconReqFlags_t;
49:
50: struct rf_recon_req { /* Used to tell the kernel to fail a disk. */
51: RF_RowCol_t row, col;
52: RF_ReconReqFlags_t flags;
53: void *raidPtr; /*
54: * Used internally; need not be
55: * set at ioctl time.
56: */
57: struct rf_recon_req *next; /*
58: * Used internally; need not be
59: * set at ioctl time.
60: */
61: };
62:
63: struct RF_SparetWait_s {
64: int C, G, fcol; /*
65: * C = # disks in row,
66: * G = # units in stripe,
67: * fcol = which disk has failed
68: */
69:
70: RF_StripeCount_t SUsPerPU; /*
71: * This stuff is the info
72: * required to create a spare
73: * table.
74: */
75: int TablesPerSpareRegion;
76: int BlocksPerTable;
77: RF_StripeCount_t TableDepthInPUs;
78: RF_StripeCount_t SpareSpaceDepthPerRegionInSUs;
79:
80: RF_SparetWait_t *next; /*
81: * Used internally; need not be
82: * set at ioctl time.
83: */
84: };
85:
86: typedef struct RF_DeviceConfig_s {
87: u_int rows;
88: u_int cols;
89: u_int maxqdepth;
90: int ndevs;
91: RF_RaidDisk_t devs[RF_MAX_DISKS];
92: int nspares;
93: RF_RaidDisk_t spares[RF_MAX_DISKS];
94: } RF_DeviceConfig_t;
95:
96:
97: typedef struct RF_ProgressInfo_s {
98: RF_uint64 remaining;
99: RF_uint64 completed;
100: RF_uint64 total;
101: } RF_ProgressInfo_t;
102:
103: /* Flags that can be put in the rf_recon_req structure. */
104: #define RF_FDFLAGS_NONE 0x0 /* Just fail the disk. */
105: #define RF_FDFLAGS_RECON 0x1 /* Fail and initiate recon. */
106:
107: #define RF_SCSI_DISK_MAJOR 8 /*
108: * The device major number for disks
109: * in the system.
110: */
111:
112: /* Configure the driver. */
113: #define RAIDFRAME_CONFIGURE _IOW ('r', 1, void *)
114: /* Shutdown the driver. */
115: #define RAIDFRAME_SHUTDOWN _IO ('r', 2)
116: /* Debug only: test unit ready. */
117: #define RAIDFRAME_TUR _IOW ('r', 3, dev_t)
118: /* Run a test access. */
119: #define RAIDFRAME_TEST_ACC _IOWR('r', 4, struct rf_test_acc)
120: /* Fail a disk & optionally start recon. */
121: #define RAIDFRAME_FAIL_DISK _IOW ('r', 5, struct rf_recon_req)
122: /* Get reconstruction % complete on indicated row. */
123: #define RAIDFRAME_CHECK_RECON_STATUS _IOWR('r', 6, int)
124: /* Rewrite (initialize) all parity. */
125: #define RAIDFRAME_REWRITEPARITY _IO ('r', 7)
126: /* Copy reconstructed data back to replaced disk. */
127: #define RAIDFRAME_COPYBACK _IO ('r', 8)
128: /* Does not return until kernel needs a spare table. */
129: #define RAIDFRAME_SPARET_WAIT _IOR ('r', 9, RF_SparetWait_t)
130: /* Used to send a spare table down into the kernel. */
131: #define RAIDFRAME_SEND_SPARET _IOW ('r', 10, void *)
132: /* Used to wake up the sparemap daemon & tell it to exit. */
133: #define RAIDFRAME_ABORT_SPARET_WAIT _IO ('r', 11)
134: /* Start tracing accesses. */
135: #define RAIDFRAME_START_ATRAC _IO ('r', 12)
136: /* Stop tracing accesses. */
137: #define RAIDFRAME_STOP_ATRACE _IO ('r', 13)
138: /* Get size (# sectors) in raid device. */
139: #define RAIDFRAME_GET_SIZE _IOR ('r', 14, int)
140: /* Get configuration. */
141: #define RAIDFRAME_GET_INFO _IOWR('r', 15, RF_DeviceConfig_t *)
142: /* Reset AccTotals for device. */
143: #define RAIDFRAME_RESET_ACCTOTALS _IO ('r', 16)
144: /* Retrieve AccTotals for device. */
145: #define RAIDFRAME_GET_ACCTOTALS _IOR ('r', 17, RF_AccTotals_t)
146: /* Turn AccTotals on or off for device. */
147: #define RAIDFRAME_KEEP_ACCTOTALS _IOW ('r', 18, int)
148:
149: #define RAIDFRAME_GET_COMPONENT_LABEL _IOWR ('r', 19, RF_ComponentLabel_t *)
150: #define RAIDFRAME_SET_COMPONENT_LABEL _IOW ('r', 20, RF_ComponentLabel_t)
151:
152: #define RAIDFRAME_INIT_LABELS _IOW ('r', 21, RF_ComponentLabel_t)
153: #define RAIDFRAME_ADD_HOT_SPARE _IOW ('r', 22, RF_SingleComponent_t)
154: #define RAIDFRAME_REMOVE_HOT_SPARE _IOW ('r', 23, RF_SingleComponent_t)
155: #define RAIDFRAME_REBUILD_IN_PLACE _IOW ('r', 24, RF_SingleComponent_t)
156: #define RAIDFRAME_CHECK_PARITY _IOWR ('r', 25, int)
157: #define RAIDFRAME_CHECK_PARITYREWRITE_STATUS _IOWR ('r', 26, int)
158: #define RAIDFRAME_CHECK_COPYBACK_STATUS _IOWR ('r', 27, int)
159: #define RAIDFRAME_SET_AUTOCONFIG _IOWR ('r', 28, int)
160: #define RAIDFRAME_SET_ROOT _IOWR ('r', 29, int)
161: #define RAIDFRAME_DELETE_COMPONENT _IOW ('r', 30, RF_SingleComponent_t)
162: #define RAIDFRAME_INCORPORATE_HOT_SPARE _IOW ('r', 31, RF_SingleComponent_t)
163:
164: /* 'Extended' status versions. */
165: #define RAIDFRAME_CHECK_RECON_STATUS_EXT \
166: _IOWR('r', 32, RF_ProgressInfo_t *)
167: #define RAIDFRAME_CHECK_PARITYREWRITE_STATUS_EXT \
168: _IOWR ('r', 33, RF_ProgressInfo_t *)
169: #define RAIDFRAME_CHECK_COPYBACK_STATUS_EXT \
170: _IOWR ('r', 34, RF_ProgressInfo_t *)
171:
172: #endif /* !_RF__RF_RAIDFRAME_H_ */
CVSweb