root/dev/raidframe/rf_reconmap.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


    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_ */

/* [<][>][^][v][top][bottom][index][help] */