Annotation of sys/dev/raidframe/rf_reconmap.h, Revision 1.1.1.1
1.1 nbrk 1: /* $OpenBSD: rf_reconmap.h,v 1.3 2002/12/16 07:01:05 tdeval Exp $ */
2: /* $NetBSD: rf_reconmap.h,v 1.3 1999/02/05 00:06:16 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: * rf_reconMap.h
33: *
34: * -- Header file describing reconstruction status data structure.
35: ******************************************************************************/
36:
37: #ifndef _RF__RF_RECONMAP_H_
38: #define _RF__RF_RECONMAP_H_
39:
40: #include "rf_types.h"
41: #include "rf_threadstuff.h"
42:
43: /*
44: * Main reconstruction status descriptor; size and maxsize are used for
45: * monitoring only: they have no function for reconstruction.
46: */
47: struct RF_ReconMap_s {
48: RF_SectorCount_t sectorsPerReconUnit;
49: /*
50: * Sectors per reconstruct
51: * unit.
52: */
53: RF_SectorCount_t sectorsInDisk;/* Total sectors in disk. */
54: RF_SectorCount_t unitsLeft; /* Recon units left to recon. */
55: RF_ReconUnitCount_t totalRUs; /* Total recon units on disk. */
56: RF_ReconUnitCount_t spareRUs; /*
57: * Total number of spare RUs on
58: * failed disk.
59: */
60: RF_StripeCount_t totalParityStripes;
61: /*
62: * Total number of parity
63: * stripes in array.
64: */
65: u_int size; /*
66: * Overall size of this
67: * structure.
68: */
69: u_int maxSize; /* Maximum size so far. */
70: RF_ReconMapListElem_t **status; /*
71: * Array of ptrs to list
72: * elements.
73: */
74: RF_DECLARE_MUTEX (mutex);
75: };
76:
77: /* A list element. */
78: struct RF_ReconMapListElem_s {
79: /* Bounding sect nums on this block. */
80: RF_SectorNum_t startSector;
81: RF_SectorNum_t stopSector;
82: RF_ReconMapListElem_t *next; /* Next element in list. */
83: };
84:
85: RF_ReconMap_t *rf_MakeReconMap(RF_Raid_t *,
86: RF_SectorCount_t, RF_SectorCount_t, RF_ReconUnitCount_t);
87:
88: void rf_ReconMapUpdate(RF_Raid_t *, RF_ReconMap_t *,
89: RF_SectorNum_t, RF_SectorNum_t);
90:
91: void rf_FreeReconMap(RF_ReconMap_t *);
92:
93: int rf_CheckRUReconstructed(RF_ReconMap_t *, RF_SectorNum_t);
94:
95: RF_ReconUnitCount_t rf_UnitsLeftToReconstruct(RF_ReconMap_t *);
96:
97: void rf_PrintReconMap(RF_Raid_t *, RF_ReconMap_t *, RF_RowCol_t, RF_RowCol_t);
98:
99: void rf_PrintReconSchedule(RF_ReconMap_t *, struct timeval *);
100:
101: #endif /* !_RF__RF_RECONMAP_H_ */
CVSweb