root/dev/raidframe/rf_openbsd.h

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

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. RF_ComponentInfo_t
  2. RF_ComponentLabel_t
  3. RF_SingleComponent_t
  4. RF_AutoConfig_t
  5. RF_ConfigSet_t

    1 /*      $OpenBSD: rf_openbsd.h,v 1.5 2002/12/16 07:01:04 tdeval Exp $   */
    2 
    3 /*
    4  * Copyright (c) 1996, 1997, 1998 The NetBSD Foundation, Inc.
    5  * All rights reserved.
    6  *
    7  * This code is derived from software contributed to The NetBSD Foundation
    8  * by Greg Oster
    9  *
   10  * Redistribution and use in source and binary forms, with or without
   11  * modification, are permitted provided that the following conditions
   12  * are met:
   13  * 1. Redistributions of source code must retain the above copyright
   14  *    notice, this list of conditions and the following disclaimer.
   15  * 2. Redistributions in binary form must reproduce the above copyright
   16  *    notice, this list of conditions and the following disclaimer in the
   17  *    documentation and/or other materials provided with the distribution.
   18  * 3. All advertising materials mentioning features or use of this software
   19  *    must display the following acknowledgement:
   20  *      This product includes software developed by the NetBSD
   21  *      Foundation, Inc. and its contributors.
   22  * 4. Neither the name of The NetBSD Foundation nor the names of its
   23  *    contributors may be used to endorse or promote products derived
   24  *    from this software without specific prior written permission.
   25  *
   26  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
   27  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
   28  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
   29  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
   30  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
   31  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
   32  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
   33  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
   34  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
   35  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
   36  * POSSIBILITY OF SUCH DAMAGE.
   37  */
   38 
   39 /*
   40  * Copyright (c) 1996, 1997, 1998 The NetBSD Foundation, Inc.
   41  * All rights reserved.
   42  *
   43  * This code is derived from software contributed to The NetBSD Foundation
   44  * by Jason R. Thorpe.
   45  *
   46  * Redistribution and use in source and binary forms, with or without
   47  * modification, are permitted provided that the following conditions
   48  * are met:
   49  * 1. Redistributions of source code must retain the above copyright
   50  *    notice, this list of conditions and the following disclaimer.
   51  * 2. Redistributions in binary form must reproduce the above copyright
   52  *    notice, this list of conditions and the following disclaimer in the
   53  *    documentation and/or other materials provided with the distribution.
   54  * 3. All advertising materials mentioning features or use of this software
   55  *    must display the following acknowledgement:
   56  *      This product includes software developed by the NetBSD
   57  *      Foundation, Inc. and its contributors.
   58  * 4. Neither the name of The NetBSD Foundation nor the names of its
   59  *    contributors may be used to endorse or promote products derived
   60  *    from this software without specific prior written permission.
   61  *
   62  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
   63  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
   64  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
   65  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
   66  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
   67  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
   68  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
   69  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
   70  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
   71  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
   72  * POSSIBILITY OF SUCH DAMAGE.
   73  */
   74 
   75 
   76 #ifndef _RF__RF_OPENBSD_H_
   77 #define _RF__RF_OPENBSD_H_
   78 
   79 #ifdef  _KERNEL
   80 #include <sys/fcntl.h>
   81 #include <sys/systm.h>
   82 #include <sys/namei.h>
   83 #include <sys/vnode.h>
   84 #endif  /* _KERNEL */
   85 
   86 /* The per-component label information that the user can set. */
   87 typedef struct RF_ComponentInfo_s {
   88         int     row;            /* The row number of this component. */
   89         int     column;         /* The column number of this component. */
   90         int     serial_number;  /*
   91                                  * A user-specified serial number for this
   92                                  * RAID set.
   93                                  */
   94 } RF_ComponentInfo_t;
   95 
   96 /* The per-component label information. */
   97 typedef struct RF_ComponentLabel_s {
   98         int     version;        /* The version of this label. */
   99         int     serial_number;  /*
  100                                  * A user-specified serial number for this
  101                                  * RAID set.
  102                                  */
  103         int     mod_counter;    /*
  104                                  * Modification counter. Changed (usually
  105                                  * by incrementing) every time the label
  106                                  * is changed.
  107                                  */
  108         int     row;            /* The row number of this component. */
  109         int     column;         /* The column number of this component. */
  110         int     num_rows;       /* Number of rows in this RAID set. */
  111         int     num_columns;    /* Number of columns in this RAID set. */
  112         int     clean;          /* 1 when clean, 0 when dirty. */
  113         int     status;         /*
  114                                  * rf_ds_optimal, rf_ds_dist_spared, whatever.
  115                                  */
  116         /* Stuff that will be in version 2 of the label. */
  117         int     sectPerSU;      /* Sectors per Stripe Unit. */
  118         int     SUsPerPU;       /* Stripe Units per Parity Units. */
  119         int     SUsPerRU;       /* Stripe Units per Reconstruction Units. */
  120         int     parityConfig;   /* '0' == RAID0, '1' == RAID1, etc. */
  121         int     maxOutstanding; /* maxOutstanding disk requests. */
  122         int     blockSize;      /*
  123                                  * Size of component block.
  124                                  * (disklabel->d_secsize)
  125                                  */
  126         int     numBlocks;      /*
  127                                  * Number of blocks on this component. May
  128                                  * be smaller than the partition size.
  129                                  */
  130         int     partitionSize;  /*
  131                                  * Number of blocks on this *partition*.
  132                                  * Must exactly match the partition size
  133                                  * from the disklabel.
  134                                  */
  135         int     future_use[33]; /* Future expansion. */
  136         int     autoconfigure;  /*
  137                                  * Automatically configure this RAID set.
  138                                  * 0 == no, 1 == yes
  139                                  */
  140         int     root_partition; /*
  141                                  * Use this set as :
  142                                  * 0 == no, 1 == yes
  143                                  */
  144         int     last_unit;      /*
  145                                  * Last unit number (e.g. 0 for /dev/raid0)
  146                                  * of this component. Used for autoconfigure
  147                                  * only.
  148                                  */
  149         int     config_order;   /*
  150                                  * 0 .. n. The order in which the component
  151                                  * should be auto-configured. E.g. 0 is will
  152                                  * done first, (and would become raid0).
  153                                  * This may be in conflict with last_unit !!?!
  154                                  */
  155                                 /* Not currently used. */
  156         int     fut_use2[44];   /* More future expansion. */
  157 } RF_ComponentLabel_t;
  158 
  159 typedef struct RF_SingleComponent_s {
  160         int     row;
  161         int     column;
  162         char    component_name[50];     /* name of the component */
  163 } RF_SingleComponent_t;
  164 
  165 #ifdef  _KERNEL
  166 
  167 struct raidcinfo {
  168         struct vnode            *ci_vp;         /* Component device's vnode. */
  169         dev_t                    ci_dev;        /* Component device's dev_t. */
  170         RF_ComponentLabel_t      ci_label;      /*
  171                                                  * Components RAIDframe label.
  172                                                  */
  173 #if 0
  174         size_t                   ci_size;       /* Size. */
  175         char                    *ci_path;       /* Path to component. */
  176         size_t                   ci_pathlen;    /* Length of component path. */
  177 #endif
  178 };
  179 
  180 /* XXX Probably belongs in a different .h file. */
  181 typedef struct RF_AutoConfig_s {
  182         char                     devname[56];   /*
  183                                                  * The name of this component.
  184                                                  */
  185         int                      flag;          /* A general-purpose flag. */
  186         dev_t                    dev;           /*
  187                                                  * The device for this
  188                                                  * component.
  189                                                  */
  190         struct vnode            *vp;            /* Master Vnode Pointer. */
  191         RF_ComponentLabel_t     *clabel;        /* The label. */
  192         struct RF_AutoConfig_s  *next;          /*
  193                                                  * The next autoconfig
  194                                                  * structure in this set.
  195                                                  */
  196 } RF_AutoConfig_t;
  197 
  198 typedef struct RF_ConfigSet_s {
  199         struct RF_AutoConfig_s  *ac;            /*
  200                                                  * All of the autoconfig
  201                                                  * structures for this
  202                                                  * config set.
  203                                                  */
  204         int                      rootable;      /*
  205                                                  * Set to 1 if this set can
  206                                                  * be root.
  207                                                  */
  208         struct RF_ConfigSet_s   *next;
  209 } RF_ConfigSet_t;
  210 
  211 
  212 #endif  /* _KERNEL */
  213 #endif  /* _RF__RF_OPENBSD_H_ */

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