[BACK]Return to rf_raidframe.h CVS log [TXT][DIR] Up to [local] / sys / dev / raidframe

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