xref: /netbsd-src/sys/dev/raidframe/rf_chaindecluster.h (revision 93f9db1b75d415b78f73ed629beeb86235153473)
1 /*	$NetBSD: rf_chaindecluster.h,v 1.1 1998/11/13 04:20:26 oster Exp $	*/
2 /*
3  * Copyright (c) 1995 Carnegie-Mellon University.
4  * All rights reserved.
5  *
6  * Author: Khalil Amiri
7  *
8  * Permission to use, copy, modify and distribute this software and
9  * its documentation is hereby granted, provided that both the copyright
10  * notice and this permission notice appear in all copies of the
11  * software, derivative works or modified versions, and any portions
12  * thereof, and that both notices appear in supporting documentation.
13  *
14  * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
15  * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
16  * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
17  *
18  * Carnegie Mellon requests users of this software to return to
19  *
20  *  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
21  *  School of Computer Science
22  *  Carnegie Mellon University
23  *  Pittsburgh PA 15213-3890
24  *
25  * any improvements or extensions that they make and grant Carnegie the
26  * rights to redistribute these changes.
27  */
28 
29 /* rf_chaindecluster.h
30  * header file for Chained Declustering
31  */
32 
33 /*
34  * :
35  * Log: rf_chaindecluster.h,v
36  * Revision 1.14  1996/07/29 14:05:12  jimz
37  * fix numPUs/numRUs confusion (everything is now numRUs)
38  * clean up some commenting, return values
39  *
40  * Revision 1.13  1996/07/22  19:52:16  jimz
41  * switched node params to RF_DagParam_t, a union of
42  * a 64-bit int and a void *, for better portability
43  * attempted hpux port, but failed partway through for
44  * lack of a single C compiler capable of compiling all
45  * source files
46  *
47  * Revision 1.12  1996/06/10  11:55:47  jimz
48  * Straightened out some per-array/not-per-array distinctions, fixed
49  * a couple bugs related to confusion. Added shutdown lists. Removed
50  * layout shutdown function (now subsumed by shutdown lists).
51  *
52  * Revision 1.11  1996/06/07  22:26:27  jimz
53  * type-ify which_ru (RF_ReconUnitNum_t)
54  *
55  * Revision 1.10  1996/06/07  21:33:04  jimz
56  * begin using consistent types for sector numbers,
57  * stripe numbers, row+col numbers, recon unit numbers
58  *
59  * Revision 1.9  1996/06/03  23:28:26  jimz
60  * more bugfixes
61  * check in tree to sync for IPDS runs with current bugfixes
62  * there still may be a problem with threads in the script test
63  * getting I/Os stuck- not trivially reproducible (runs ~50 times
64  * in a row without getting stuck)
65  *
66  * Revision 1.8  1996/05/31  22:26:54  jimz
67  * fix a lot of mapping problems, memory allocation problems
68  * found some weird lock issues, fixed 'em
69  * more code cleanup
70  *
71  * Revision 1.7  1996/05/27  18:56:37  jimz
72  * more code cleanup
73  * better typing
74  * compiles in all 3 environments
75  *
76  * Revision 1.6  1996/05/23  21:46:35  jimz
77  * checkpoint in code cleanup (release prep)
78  * lots of types, function names have been fixed
79  *
80  * Revision 1.5  1996/05/18  19:51:34  jimz
81  * major code cleanup- fix syntax, make some types consistent,
82  * add prototypes, clean out dead code, et cetera
83  *
84  * Revision 1.4  1996/02/22  16:45:59  amiri
85  * added declaration of dag selection function
86  *
87  * Revision 1.3  1995/12/01  15:16:56  root
88  * added copyright info
89  *
90  * Revision 1.2  1995/11/17  19:55:21  amiri
91  * prototyped MapParityChainDecluster
92  */
93 
94 #ifndef _RF__RF_CHAINDECLUSTER_H_
95 #define _RF__RF_CHAINDECLUSTER_H_
96 
97 int rf_ConfigureChainDecluster(RF_ShutdownList_t **listp, RF_Raid_t *raidPtr,
98 	RF_Config_t *cfgPtr);
99 RF_ReconUnitCount_t rf_GetNumSpareRUsChainDecluster(RF_Raid_t *raidPtr);
100 void rf_MapSectorChainDecluster(RF_Raid_t *raidPtr, RF_RaidAddr_t raidSector,
101 	RF_RowCol_t *row, RF_RowCol_t *col, RF_SectorNum_t *diskSector, int remap);
102 void rf_MapParityChainDecluster(RF_Raid_t *raidPtr, RF_RaidAddr_t raidSector,
103 	RF_RowCol_t *row, RF_RowCol_t *col, RF_SectorNum_t *diskSector, int remap);
104 void rf_IdentifyStripeChainDecluster(RF_Raid_t *raidPtr, RF_RaidAddr_t addr,
105 	RF_RowCol_t **diskids, RF_RowCol_t *outRow);
106 void rf_MapSIDToPSIDChainDecluster(RF_RaidLayout_t *layoutPtr,
107 	RF_StripeNum_t stripeID, RF_StripeNum_t *psID,
108 	RF_ReconUnitNum_t *which_ru);
109 void rf_RAIDCDagSelect(RF_Raid_t *raidPtr, RF_IoType_t type,
110 		       RF_AccessStripeMap_t *asmap,
111 		       RF_VoidFuncPtr *);
112 #if 0
113 		       void (**createFunc)(RF_Raid_t *,
114 					   RF_AccessStripeMap_t *,
115 					   RF_DagHeader_t *,
116 					   void *,
117 					   RF_RaidAccessFlags_t,
118 					   RF_AllocListElem_t *)
119 );
120 #endif
121 
122 #endif /* !_RF__RF_CHAINDECLUSTER_H_ */
123