Annotation of sys/dev/raidframe/rf_raidframe.h, Revision 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