The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/raid/vinum/vinumstate.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*-
    2  * Copyright (c) 1997, 1998
    3  *      Nan Yang Computer Services Limited.  All rights reserved.
    4  *
    5  *  This software is distributed under the so-called ``Berkeley
    6  *  License'':
    7  *
    8  * Redistribution and use in source and binary forms, with or without
    9  * modification, are permitted provided that the following conditions
   10  * are met:
   11  * 1. Redistributions of source code must retain the above copyright
   12  *    notice, this list of conditions and the following disclaimer.
   13  * 2. Redistributions in binary form must reproduce the above copyright
   14  *    notice, this list of conditions and the following disclaimer in the
   15  *    documentation and/or other materials provided with the distribution.
   16  * 3. All advertising materials mentioning features or use of this software
   17  *    must display the following acknowledgement:
   18  *      This product includes software developed by Nan Yang Computer
   19  *      Services Limited.
   20  * 4. Neither the name of the Company nor the names of its contributors
   21  *    may be used to endorse or promote products derived from this software
   22  *    without specific prior written permission.
   23  *
   24  * This software is provided ``as is'', and any express or implied
   25  * warranties, including, but not limited to, the implied warranties of
   26  * merchantability and fitness for a particular purpose are disclaimed.
   27  * In no event shall the company or contributors be liable for any
   28  * direct, indirect, incidental, special, exemplary, or consequential
   29  * damages (including, but not limited to, procurement of substitute
   30  * goods or services; loss of use, data, or profits; or business
   31  * interruption) however caused and on any theory of liability, whether
   32  * in contract, strict liability, or tort (including negligence or
   33  * otherwise) arising in any way out of the use of this software, even if
   34  * advised of the possibility of such damage.
   35  */
   36 
   37 /*
   38  * This file gets read by makestatetext to create text files
   39  * with the names of the states, so don't change the file
   40  * format
   41  */
   42 enum volumestate {
   43         /* present but unused.  Must be 0 */
   44         volume_unallocated,
   45 
   46         /* mentioned elsewhere but not known to the configuration */
   47         volume_uninit,
   48         volume_down,
   49 
   50         /*
   51          * The volume is up and functional, but not all
   52          * plexes may be available
   53          */
   54         volume_up,
   55 
   56         /* last value, for table dimensions */
   57         volume_laststate = volume_up
   58 };
   59 
   60 enum plexstate {
   61         /* An empty entry, not a plex at all.   */
   62         plex_unallocated,
   63 
   64         /* The plex has been referenced by a volume */
   65         plex_referenced,
   66 
   67         /*
   68          * The plex has been allocated, but there configuration
   69          * is not complete
   70          */
   71         plex_init,
   72 
   73         /*
   74          * A plex which has gone completely down because of
   75          * I/O errors.
   76          */
   77         plex_faulty,
   78 
   79         /*
   80          * A plex which has been taken down by the
   81          * administrator.
   82          */
   83         plex_down,
   84 
   85         /* A plex which is being initialized */
   86         plex_initializing,
   87 
   88         /*
   89          * *** The remaining states represent plexes which are
   90          * at least partially up.  Keep these separate so that
   91          * they can be checked more easily.
   92          */
   93 
   94         /*
   95          * A plex entry which is at least partially up.  Not
   96          * all subdisks are available, and an inconsistency
   97          * has occurred.  If no other plex is uncorrupted,
   98          * the volume is no longer consistent.
   99          */
  100         plex_corrupt,
  101 
  102         /* first "up" state */
  103         plex_firstup = plex_corrupt,
  104 
  105         /*
  106          * A RAID-5 plex entry which is accessible, but one
  107          * subdisk is down, requiring recovery for many
  108          * I/O requests.
  109          */
  110         plex_degraded,
  111 
  112         /*
  113          * A plex which is really up, but which has a reborn
  114          * subdisk which we don't completely trust, and
  115          * which we don't want to read if we can avoid it
  116          */
  117         plex_flaky,
  118 
  119         /*
  120          * A plex entry which is completely up.  All subdisks
  121          * are up.
  122          */
  123         plex_up,
  124 
  125         /* last value, for table dimensions */
  126         plex_laststate = plex_up
  127 };
  128 
  129 /*
  130  * subdisk states
  131  */
  132 enum sdstate {
  133         /* An empty entry, not a subdisk at all. */
  134         sd_unallocated,
  135 
  136         /*
  137          * A subdisk entry which has not been created
  138          * completely.  Some fields may be empty.
  139          */
  140         sd_uninit,
  141 
  142         /* The subdisk has been referenced by a plex */
  143         sd_referenced,
  144 
  145         /*
  146          * A subdisk entry which has been created completely.
  147          * All fields are correct, but the disk hasn't
  148          * been updated.
  149          */
  150         sd_init,
  151 
  152         /*
  153          * A subdisk entry which has been created completely.
  154          * All fields are correct, and the disk has been
  155          * updated, but there is no data on the disk.
  156          */
  157         sd_empty,
  158 
  159         /*
  160          * A subdisk entry which has been created completely and
  161          * which is currently being initialized
  162          */
  163         sd_initializing,
  164 
  165         /*
  166          * A subdisk entry which has been initialized,
  167          * but which can't come up because it would
  168          * cause inconsistencies.
  169          */
  170         sd_initialized,
  171 
  172         /* *** The following states represent invalid data */
  173         /*
  174          * A subdisk entry which has been created completely.
  175          * All fields are correct, the config on disk has been
  176          * updated, and the data was valid, but since then the
  177          * drive has been taken down, and as a result updates
  178          * have been missed.
  179          */
  180         sd_obsolete,
  181 
  182         /*
  183          * A subdisk entry which has been created completely.
  184          * All fields are correct, the disk has been updated,
  185          * and the data was valid, but since then the drive
  186          * has been crashed and updates have been lost.
  187          */
  188         sd_stale,
  189 
  190         /* *** The following states represent valid, inaccessible data */
  191 
  192         /*
  193          * A subdisk entry which has been created completely.
  194          * All fields are correct, the disk has been updated,
  195          * and the data was valid, but since then the drive
  196          * has gone down.   No attempt has been made to write
  197          * to the subdisk since the crash, so the data is valid.
  198          */
  199         sd_crashed,
  200 
  201         /*
  202          * A subdisk entry which was up, which contained
  203          * valid data, and which was taken down by the
  204          * administrator.  The data is valid.
  205          */
  206         sd_down,
  207 
  208         /*
  209          * *** This is invalid data (the subdisk previously had
  210          * a numerically lower state), but it is currently in the
  211          * process of being revived.  We can write but not read.
  212          */
  213         sd_reviving,
  214 
  215         /*
  216          * *** The following states represent accessible subdisks
  217          * with valid data
  218          */
  219 
  220         /*
  221          * A subdisk entry which has been created completely.
  222          * All fields are correct, the disk has been updated,
  223          * and the data was valid, but since then the drive
  224          * has gone down and up again.  No updates were lost,
  225          * but it is possible that the subdisk has been
  226          * damaged.  We won't read from this subdisk if we
  227          * have a choice.  If this is the only subdisk which
  228          * covers this address space in the plex, we set its
  229          * state to sd_up under these circumstances, so this
  230          * status implies that there is another subdisk to
  231          * fulfil the request.
  232          */
  233         sd_reborn,
  234 
  235         /*
  236          * A subdisk entry which has been created completely.
  237          * All fields are correct, the disk has been updated,
  238          * and the data is valid.
  239          */
  240         sd_up,
  241 
  242         /* last value, for table dimensions */
  243         sd_laststate = sd_up
  244 };
  245 
  246 enum drivestate {
  247         /* present but unused.  Must be 0 */
  248         drive_unallocated,
  249 
  250         /* just mentioned in some other config entry */
  251         drive_referenced,
  252 
  253         /* not accessible */
  254         drive_down,
  255 
  256         /* up and running */
  257         drive_up,
  258 
  259         /* last value, for table dimensions */
  260         drive_laststate = drive_up
  261 };
  262 

Cache object: 3c973a2646285b3681b5d91a1e28428c


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.