SCSI Disk Array Model (94-040r3)

George Penokie GOP at rchvmp3.vnet.ibm.com
Fri Apr 8 08:47:44 PDT 1994


   Date:  Mar,17 1994                        X3T10/94-040 rev 3

   To:  X3T9.2 Committee (SCSI)

   From:  George Penokie (IBM)

   Subject:  SCSI Disk Array Model

   | - Denotes changes from 93-040r2 to 94-040r3

   0.0  References

   This proposal uses many definitions and ideas contained within
   the SCSI-3 Architecture Model (SAM).  It is assumed a reader
   of this proposal has knowledge of SAM definitions.

   The SAM draft standard number X3T9.2/994D is under development
   within the X3T9.2 committee.  Copies of the SAM document may
   be purchased from:

   Global Engineering Documents, 15 Inverness Way East,
   Englewood, Co. 80112-5704, (800)854-7179 or (303) 792-2181
   FAX: (303) 792-2192

   1.0  Glossary

   1.   Check Data - Information contained within a redundancy
        group that allows lost or destroyed user data to be
        recreated.  Any overlapping redundancy groups shall not
        have check data within the overlapping P-extents.

   1.   Check Data Mapping - The distribution of the check data
        within a redundancy group.

   1.   C-LUI - Component Logical Unit Identifier.  Any physical
        addressable component not identifiable as a SCSI-3
        peripheral device type.  See the Identify Command
        description in the SCSI-3 Primary Commands Standard for
        the list of SCSI-3 peripheral device types.

   1.   Disk Array Conversion Layer (DACL) - Converts input
        logical unit identifiers to output logical unit
        identifiers and may convert input LBAs to output
        LBAs.

   1.   Group - Objects that are independent from one another
        and may overlay one another. Groups may span more than
        one device.  A single device may contain more than one
        group or may contain the entire group.

   1.   P-extent - All or part of the host addressable space
        within a single P-LUI.  The parameters that define a
        fixed block P-extent are:

        -Physical Logical Unit Identifier (P-LUI)
        -Start P-LBA
        -Number of P-LBAs
        -Number of Bytes per P-LBA

        The parameters which define a variable block P-extent
        are:

        -Physical Logical Unit Identifier (P-LUI)
        -Start P-LBA
        -Number of P-LBAs

        The P-LUI defines the address of the physical device
        that contains the P-extent.

        The start P-LBA is the first addressable P-LBA of the
        P-extent.

        The number of P-LBAs provides the capacity of the
        P-extent in blocks.

        The number of bytes per P-LBA provides the size, in
        bytes, of the blocks in the P-extent.

   1.   P-LUI - Physical Device Logical Unit Identifier.  Any
        addressable component identifiable as a SCSI-3 peripheral
        device type.  See the Identify Command description in the
        SCSI-3 Primary Commands Standard for the list of SCSI-3
        peripheral device types.

   1.   P-LBA - Physical Device Logical Block Address

   1.   Protected Space - The portion of a redundancy group
        that does not contain check data.

   1.   PS-extent - All or part of the protected space within a
        single P-LUI configured as a redundancy group.  A single
        P-LUI may contain all or part of a redundancy group.

        PS-extents are created on the successful completion of a
        create/modify redundancy group service request.
        PS-extents are reported within the parameter list
        returned by a report unassigned redundancy group service
        or a report volume set service.  PS-extents are used to
        define volume sets.  Volume sets are defined using a
        create/modify volume set service.

        The parameters that define a fixed block PS-extent are:

        -Physical Logical Unit Identifier (P-LUI)
        -Start PS-LBA
        -Number of PS-LBAs
        -Number of Bytes per PS-LBA

        The parameters which define a variable block PS-extent
        are:

        -Physical Logical Unit Identifier (P-LUI)
        -Start PS-LBA
        -Number of PS-LBAs

        The P-LUI defines the address of the physical device that
        contains the PS-extent.

        The start PS-LBA is the first unallocated addressable
        PS-LBA of protected space within the PS-extent.

        The number of PS-LBAs provides the capacity of the
        protected space PS-extent in blocks.

        Note:In PS-extents the number of PS-LBAs does not
        include any LBAs that have been assigned to contain check
        data in contrast to P-extents in which the number of
        P-LBAs includes all addressable LBAs on a P-LUI.

        The number of bytes per PS-LBA provides the size, in
        bytes, of the blocks in the PS-extent.

   1.   PS-LBA - Protected space Logical Block Address

   1.   R-LUI - Redundancy group Logical Unit Identifier

   1.   Rebuild Operation - Recreation of protected space
        contents or any check data within a P-extent using check
        data and protected space contents from the remaining
        P-extents within the redundancy group.  The regenerated
        protected space contents or any recalculated check data
        shall be written to the P-extent being rebuilt.

   1.   Recalculate Operation - Recreation of check data from
        protected space contents.  The recreated check data shall
        be written to the check data location being recalculated.

   1.   Regenerate Operation - Recreation of inaccessible
        protected space contents from accessible check data and
        protected space contents.  The recreated protected space
        contents is not saved.

   1.   Redundancy Group - A grouping of protected space and
        associated Check Data (Check Data may be null) into a
        single Logical Unit that shall only have a single type
        of redundancy.  P-extents that contain no check data may
        be associated with more than one redundancy groups.

   1.   Set - Objects that do not intersect and are independent
        from one another.  Sets may span more than one device.
        A single device may contain more than one set or may
        contain the entire set.

   1.   S-LUI - Spare Logical Unit Identifier

   1.   Spare - A range of LBAs or a P-LUI associated with one
        or more redundancy groups or P-LUIs that can be used to
        replace a portion of a redundancy group or a P-LUI.

   1.   SCSI Disk Array (SDA) - A device that processes SCSI
        command descriptor blocks and performs the services of a
        disk array conversion layer.  A single SDA may contain
        multiple DACLs.

   1.   User Data - The addressable continuum of logical
        blocks that are input to the Disk Array Conversion
        Layer.  Check Data is not part of this addressable
        continuum of logical blocks.

   1.   User Data Mapping - The distribution of user data within
        a volume set.

   1.   Verify Operation - Recreate check data from protected
        space contents and compare the recreated check data
        with the current check data.  If the recreated check data
        does not match the current check data an exception
        condition shall be created.

   1.   V-LUI - Volume set Logical Unit Identifier

   1.   V-LBA - Volume set Logical Block Address

   1.   Volume Set - One or more PS-extents grouped into a single
        Logical Unit.  Volume sets shall not intersect and shall
        be independent from one another.

   2.0 SCSI Disk Array Layering Model

   A system is typically composed of many protocol conversion
   layers, and these layers may exist in hardware or software.
   Each of these layers has input(s) and output(s).  The next
   layer accessed is determined by the preceding layers output.

   These protocol conversion layers include, but are not limited
   to:  transport modules, host adapter drivers, SIMs, HBAs,
   bridge controllers, and disk drives.  Each of these layers
   will be represented by a simple block that has an input and
   output.

   All requests to or from a DACL contain LUIs but not all
   requests contain LBAs.

   Note:The logical unit identifier is fully defined in SAM.

           LUI(INPUT) + LBA(INPUT)
                      |
                      |
                      V
                --------------
                |            |
                |            |
                --------------
                      |
                      |
                      V
          LUI(OUTPUT) + LBA(OUTPUT)

   2.1 Generic Layer

   Generic Layers do not modify the logical unit identifier or
   the LBA.

   Note: There are types of layers other than generic and disk
   array conversion layers, however, these are not covered in
   this model.

.pa
   2.2 Disk Array Conversion Layer (DACL)

   The disk array conversion layer is capable of extensive
   manipulation on the logical unit identifier and the LBA,
   based upon a consistent algorithm that follows the defined
   configuration.  It is possible that a single LUI(INPUT) or
   LBA(INPUT) may be converted to multiple different
   LUI(OUTPUT)s and LBA(OUTPUT)s.  Disk array conversion layers
   will be shown with 'DACL' in the block.

   The LUI(OUTPUT)s may not be SCSI devices.

   Disk array conversion layers provide the functions listed in
   section 4.0.


                      LUI(INPUT) + LBA(INPUT)
                                 |
                                 |
                                 V
   -------------------------------------------------------------
   |                            DACL                           |
   |                                                           |
   -------------------------------------------------------------
               |                          |       ...       |
               |                          |                 --->
               V                          V
   LUI(OUTPUTa)+LBA(OUTPUTa)  LUI(OUTPUTb)+LBA(OUTPUTb)

.pa

   3.0 Examples of SCSI Disk Array Variations

   Typically a system diagram will be composed of many layers
   combined into a tree.  For example, a driver may connect to
   multiple HBAs, which in turn may connect to multiple Targets,
   etc.  The example below shows a system that consists of:

   -One initiator has two SCSI targets attached on a single
   SCSI bus and this SCSI bus is not expandable.
   -One initiator has two targets attached on a single SCSI bus
   and this SCSI bus is expandable.  One of the targets is a
   DACL.
   -The DACL initiator has three SCSI buses with targets
   attached and is capable of driving more SCSI buses.  Two of
   the SCSI buses contain two targets each and these SCSI buses
   are not expandable.  One of the SCSI buses contains one target
   and this SCSI bus is expandable.



                         Operating system
                               |
                               V
   -------------------------------------------------------------
   |                     Software                              |
   |                     (driver)                              |
   -------------------------------------------------------------
               |                               |   . . .  |
               |                               |          ----->
               V                               V
   --------------------------   --------------------------------
   |          HBA           |   |             HBA              |
   |      (Initiator)       |   |          (Initiator)         |
   --------------------------   --------------------------------
               |                                  |
        -------------                    ---------------------
        |           |                    |               |...|
        V           V                    V               V   -->
   ----------- -----------      -------------------- -----------
   | Drive   | | Drive   |      |      DACL        | | Drive   |
   | (Target)| | (Target)|      |(Target/Initiator)| | (Target)|
   ----------- -----------      -------------------- -----------
                                  |     |     |...|
                                  |     |     |   ------------->
                                  |     |     --------------
        ---------------------------     |              |   |
        |          |           -------------           |...|
        |          |           |           |           |   --->
        V          V           V           V           V
   ----------- ----------- ----------- ----------- -----------
   | Drive   | | Drive   | | Drive   | | Drive   | | Drive   |
   | (Target)| | (Target)| | (Target)| | (Target)| | (Target)|
   ----------- ----------- ----------- ----------- -----------

   In the following diagrams, only a single branch of this tree
   will be shown.

.pa

   3.1 Branch of Generic Layers

   This diagram shows that all layers pass the logical unit
   identifier and LBA directly through.

                                         Operating system
                      |
                      |   LUI(X) + LBA(X)
                      V
                --------------
                |            |           Software (driver)
                |            |
                --------------
                      |
                      |   LUI(X) + LBA(X)
                      V
                --------------
                |            |           HBA (Initiator)
                |            |
                --------------
                      |
                      |   LUI(X) + LBA(X)
                      V
                --------------
                |            |           Drive (Target)
                |            |
                --------------

.pa

   3.2 Software Array with a Branch of SCSI Disks

   This diagram shows software performing SCSI Disk Array
   functions.  These functions convert the input logical unit
   identifier (LUI(X)) and the input LBA (LBA(X)) to the output
   logical unit identifier (LUI(Y)) and output LBA (LBA(Y)).
   All other layers pass the logical unit identifier and LBA
   through.

                                         Operating system
                      |
                      |   LUI(X) + LBA(X)
                      V
                --------------
                |            |           Software (driver)
                |    DACL    |
                --------------
                  | | |
       ------------ | |   LUI(Y) + LBA(Y)
       |    --------- |
       V    V         V
                --------------
                |            |           HBA (Initiator)
                |            |
                --------------
                      |
                      |   LUI(Y) + LBA(Y)
                      V
                --------------
                |            |           Drive (Target)
                |            |
                --------------

.pa

   3.3 Branch with HBA SCSI Disk Array

   This diagram shows a HBA performing SCSI Disk Array
   functions.  These functions convert the input logical unit
   identifier (LUI(X)) and the input LBA (LBA(X)) to the output
   logical unit identifier (LUI(Y)) and output LBA (LBA(Y)).
   All other layers pass the logical unit identifier and LBA
   through.

                                         Operating system
                      |
                      |   LUI(X) + LBA(X)
                      V
                --------------
                |            |           Software (driver)
                |            |
                --------------
                      |
                      |   LUI(X) + LBA(X)
                      V
                --------------
                |            |           HBA (Initiator)
                |    DACL    |
                --------------
                  | | |
       ------------ | |   LUI(Y) + LBA(Y)
       |    --------- |
       V    V         V
                --------------
                |            |           Drive (Target)
                |            |
                --------------

.pa

   3.4 Branch with Bridge Controller SCSI Disk Array

   This diagram shows a bridge controller performing SCSI Disk
   Array functions.  These functions convert the input logical
   unit identifier (LUI(X)) and the input LBA (LBA(X)) to the
   output logical unit identifier (LUI(Y)) and output LBA
   (LBA(Y)).  All other layers pass the logical unit identifier
   and LBA through.

                                         Operating system
                      |
                      |   LUI(X) + LBA(X)
                      V
                --------------
                |            |           Software (driver)
                |            |
                --------------
                      |
                      |   LUI(X) + LBA(X)
                      V
                --------------
                |            |           HBA (Initiator)
                |            |
                --------------
                      |
                      |   LUI(X) + LBA(X)
                      V
                --------------
                |            |           Bridge Controller
                |    DACL    |           (Target/Initiator)
                --------------
                  | | |
       ------------ | |   LUI(Y) + LBA(Y)
       |    --------- |
       V    V         V
                --------------
                |            |           Drive (Target)
                |            |
                --------------

.pa

   3.5 Branch with Multiple Layers of SCSI Disk Arrays

   This diagram shows one example with two disk array controller
   layers.  This example shows a software layer performing SCSI
   disk array functions and a bridge controller performing SCSI
   disk array functions.

   The software functions convert the input logical unit
   identifier (LUI(X)) and the input LBA (LBA(X)) to the output
   logical unit identifier (LUI(Y)) and output LBA (LBA(Y)).
   The bridge controller functions then convert the input
   logical unit identifier (LUI(Y)) and the input LBA (LBA(Y))
   to the output logical unit identifier (LUI(Z)) and output LBA
   (LBA(Z)).  All other layers pass the logical unit identifier
   and LBA through.

                                         Operating system
                      |
                      |   LUI(X) + LBA(X)
                      V
                --------------
                |            |           Software (driver)
                |    DACL    |
                --------------
                  | | |
       ------------ | |   LUI(Y) + LBA(Y)
       |    --------- |
       V    V         V
                --------------
                |            |           HBA (Initiator)
                |            |
                --------------
                      |
                      |   LUI(Y) + LBA(Y)
                      V
                --------------
                |            |           Bridge Controller
                |    DACL    |           (Target/Initiator)
                --------------
                  | | |
       ------------ | |   LUI(Z) + LBA(Z)
       |    --------- |
       V    V         V
                --------------
                |            |           Drive (Target)
                |            |
                --------------
.pa

   4.0  Model for SCSI disk arrays

   The following is a model that defines SCSI disk arrays.

   4.1 SCSI Disk Array Addressing

   When addressing a SCSI Disk Array (SDA) one of the
   following methods is used:

   METHOD OF         ADDRESSABLE  ADDRESSABLE  PREFIX  SPACE
   ADDRESSING        USING        WITHIN               ADDRESSED
                     IDENTIFY     COMMANDS
                     MESSAGE
   -------------------------------------------------------------
   Volume Set        yes          yes          V-      user data
   Physical          yes          yes          P-      physical
   Redundancy Group  no           yes          R-      protected
   Spare             no           yes          S-      physical
   Component         no           yes          C-      None

   Redundancy groups and spares shall be accessed by addressing
   service requests to the P-LUI of the SDA that controls the
   redundancy groups and spares.

   <<Editors note: Parts of document 94-031rx will go here.  That
   document describes the addressing used when talking to a SDA -
   GOP>>

   4.1.1 Physical Address Mode

   <<Editors note: Parts of document 94-031rx will go here.  That
   document describes the addressing used when talking to a SDA -
   GOP>>

   All SCSI operations are allowed in physical address mode,
   however P-LUIs and SDAs are not required to support all SCSI
   commands.  SDAs are not required to honor pass-through
   requests from the Application Client.  Any command that is not
   supported or passed-through shall terminate in error.

 | If the C-LUI is contained within the SDA (e.g.  power
 | supplies, etc., that are under the control of the SDA itself)
   then the SDA executes the command.

   4.1.2 Redundancy Group Address Mode

   A redundancy group shall only be accessed by addressing the
   SDAs' P-LUI that controls or will control the redundancy
   group.

   4.1.3 Volume Set Address Mode

   The volume set address mode points to the DACL that executes
   the command using the algorithms defined by the configuration.

   The algorithms may instruct the DACL to translate the input
   V-LUI to output P-LUI(s) and the command into zero or more
   commands.

   Note:  The volume set may not be under the control of the
   addressed SDA.  It may be in a SDA lower in the tree
   structure.

   All SCSI operations are allowed in volume set address mode,
   however V-LUIs are not required to to support all SCSI
   commands.  Any command that is not supported shall terminate
   in error.

   <<Editors note: Parts of document 94-031rx will go here.  That
   document describes the addressing used when talking to a SDA -
   GOP>>

   4.1.4 Spare Address Mode

   A spare shall only be accessed by addressing the SDAs' P-LUI
   that controls or will control the spare.

   4.1.5 Component Address Mode

   A component shall only be accessed by addressing the SDAs'
 | base device address that controls or will control the
   component.

   5.0 SCSI Disk Array Requests

   5.1 Maintenance Services

   The SDA provides the following maintenance services:

   -Report P-LUI Service
   -Attach C-LUI Service
   -Report C-LUI Service
   -Report P-LUI/C-LUI Identifier Service
   -Set P-LUI/C-LUI Identifier Service
   -Report P-extents Service
   -Report Unassigned P-extents Service
 | -Report P-LUI Associations Service
 | -Report C-LUI Attachments Service
   -Exchange P-LUI/C-LUI Service
   -Remove P-LUI/C-LUI Service
   -Add P-LUI/C-LUI Service
   -Exchange P-extent Service
   -Set method of reporting informational exception conditions
    Service

   5.1.1 Report P-LUI Service

   The report P-LUI service provides parameters that
   define the information to report.  The parameters are:

   -Report all or Selected P-LUIs                    (S)
   -Physical Logical Unit Identifier (P-LUI)         (S)

   The report all or selected P-LUIs indicates if all P-LUIs
   shall be reported or if just the selected P-LUI shall be
   reported.

   The P-LUI defines the address of the P-LUI to report if the
   report single P-LUI is selected.  The P-LUI is not used if the
   report all P-LUIs is selected.

   The report P-LUI service outputs parameters that contain the
   following information for each P-LUI addressed by the SDA or,
   optionally, for a single P-LUI.

   Note:The P-LUI of the SDA is included as a parameter.

   -Physical Logical Unit Identifier         (P-LUI) (R)
   -Peripheral Device Type                   (1 per P-LUI)
   -Replaceable Unit                         (1 per P-LUI)
   -State of the P-LUI                       (1 per P-LUI)

   Note:Any parameters indicated by a (R) may be repeated.  Any
   parameters indicated by a (S) shall only occur once per
   service request.

   The P-LUI defines the address of the physical logical unit.

   The peripheral device type indicates the type of logical unit
   is associated with the P-LUI.  See the SCSI-3 Primary Commands
   Standard of a list of peripheral device types.

   The replaceable unit indicates if the P-LUI is a replaceable
   unit and if it is a Customer Replaceable Unit (CRU) or a
   Field Replaceable Unit (FRU).

   The state of the P-LUI indicates the current state of the
   P-LUI.  See x.x.x for a list of states.

   5.1.2 Attach C-LUI Service

   The attach C-LUI service provides for the logical attachment
 | of P-LUIs, R-LUIs, C-LUIs, and S-LUIs to components within the
   SDA. The behavior of attachments and their interactions with
   components are vendor specific.

 | Implementors Note:  One example of an attachment would be to
 | attach a R-LUI to a specific power supply.  This attachment
 | could mean that the power supply would only supply power to
 | that R-LUI.  Another example would be to attach a controller
 | card to another controller card.  This attachment could mean
 | that the work load is shared between the two controllers.
 | Those to controllers could also be designated as spares of one
 | another, using the sparing services, in which case if either
 | fails the other will take over the entire work load.

   The attach C-LUI service provide parameters that define the
   redundancy group(s), P-LUI(s), and/or C-LUI(s) which shall be
   logically attached to a C-LUI.  The C-LUI is defined by the
   following input parameters:

   -Component Logical Unit Identifier (C-LUI)        (S)
   -Attached R-LUI                                   (R)
   -Attached P-LUI                                   (R)
   -Attached C-LUI                                   (R)

   Note:Any parameters indicated by a (R) may be repeated.  Any
   parameters indicated by a (S) shall only occur once per
   service request.

   The parameter list that defines the C-LUI may contain zero or
   more R-LUIs, zero or more attached P-LUIs, and/or zero or more
   attached C-LUI.

 | The C-LUI defines the C-LUI to which the listed R-LUI(s),
 | P-LUI(s), and/or C-LUI(s) shall be attached.  There shall be
   only one C-LUI per attach C-LUI service request.

   The attached R-LUI parameter is the address of a redundancy
   group that shall be attached to this C-LUI.  There may be zero
   or more redundancy group(s) attached to a single C-LUI.

   The attached P-LUI defines a P-LUI that shall be attached to
   this C-LUI.  There may be zero or more P-LUIs attached to a
   single C-LUI.

   The attached C-LUI defines a C-LUI that shall be attached to
   this C-LUI.  There may be zero or more C-LUIs attached to a
   single C-LUI.

 | To deattach a P-LUI, R-LUI, C-LUI, or S-LUI from a component
 | issue the attach C-LUI service with the P-LUI(s), R-LUI(s),
 | C-LUI(s), and/or S-LUI(s) to be detached removed from the
 | parameter list.  It is not a error to send a parameter list
 | that contains only the C-LUI parameter.  If this occurs all
 | P-LUIs, R-LUIs, C-LUIs, and S-LUIs attached to the C-LUI shall
 | be deattached.


   5.1.3 Report C-LUI Service

   The report C-LUI service provides parameters that
   define the information to report.  The parameters are:

   -Report all or Selected C-LUIs                    (S)
   -Component Logical Unit Identifier (C-LUI)        (S)

   The report all or selected C-LUIs indicates if all C-LUIs
   shall be reported or if just the selected C-LUI shall be
   reported.

   The C-LUI defines the address of the C-LUI to report if the
   report single C-LUI is selected.  The C-LUI is not used if the
   report all C-LUIs is selected.

   The report C-LUI service outputs parameters that contain the
   following information for each C-LUI addressed by the SDA or,
   optionally, for a single C-LUI.

   -Component Logical Unit Identifier (C-LUI)       (R)
   -Component Type                                  (1 per C-LUI)
   -Replaceable Unit                                (1 per C-LUI)
   -State of the C-LUI                              (1 per C-LUI)
 |
   Note:Any parameters indicated by a (R) may be repeated.  Any
   parameters indicated by a (S) shall only occur once per
   service request.

   The C-LUI defines the address of the component.

   The component type indicates the type of component associated
   with the C-LUI.  See x.x.x for a list of component types.

   The replaceable unit indicates if the C-LUI is a replaceable
   unit and if it is a Customer Replaceable Unit (CRU) or a
   Field Replaceable Unit (FRU).

   The state of the C-LUI indicates the current state of the
   C-LUI.  See x.x.x for a list of states.
 |
   5.1.4 Report P-LUI/C-LUI Identifier Service

   The report P-LUI/C-LUI identifier service provides parameters
   that define the information to report.  The parameters are:

   -Report P-LUI or C-LUI Identifier                 (S)

   The report P-LUI or C-LUI identifier parameter indicates if
   the logical unit identifier is a physical logical unit
   identifier or a component logical unit identifier.

   The report P-LUI or C-LUI identifier service output parameters
   that contains the following information for the selected P-LUI
   or C-LUI:

   -Logical Unit Identifier (P-LUI or C-LUI) (S)
   -Identifier                               (S)

   Note:Any parameters indicated by a (R) may be repeated.  Any
   parameters indicated by a (S) shall only occur once per
   service request.

   The P-LUI/C-LUI defines the address of the logical unit.

   The identifier is a vendor specific ASCII indication as to the
   position of the P-LUI or C-LUI within the SDA.

   5.1.5 Set P-LUI/C-LUI Identifier Service

   The set P-LUI/C-LUI identifier service receives input
   parameters that contain the following information for the
   selected P-LUI or C-LUI that the Application Client wants to
   set the identifier:

   -Set P-LUI or C-LUI Identifier                    (S)
   -Logical Unit Identifier          (P-LUI or C-LUI)(S)
   -Identifier                                       (S)

   Note:Any parameters indicated by a (R) may be repeated.  Any
   parameters indicated by a (S) shall only occur once per service
   request.

   The set P-LUI or C-LUI identifier parameter indicates if the
   logical unit identifier is a physical logical unit identifier
   or a component logical unit identifier.

   The logical unit identifier indicates the address of the
   physical logical unit or the component logical unit.

   The identifier is a vendor specific ASCII field that indicates
   where the P-LUI or C-LUI is located.

   5.1.6  Report P-extents Service

   The report P-extents service provides parameters that
   define the information to report.  The parameters are:

   -Report all or Selected P-extents                 (S)
   -Physical Logical Unit Identifier (P-LUI)         (S)

   The report all or selected P-extents indicates if all
   P-extents shall be reported or if just the P-extents on the
   selected P-LUI shall be reported.

   The P-LUI defines the address of the P-LUI from which the
   P-extents shall be reported if the report selected P-extents
   option is selected.  The P-LUI is not used if the report all
   P-extents option is selected.

   The report P-extents service outputs parameters that contain
   the following information for each device addressable by the
   SDA that may be used for user data or check data:

   -P-extent                                 (R)
   -Peripheral Device Type                   (1 per P-extent)
   -State of the P-extent                    (1 per P-extent)

   Note:Any parameters indicated by a (R) may be repeated.  Any
   parameters indicated by a (S) shall only occur once per service
   request.

   The P-extent defines the location and range of the P-LBAs.

   The peripheral device type indicates the type of device
   associated with the P-extent.  See the SCSI-3 Primary Commands
   Standard of a list of peripheral device types.

   The state of the P-extent indicates the current state of the
   the P-extent.  See x.x.x for a list of states.

   5.1.7  Report Unassigned P-extents Service

   The report unassigned P-extents service outputs parameters
   that contain the following information for each P-LUI
   addressable by the SDA that may be configured but has not yet
   been configured into a set, group, or spare:

   -P-extent                                 (R)
   -Peripheral Device Type                   (1 per P-extent)
   -State of the P-extent                    (1 per P-extent)

   Note:Any parameters indicated by a (R) may be repeated.  Any
   parameters indicated by a (S) shall only occur once per
   service request.

   The P-extent defines the location and range of the unassigned
   P-LBAs.

   The peripheral device type indicates the type of device
   associated with the P-extent.  See the SCSI-3 Primary Commands
   Standard of a list of peripheral device types.

   The state of the P-extent indicates the current state of the
   P-extent.  See x.x.x for a list of states.

 | 5.1.8  Report P-LUI Associations Service

 | The report P-LUI associations service outputs parameters that
 | contain the following information for each P-LUI addressable
 | by the SDA.

 | The report P-LUI associations service provides parameters that
 | define the information to report.  The parameters are:

 | -Report all or Selected P-LUIs                    (S)
 | -Physical Logical Unit Identifier (P-LUI)         (S)

 | The report all or selected P-LUIs indicates if all P-LUIs
 | shall be reported or if just the selected P-LUI shall be
 | reported.

 | The P-LUI defines the address of the P-LUI to report if the
 | report single P-LUI is selected.  The P-LUI is not used if the
 | report all P-LUIs is selected.

 | The report P-LUI associations service outputs parameters that
 | contain the following information for each P-LUI addressed by
 | the SDA or, optionally, for a single P-LUI.

 | -Physical Logical Unit Identifier (P-LUI)        (R)
 | -Associated V-LUI                                (x per P-LUI)
 | -Associated R-LUI                                (x per P-LUI)
 | -Associated S-LUI                                (x per P-LUI)

 | Note:Any parameters indicated by a (R) may be repeated.  Any
 | parameters indicated by a (S) shall only occur once per
 | service request.

 | The P-LUI defines the address of the physical device.

 | The associated V-LUI defines the address of any volume sets
 | that the P-LUI has been configured into using the
 | create/modify volume set service.  There may be zero or more
 | V-LUI(s) configured on each P-LUI.

 | The associated R-LUI defines the address of any redundancy
 | groups that the P-LUI has been configured into using the
 | create/modify redundancy group service.  There may be zero or
 | more R-LUI(s) configured on each P-LUI.

 | The associated S-LUI defines the address of any spares that
 | the P-LUI has been configured into using the create/modify
 | P-extent spare service or the create/modify P-LUI/C-LUI spare
 | service.  There may be zero or more S-LUI(s) configured on
 | each P-LUI.

 | Note:  The report P-LUI associations service may contain more
 | V-LUI(s), R-LUI(s), and/or S-LUI(s) than the application
 | client has configured.  The SDA may have configured V-LUI(s),
 | R-LUI(s), and/or S-LUI(s) with P-LUIs based on internal
 | requirements.


 | 5.1.9  Report C-LUI Attachments Service

 | The report C-LUI attachments service outputs parameters that
 | contain the following information for each C-LUI addressable
 | by the SDA.

 | The report C-LUI attachments service provides parameters that
 | define the information to report.  The parameters are:

 | -Report all or Selected C-LUIs                    (S)
 | -Component Logical Unit Identifier (C-LUI)        (S)

 | The report all or selected C-LUIs indicates if all C-LUIs
 | shall be reported or if just the selected C-LUI shall be
 | reported.

 | The C-LUI defines the address of the C-LUI to report if the
 | report single C-LUI is selected.  The C-LUI is not used if the
 | report all C-LUIs is selected.

 | The report C-LUI associations service outputs parameters that
 | contain the following information for each C-LUI addressed by
 | the SDA or, optionally, for a single C-LUI.

 | -Component Logical Unit Identifier (C-LUI)       (R)
 | -Attached R-LUI                                  (x per C-LUI)
 | -Attached P-LUI                                  (x per C-LUI)
 | -Attached C-LUI                                  (x per C-LUI)

 | Note:Any parameters indicated by a (R) may be repeated.  Any
 | parameters indicated by a (S) shall only occur once per
 | service request.

 | The C-LUI defines the address of the component.

 | The attached R-LUI defines the address of any Redundancy group
 | that is attached to the C-LUI.  There may be zero or more
 | R-LUIs attached to each C-LUI.

 | The attached P-LUI defines any P-LUI that is attached to the
 | C-LUI.  There may be zero or more P-LUIs attached to each
 | C-LUI.

 | The attached C-LUI defines any C-LUI that is attached to the
 | C-LUI.  There may be zero or more C-LUIs attached to each
 | C-LUI.

 | Note:  The report C-LUI attachment service may contain more
 | R-LUI(s), P-LUI(s), and/or C-LUI(s) than the application
 | client has attached.  The SDA may have attached R-LUI(s),
 | P-LUI(s), and/or C-LUI(s) to components based on internal
 | requirements.


   5.1.10 Exchange P-LUI/C-LUI Service

   The exchange P-LUI/C-LUI service provides for the replacement
 | of an old device or component with new device or component.
 | When an old device or component is replaced the new device or
 | component takes on all the logical characteristics of the old
 | device or component (e.g.  redundancy group, volume set
 | mappings and/or attachments).  An exact copy of any protected
 | space contents and/or check data on the old device shall be
   made on the new device.

   The exchange P-LUI/C-LUI service receives input parameters
   that contain the following information:

   -Select P-LUI or C-LUI for Exchange                   (S)
   -Old P-LUI or C-LUI                                   (S)
   -New P-LUI or C-LUI                                   (S)

   Note:Any parameters indicated by a (R) may be repeated.  Any
   parameters indicated by a (S) shall only occur once per
   service request.

   The select P-LUI or C-LUI for exchange indicates if a physical
   logical unit or a component logical unit is to be exchanged.

   Old P-LUI or C-LUI is the address of the device or component
   to be replaced.  The old P-LUI or C-LUI is removed from any
   configurations it is currently associated with.

   New P-LUI or C-LUI is the address of the device or component
   that will replace the old P-LUI or C-LUI.

   An exchange P-LUI service request shall be rejected if
   different peripheral device types are selected.

   5.1.11 Remove P-LUI/C-LUI Service

   The remove P-LUI/C-LUI service provides parameters that
   indicate the P-LUI or C-LUI to remove.  The addressed P-LUI or
 | C-LUI is removed from any configurations and/or attachments it
   is currently associated with.  The P-LUI or C-LUI to remove is
   defined by the following output parameter:

   -Select P-LUI or C-LUI to Remove                  (S)
   -P-LUI or C-LUI                                   (S)

   Note:Any parameters indicated by a (R) may be repeated.  Any
   parameters indicated by a (S) shall only occur once per
   service request.

   The select P-LUI or C-LUI to remove indicates if a physical
   logical unit or a component logical unit is to be removed.

   The P-LUI or C-LUI defines the address of the device to be
   removed.

 | The remove P-LUI/C-LUI service request shall be rejected if
 | any R-LUI, P-LUI, C-LUI, or S-LUI is attached to the C-LUI to
 | be removed.

   The remove P-LUI/C-LUI service request shall be rejected if
   any volume sets are associated with the P-LUI to be removed or
   if a redundancy group has check data contained on any part of
   the P-LUI to be removed.

   5.1.12  Add P-LUI/C-LUI Service

   The add P-LUI/C-LUI service informs the SDA that a device or
   component has been added.

   The add P-LUI/C-LUI service provide parameters that define a
   P-LUI/C-LUI to be added and its type.  The P-LUI/C-LUI
   is defined by the following input parameters:

   -Select P-LUI or C-LUI for Add                    (S)
   -P-LUI or C-LUI                                   (S)

   Note:Any parameters indicated by a (R) may be repeated.  Any
   parameters indicated by a (S) shall only occur once per
   service request.

   The select P-LUI or C-LUI to add indicates if a physical
   logical unit or a component logical unit is to be added.

   The P-LUI or C-LUI parameter indicates what type of device or
   component is being added to the SDA.  If a P-LUI is added then
   the peripheral device type indicates the type of logical unit
   is associated with the P-LUI.  See the SCSI-3 Primary Commands
   Standard of a list of peripheral device types.  If a C-LUI is
   added then the component type indicates the type of component
   associated with the C-LUI.  See x.x.x for a list of component
   types.


   5.1.13 Exchange P-extent Service

   The exchange P-extent service provides for the replacement of
   an old P-extents with new P-extents.  When an old P-extent is
   replaced the new P-extent takes on all the characteristics of the
   old P-extent (e.g. redundancy group and volume set mappings).
   An exact copy of any protected space contents and/or check
   data on the old P-extent shall be made on the new P-extent.

   The exchange P-extent service receives input parameters that
   contain the following information:

   -Old P-extent                                         (S)
   -New P-extent                                         (S)

   Note:Any parameters indicated by a (R) may be repeated.  Any
   parameters indicated by a (S) shall only occur once per
   service request.

   Old P-extent is the address of the P-extent to be replaced.
   The old P-extent is removed from any configurations it is
   currently associated with.

   New P-extent is the address of the P-extent that will replace
   the old P-extent.

   An exchange P-extents service request shall be rejected if an
   exchange is attempted with P-extents of different sizes
   or peripheral device types.

   5.1.14 Set Method of Reporting Informational Exception
   Conditions Service

   The set method of reporting informational exception conditions
   service instructs the SDA how to report informational
   exception conditions.  Informational exception conditions are
   exception conditions that provide the application client
   information on condition of the SDA. (e.g. the SDA is
   predicting a failure, something is broken but the SDA is still
   operational, etc.)

   The set method of reporting informational exception conditions
   service receives input parameters that contain the following
   information:

   -Method of Reporting Informational Exceptions         (S)
   -Log Informational Exceptions                         (S)

   Note:Any parameters indicated by a (R) may be repeated.  Any
   parameters indicated by a (S) shall only occur once per
   service request.

   The method of reporting informational exceptions indicates the
   SDA shall report informational exceptions by one of the
   following methods:

   -Periodic Check Condition Method
   -Generate Unit Attention Method
   -Asynchronous Event Reporting Method
   -No indication of exception condition Method

   The periodic check condition method instructs the SDA to
   report informational exception conditions by periodically
   returning a sense of CHECK CONDITION on a command issued to
   the SDA.  In response to a REQUEST SENSE command the SDA shall
   return sense data.  The sense key shall be set to RECOVERED
   ERROR and the additional sense code shall be indicate the the
   cause of the informational exception condition.

   Note:The command that has the CHECK CONDITION shall complete
   without error before any informational exception condition may
   be reported.

   The generate unit attention method instructs the SDA to report
   informational exception conditions by issuing a unit
   attention condition on a command issued to the SDA.  In
   response to a REQUEST SENSE command the SDA shall return sense
   data.  The sense key shall be set to UNIT ATTENTION and the
   additional sense code shall be indicate the the cause of the
   informational exception condition.

   Note:The command that has the CHECK CONDITION shall not be
   executed before the informational exception condition is
   reported.

   The asynchronous event reporting method instructs the SDA to
   report informational exception conditions by using the rules
   for asynchronous event reporting as described in the SCSI-3
   Architecture Model Standard and the relevant Protocol Standard.

   The no indication of exception condition method instructs the
   SDA to not report information exception conditions.  To find
   out about information exception conditions the Application
   Client shall poll the SDA.

   The log informational exceptions indicates whether or not
   informational exceptions shall be recorded in a log.

   5.2 SCSI Disk Array Services

   When a create/modify service is requested and the volume set,
   redundancy group, or spare being addressed was created in a
   previous create/modify service request the SDA shall add the
   requested extents to the addressed volume set, redundancy
   group, or spare.  Extents shall only be removed by deleting
   the entire volume set, redundancy group, or spare.

   The SDA performs the following services to a redundancy group:

   -Create/Modify Redundancy Group Service
   -Report Redundancy Groups Service
   -Report Unassigned Redundancy Group Space Service
   -Delete Redundancy Group Service
   -Recalculate Check Data Service
   -Verify Check Data Service
   -Control Generation of Check Data Service
   -Rebuild Service

   The SDA performs the following services to a volume set:

   -Create/Modify Volume Set Service
   -Report Volume Sets Service
   -Delete Volume Set Service
   -Recalculate Check Data Service
   -Verify Check Data Service
   -Control Generation of Check Data Service
   -Control Write Operations Service

   The SDA performs the following services to a spare:

   -Create/Modify P-extent Spare Service
   -Report P-extent Spare Service
   -Create/Modify P-LUI/C-LUI Spare Service
   -Report P-LUI/C-LUI Spare Service
   -Delete Spare Service

   5.2.1 Redundancy Group Services

   The redundancy group services provide for the creation,
   modification, reporting, deletion, and control of redundancy
   groups.

   A redundancy group defines the check data and the protected
   space covered by the check data.

   After successful completion of a create redundancy group
   service the application client shall request a report
   unassigned redundancy group service to determine the
   PS-extents that may be used for the creation of volume sets.
.pa
   The following figure shows the relationship between the check
   data and protected space before any volume sets have been
   defined.

                        Redundancy Group
               -------------------------------------
              /                                     \
             /                                       \
            /      Unassigned Protected Space         \
           /                                           \
          /                                             \
         /                                               \
        /                                                 \
        \                                                 /
         \                                               /
          \                                             /
           \                                           /
            \-----------------------------------------/
             \         Check    Data                 /
              \                                     /
               -------------------------------------

   The following figure shows the relationship between the check
   data and protected space after two volume sets have been
   defined within the redundancy group.

                        Redundancy Group
               -------------------------------------
              /11111111111111122222222222222222|    \
             /1              12               2|     \
            /1    Assigned Protected Space    2|      \
           /1                12               2|       \
          /1                 12               2|        \
         /1                  12               2|         \
        /1    User Data (1)  12 User Data (2) 2|Unassigned\
        \1                   12               2|Protected /
         \1                  12               2|  Space  /
          \1                 12               2|        /
           \11111111111111111122222222222222222|       /
            \-----------------------------------------/
             \         Check    Data                 /
              \                                     /
               -------------------------------------
                Volume Set(1)  Volume Set(2)

   5.2.1.1 Create/Modify Redundancy Group Service

   The create/modify redundancy group service provides for the
   creation of a new redundancy group and the modification of an
   existing redundancy group.

   The create/modify redundancy group service provides parameters
   that define a redundancy group and the check data mapping
   within that redundancy group.  The redundancy group is defined
   by the following input parameters:

   -Redundancy Group Logical Unit Identifier (R-LUI)      (S)
   -Granularity of Units (bit, byte, logical block, etc.) (S)
   -Redundancy Type Identifier                            (S)
   -P-Extent                                              (R)
   -Recalculate check data                   (1 per P-extent)
   -Preserve protected space                 (1 per P-extent)
   -Set protected space to known value       (1 per P-extent)
   -Start check data interleave P-LBA        (1 per P-extent)
   -Number of units of check data            (1 per P-extent)
   -Number of units of user data             (1 per P-extent)

   Note:Any parameters indicated by a (R) may be repeated.  Any
   parameters indicated by a (S) shall only occur once per service
   request.

   The parameter list that defines the redundancy group may
   contain one or more P-extents.  For each P-extent the
   parameter list shall contain a recalculate check data,
   preserve protected space, set protected space to known value,
   start check data interleave P-LBA, number of units of check
   data, and number of units of user data.

   The R-LUI defines the address to be assigned to the
   redundancy group being created.

   The redundancy type identifier parameter defines the check
   data mapping within the redundancy group as one of the
   following:

   -No Redundancy
   -Copy Redundancy
   -XOR Redundancy
   -P+Q Redundancy
   -Vendor Specific Redundancy

   In a redundancy group that has a redundancy type identifier
   of no redundancy user data is not protected.  If this type
   identifier is requested then the following parameters shall
   all be set to zero:

   -Granularity of Units (bit, byte, logical block, etc.)
   -Start Check Data Interleave P-LBA
   -Number of units of check data
   -Number of units of user data

   In a redundancy group that has a redundancy type identifier
   of copy redundancy all user data is replicated on all the
   P-extents listed in the parameter list.  If this type
   identifier is requested then the following parameters shall be
   set as indicated:

   -Granularity of Units = logical block
   -Start Check Data Interleave P-LBA = 0
   -Number of units of check data = 0
   -Number of units of user data = set to desired value

   Note:For copy redundancy the number of units of user data
   parameter shall be equal for all the P-extents within a
   single create/modify redundancy group service request.

   In a redundancy group that has a redundancy type identifier
   of XOR redundancy or P+Q redundancy the user data is protected
   by use of check data located within the check data areas.  The
   mapping of the check data is defined by the check data
   interleave parameters.  If this type identifier is requested
   then the following parameters shall be set as indicated:

   -Granularity of Units = set to desired value
   -Start Interleave P-LBA = set to desired value
   -Number of units of check data = set to desired value
   -Number of units of user data = set to desired value

   Note:For XOR redundancy and P+Q redundancy the number of units
   of user data parameter shall be equal for all the P-extents
   within a single create/modify redundancy group service
   request.

   In a redundancy group that has a redundancy type identifier
   of vendor specific redundancy the user data is protected
   in a vendor specific manor.

   The granularity of units indicates if bits, bytes, words,
   or logical blocks shall be used as the units when mapping the
   check data.

   The P-extent defines the position and range of the redundancy
   group P-LBAs within a P-LUI.  The extent includes check data
   space if there is any.  There may be one or more P-extents per
   create/modify redundancy group request.

   The recalculate check data indicates whether or not the check
   data for the P-extent being created or modified shall be
   recalculated before a service completion is confirmed.

   The preserve protected space indicates if the information
   contained within the protected space of the P-extent shall be
   preserved during the creation or modification of a redundancy
   group.

   The set protected space indicates the protected space of the
   P-extent shall be set to a specified value and the value to
   set the protected space to.

   Start check data interleave P-LBA is the beginning LBA of the
   check data interleave ratio on the P-LUI.

   Note:It is not required that the start check data interleave
   P-LBA be equal to the start P-LBA.

   Number of units of check data is the number of consecutive
   units to be reserved for check data.

   Number of units of user data is the number of consecutive
   units to be reserved for user data.

   The check data mapping within the P-extent shall repeat until
   the end of the range defined by the extent is reached.  The
   check data interleave shall begin with check data.

   All space between the start P-LBA and the start check data
   interleave P-LBA shall be assigned as user data.
.pa

   5.2.1.1.1 Examples of different redundancy types

   An example of how XOR redundancy or P+Q redundancy check data
   would be interleaved with user data in follows:


   Number or units of check data = 2
   Number or units of user data = 4

         Start P-LBA                               Last Unit
         Start Check Data Interleave P-LBA                 |
         |                                                 |
         V                 1st P-extent                    V
   ----------------------------------------------------------
   Units|0 1 2 3 4 5 6 7 8 9 10 11 ... x-5 x-4 x-3 x-2 x-1 x|
   ----------------------------------------------------------
        |CD |   UD  |CD |    UD   |...|   CD  |     UD      |
   ----------------------------------------------------------
         Start P-LBA                               Last Unit
         |   Start Check Data Interleave P-LBA             |
         |   |                                             |
         V   V             2nd P-extent                    V
   ----------------------------------------------------------
   Units|0 1 2 3 4 5 6 7 8 9 10 11 12 13  ...  x-3 x-2 x-1 x|
   ----------------------------------------------------------
        |UD |CD |  UD   |CD |    UD     | ... |  CD   | UD  |
   ----------------------------------------------------------
         Start P-LBA                               Last Unit
         |       Start Check Data Interleave P-LBA         |
         |       |                                         |
         V       V         3rd P-extent                    V
   ----------------------------------------------------------
   Units|0 1 2 3 4 5 6 7 8 9 10 11 ... x-5 x-4 x-3 x-2 x-1 x|
   ----------------------------------------------------------
        |  UD   |CD |  UD   | CD  |...|      UD       | CD  |
   ----------------------------------------------------------

   CD = Check Data
   UD = User Data

   5.2.1.2 Report Redundancy Groups Service

   The report redundancy group service reports information on
   the configured redundancy groups under control of the
   addressed SDA.

   Note:  The information returned by this service may be used to
   determine the boundaries of all the current redundancy groups
   to allow more redundancy groups be configured or to allow a
   redundancy group may be expanded.

   The report redundancy groups service provides parameters that
   define the information to report.  The parameters are:

   -Report all or Selected Redundancy Groups         (S)
   -Redundancy Group Logical Unit Identifier (R-LUI) (S)

   The report all or selected redundancy groups indicates if all
   redundancy groups shall be reported or if just the selected
   redundancy group shall be reported.

   The R-LUI defines the address of the redundancy group to
   report if the report single redundancy group is selected.
   The R-LUI is not used if the report all redundancy groups is
   selected.

   The report redundancy groups service outputs parameters that
   contain the following information for each redundancy group
   within the SDA or, optionally, for a single redundancy group.

   -Redundancy Group Logical Unit Identifier (R-LUI) (R or S)
   -Redundancy Type Identifier                  (1 per R-LUI)
   -Granularity of Units (bit, byte, etc.)      (1 per R-LUI)
   -State of the Redundancy Group               (1 per R-LUI)
   -P-Extent                                    (x per R-LUI)
   -Start Check Data Interleave P-LBA        (1 per P-extent)
   -Number of units of check data            (1 per P-extent)
   -Number of units of user data             (1 per P-extent)

   Note:Any parameters indicated by a (R) may be repeated.  Any
   parameters indicated by a (S) shall only occur once per service
   request.

   The R-LUI defines the address of the redundancy group.

   The redundancy type identifier parameter defines the check
   data mapping within the redundancy group.  See 5.2.1.1 for a
   description of the redundancy type identifiers.

   The granularity of units indicates if bits, bytes, words,
   or logical blocks were used as the units when mapping the
   check data.

   The state of the redundancy group indicates the current state
   of the redundancy group.  See x.x.x for a list of states.

   The P-extent defines the position and range of the redundancy
   group P-LBAs within a P-LUI.  The extent includes check data
   space if there is any.  There may be one or more P-extents per
   redundancy group.

   Start check data interleave P-LBA is the beginning LBA of the
   check data interleave ratio on the P-LUI.

   Note:It is not required that the start check data interleave
   P-LBA be equal to the start P-LBA.

   Number of units of check data is the number of consecutive
   units reserved for check data.

   Number of units of user data is the number of consecutive
   units reserved for user data.

   5.2.1.3 Report Unassigned Redundancy Group Space Service

   The report unassigned redundancy group service reports
   information on the configured redundancy groups under control
   of the addressed SDA that have protected space not yet
   assigned to any volume sets.

   Note:  The information returned by this service is used to
   determine the boundaries of any unassigned protected space.
   The unassigned protected space may be used to create new
   volume sets or to expand existing volume sets.

   The report unassigned redundancy groups service provides
   parameters that define the information to report.  The
   parameters are:

   -Report all or selected Unassigned Redundancy Groups (S)
   -Redundancy Group Logical Unit Identifier (R-LUI)    (S)

   The report all or selected unassigned redundancy groups
   indicates if all unassigned redundancy groups shall be
   reported on or if just the selected unassigned redundancy
   group shall be reported on.

   The R-LUI defines the address of the unassigned redundancy
   group to report on if the report single unassigned redundancy
   group is selected.  The R-LUI is not used if the report all
   unassigned redundancy groups is selected.

   The report unassigned redundancy group space service outputs
   parameters that contain the following information for portions
   of all the configured redundancy groups within the SDA that
   have not been assigned to a volume set or, optionally, for
   portions of a single redundancy group that have not been
   assigned to a volume set:

   -Redundancy Group Logical Unit Identifier (R-LUI) (R or S)
   -Redundancy Type Identifier                  (1 per R-LUI)
   -State of the Redundancy Group               (1 per R-LUI)
   -PS-extent                                   (x per R-LUI)

   Note:Any parameters indicated by a (R) may be repeated.  Any
   parameters indicated by a (S) shall only occur once per service
   request.

   NOTE:The information provided by this service provides
   information to the application client so it can place
   volume set groups on specific devices.

   The R-LUI defines the address of the redundancy group.

   The redundancy type identifier parameter defines the check
   data mapping within the redundancy group.  See 5.2.1.1 for a
   description of the redundancy type identifiers.

   The state of the redundancy group indicates the current state
   of the redundancy group.  See x.x.x for a list of states.

   The PS-extent defines the location and range of unassigned
   protected space within the R-LUI.  The extent excludes check
   data space.  There may be one or more PS-extents per
   redundancy group.

   5.2.1.4  Delete Redundancy Group Service

   The delete redundancy group service provides parameters that
   indicate the redundancy group to delete.  The redundancy group
   to delete is defined by the following output parameter:

   -Redundancy Group Logical Unit Identifier (R-LUI) (S)

   Note:Any parameters indicated by a (R) may be repeated.  Any
   parameters indicated by a (S) shall only occur once per service
   request.

   The R-LUI defines the address of the redundancy group to be
   deleted.

   The delete redundancy group service request shall be rejected
   if any volume sets are associated with the R-LUI to be
   deleted.

   5.2.1.5 Recalculate Check Data Service

   The recalculate check data service requests the recalculation
   of check data within a redundancy group.

   The recalculate check data service receives input parameters
   that contain the following information:

   -Redundancy Group Logical Unit Identifier (R-LUI) (S)

   Note:Any parameters indicated by a (R) may be repeated.  Any
   parameters indicated by a (S) shall only occur once per
   service request.

   The R-LUI defines the address of the redundancy group to be
   recalculated.

   5.2.1.6 Verify Check Data Service

   The verify check data service requests a verification that
   check data is consistent with the protected space within a
   redundancy group.

   The verify check data service receives input parameters
   that contain the following information:

   -Redundancy Group Logical Unit Identifier (R-LUI) (S)
   -Enable/Disable Continuous Verification           (S)

   Note:Any parameters indicated by a (R) may be repeated.  Any
   parameters indicated by a (S) shall only occur once per
   service request.

   The R-LUI defines the address of the redundancy group to be
   verified.

   The enable/disable continuous verification indicates if the
   check data within the redundancy group shall be continuously
   verified or only verified one time.

   Note:If continuous verification is requested and the SDA
   supports that option than the service shall be confirmed with
   no exception conditions.  The continuous verification shall
   execute as an SDA background operation in a user specific
   manner.  Continuous may be defined as only verifying check
   data associated with the LBA range of any write commands that
   occur to volume sets that overlay a redundancy group that has
   continuous verification enabled.

   5.2.1.7 Control Generation of Check Data Service

   The control generation of check data service requests a that
   the generation of check data within redundancy group be
   enabled or disabled.

   The control generation of check data service receives input
   parameters that contain the following information:

   -Redundancy Group Logical Unit Identifier (R-LUI) (S)
   -Enable/Disable Check Data                        (S)

   Note:Any parameters indicated by a (R) may be repeated.  Any
   parameters indicated by a (S) shall only occur once per
   service request.

   The R-LUI defines the address of the redundancy group that
   shall have the generation of check data enabled or disabled.

   The enable/disable check data indicates if the generation of
   check data shall be enabled or disabled.

   5.2.1.8 Rebuild P-LUI Service

   The rebuild P-LUI service requests the rebuild of a portion
   of a redundancy group.

   The rebuild P-LUI service receives input parameters that
   contain the following information:

   -P-LUI                                            (S)
   -Redundancy Group Logical Unit Identifier (R-LUI) (R)

   Note:Any parameters indicated by a (R) may be repeated.  Any
   parameters indicated by a (S) shall only occur once per
   service request.

   The P-LUI defines the device to be rebuilt.

   The R-LUI defines the address of the redundancy group(s) that
   contain the P-LUI to be rebuilt.

   Note:If the P-LUI contains multiple redundancy groups only the
   range of P-LBAs contained within the R-LUIs from the parameter
   list for this service shall be rebuilt.

   5.2.1.9 Rebuild P-extent Service

   The rebuild P-extent service requests the rebuild of a portion
   of a redundancy group.

   The rebuild P-extent service receives input parameters that
   contain the following information:

   -P-extent                                         (S)
   -Redundancy Group Logical Unit Identifier (R-LUI) (R)

   Note:Any parameters indicated by a (R) may be repeated.  Any
   parameters indicated by a (S) shall only occur once per
   service request.

   The P-extent defines the position and range of the P-LBAs to
   be rebuilt.

   The R-LUI defines the address of the redundancy group(s) that
   contains the P-extent that is to be rebuilt.

   Note:If the P-extent contains multiple redundancy groups only
   the range of P-LBAs contained within the R-LUIs from the
   parameter list for this service shall be rebuilt.

   5.2.2 Volume Set Services

   The volume set services provide for the creation,
   modification, reporting, deletion, and control of volume sets.

   A volume set is a set constructed of PS-extents from one or
   more redundancy groups.  It provides a contiguous range of
   V-LBAs for reading and writing user data.

.pa
   The following figure shows a relationship between the check
   data and protected space before any volume sets have been
   defined.

           Redundancy Group(a)   Redundancy Group(b)
           aaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbb
          a                  ab                          b
         a    Unassigned     ab        Unassigned         b
        a Protected Space(a) ab    Protected Space(b)      b
       a                     ab                             b
      a                      ab                              b
     a                       ab                               b
    a                        ab                                b
    a                        ab                                b
     a                       ab                               b
      a                      ab                              b
       a                     ab                             b
        a -------------------ab----------------------------b
         a   Check Data (a)  ab    Check Data (b)         b
          a                  ab                          b
           aaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbb



   The following figure shows the relationship between check
   data, user data and protected space after a single volume set
   has been defined across the two redundancy groups.

                          Volume Set (1)
           aaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbb
          a11111111111111111111111111111111111111111     b
         a1                  ab                    1      b
        a1Protected Space(a) ab    Protected Space(b)      b
       a1                    ab                    1        b
      a1                     ab                    1         b
     a1                      ab                    1          b
    a1                       ab                    1Unassigned b
    a1                       ab                    1Proteced   b
     a1                      ab                    1Space     b
      a1                     ab                    1         b
       a11111111111111111111111111111111111111111111        b
        a -------------------ab----------------------------b
         a   Check Data (a)  ab    Check Data (b)         b
          a                  ab                          b
           aaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbb
           Redundancy Group(a)   Redundancy Group(b)

      Note: Volume set (1) is encompassed by '1's and is ready to
            receive user data.

   5.2.2.1  Create/Modify Volume Set Service

   The create/modify volume set service provides for the creation
   of new volume sets and the modification of existing volume
   sets.

   The create/modify volume set service provides parameters that
   define the boundaries of a volume set and the user data
   mapping within that volume set.  The volume set is defined by
   the following input parameters:

   -Volume Set Logical Unit Identifier (V-LUI)            (S)
   -PS-extent Stripe Length                               (S)
   -PS-extent Interleave Depth                            (S)
   -Granularity of Units (bit, byte, logical block, etc.) (S)
   -PS-extent                                             (R)
   -User Data Stripe Depth                  (1 per PS-extent)
   -Increment/Decrement PS-LBA Count        (1 per PS-extent)

   Note:Any parameters indicated by a (R) may be repeated.  Any
   parameters indicated by a (S) shall only occur once per service
   request.

   The parameter list that defines the volume set may contain
   one or more PS-extents.  For each PS-extent the parameter
   list shall contain the user data stripe depth and the
   increment/decrement R-LBA count

   The V-LUI defines the address to be assigned to the volume set
   being created.

   PS-extent stripe length is used to determine the number of
   contiguous PS-extents to count before looping back to the first
   PS-extent of the current stripe.  This looping continues until
   all the units of a PS-extent are used up or the PS-extent
   interleave depth is reached.

   If the volume set is being created and the PS-extent stripe
   length is not an even multiple of the number of PS-extents the
   service request shall be terminated in error.  If the volume
   set is being modified there is no requirement for the PS-extent
   stripe length to be an even multiple of the number of
   PS-extents.

   PS-extent interleave depth is used to determine the point at
   which the mapping shall continue onto the next consecutive
   PS-extent beyond the current stripe.  When the last PS-extent is
   reached, the mapping continues at the first PS-extent.  This
   mapping continues until all the units of the PS-extents are
   mapped.

   Note:The PS-extent interleave depth is only used if the
   PS-extent stripe length is not equal to the number of
   PS-extents.

   The following figure shows the most general implementation of
   the three parameters used to map the user data.


.pa
                             Volume Set

                             PS-extent 1
   ---       --------------------------------------------------
    A   Units|n  n+1  n+2  n+3  n+4  n+5  n+6  n+7  n+8... n+x|
    |        --------------------------------------------------
    P        |<--Data Stripe-->|<---Data Stripe--->| ...
    S
    -                        PS-extent 2
    e        --------------------------------------------------
    x   Units|n  n+1  n+2  n+3  n+4  n+5  n+6  n+7  n+8... n+x|
    t        --------------------------------------------------
    e        |<--Data Stripe-->|<---Data Stripe--->| ...
    n
    t                        PS-extent 3
             --------------------------------------------------
    S   Units|n  n+1  n+2  n+3  n+4  n+5  n+6  n+7  n+8... n+x|
    t        --------------------------------------------------
    r        |<--Data Stripe-->|<---Data Stripe--->| ...
    i
    p                        PS-extent 4
    e        --------------------------------------------------
    |   Units|n  n+1  n+2  n+3  n+4  n+5  n+6  n+7  n+8... n+x|
    V        --------------------------------------------------
   ---       |<--Data Stripe-->|<---Data Stripe--->| ...

             |<-------PS-extent Interleave-------->|

                             PS-extent 5
   ---       --------------------------------------------------
    A   Units|n  n+1  n+2  n+3  n+4  n+5  n+6  n+7  n+8... n+x|
    |        --------------------------------------------------
    P        |<--Data Stripe-->|<---Data Stripe--->| ...
    S
    -                        PS-extent 6
    e        --------------------------------------------------
    x   Units|n  n+1  n+2  n+3  n+4  n+5  n+6  n+7  n+8... n+x|
    t        --------------------------------------------------
    e        |<--Data Stripe-->|<---Data Stripe--->| ...
    n
    t                        PS-extent 7
             --------------------------------------------------
    S   Units|n  n+1  n+2  n+3  n+4  n+5  n+6  n+7  n+8... n+x|
    t        --------------------------------------------------
    r        |<--Data Stripe-->|<---Data Stripe--->| ...
    i
    p                        PS-extent 8
    e        --------------------------------------------------
    |   Units|n  n+1  n+2  n+3  n+4  n+5  n+6  n+7  n+8... n+x|
    V        --------------------------------------------------
   ---       |<--Data Stripe-->|<---Data Stripe--->| ...

             |<-------PS-extent Interleave-------->|

   The granularity of units indicates if bits, bytes, words,
   or logical blocks shall be used as the units when mapping the
   check data.

   The PS-extent defines the position and range of PS-LBAs within a
   P-LUI that shall be mapped into the volume set's V-LBAs.  The
   order of the PS-extents within the parameter list shall be the
   order V-LBAs are mapped into the volume set.

   All the PS-extents within a single create/modify volume set
   service shall be equal unless the PS-extent stripe length
   equals one.

   User data stripe depth is the number of contiguous units to
   count within a PS-extent before proceeding to the next
   PS-extent.  Any units defined as check data shall not be
   counted to determine when the user data stripe depth is
   reached.

   The increment/decrement PS-LBA count determines if the PS-LBAs
   shall be mapping in ascending or descending order within the
   PS-extent.  If increment is selected as the
   increment/decrement PS-LBA count then PS-LBAs after the start
   PS-LBA shall be assigned in ascending order.  If decrement is
   selected as the increment/decrement PS-LBA count then PS-LBAs
   after the start PS-LBA shall be assigned in descending order.

                      EXAMPLE 1

   PS-extent stripe length = 3 extents
   PS-extent interleave depth = Don't Care
   Granularity of Units = Logical Blocks
   User Data stripe depth = 4 units


                            Volume Set
          Start PS-LBA                               Last Unit
          V                 1st PS-extent                    V
         -----------------------------------------------------
   PS-LBA|0  1  2  3  4  5  6  7  8 ...                     x|
         -----------------------------------------------------
    V-LBA|0  1  2  3  12 13 14 15 ...                        |
         -----------------------------------------------------
          Start PS-LBA                               Last Unit
          V                 2nd PS-extent                    V
         -----------------------------------------------------
   PS-LBA|0  1  2  3  4  5  6  7  8  ...                    x|
         -----------------------------------------------------
    V-LBA|4  5  6  7  16 17 18 19 ...                        |
         -----------------------------------------------------
          Start LBA                                 Last Unit
          V                 3rd PS-extent                    V
         -----------------------------------------------------
   PS-LBA|0  1  2  3  4  5  6  7  8 ...                     x|
         -----------------------------------------------------
    V-LBA|8  9  10 11 20 21 22 23 ...                        |
         -----------------------------------------------------


.pa
                            EXAMPLE 2
   PS-extent stripe length = 4 extents
   Granularity of Units = Bytes
   User Data stripe depth = 128 Units
   PS-extent interleave depth = 8 stripe depths

                            Volume Set

                           1st PS-extent
         -------------------------------------------------------
   PS-LBA|0           1           2           3           ... x|
         -------------------------------------------------------
    V-LBA|0  1  2  3  4  5  6  7  16 17 18 19 20 21 22 23 ...  |
         -------------------------------------------------------
                            2nd PS-extent
         -------------------------------------------------------
   PS-LBA|0           1           2           3           ... x|
         -------------------------------------------------------
    V-LBA|0  1  2  3  4  5  6  7  16 17 18 19 20 21 22 23 ...  |
         -------------------------------------------------------
                            3rd PS-extent
         -------------------------------------------------------
   PS-LBA|0           1           2           3           ... x|
         -------------------------------------------------------
    V-LBA|0  1  2  3  4  5  6  7  16 17 18 19 20 21 22 23 ...  |
         -------------------------------------------------------
                            4th PS-extent
         -------------------------------------------------------
   PS-LBA|0           1           2           3           ... x|
         -------------------------------------------------------
    V-LBA|0  1  2  3  4  5  6  7  16 17 18 19 20 21 22 23 ...  |
         -------------------------------------------------------
                            5th PS-extent
         -------------------------------------------------------
   PS-LBA|0           1           2           3           ... x|
         -------------------------------------------------------
    V-LBA|8  9  10 11 12 13 14 15 24 25 26 27 28 29 30 31 ...  |
         -------------------------------------------------------
                            6th PS-extent
         -------------------------------------------------------
   PS-LBA|0           1           2           3           ... x|
         -------------------------------------------------------
    V-LBA|8  9  10 11 12 13 14 15 24 25 26 27 28 29 30 31 ...  |
         -------------------------------------------------------
                            7th PS-extent
         -------------------------------------------------------
   PS-LBA|0           1           2           3           ... x|
         -------------------------------------------------------
    V-LBA|8  9  10 11 12 13 14 15 24 25 26 27 28 29 30 31 ...  |
         -------------------------------------------------------
                            8th PS-extent
         -------------------------------------------------------
   PS-LBA|0           1           2           3           ... x|
         -------------------------------------------------------
    V-LBA|8  9  10 11 12 13 14 15 24 25 26 27 28 29 30 31 ...  |
         -------------------------------------------------------

   5.2.2.2  Report Volume Sets Service

   The report volume set service reports information on the
   configured volume sets under control of the addressed SDA.

   Note:  The report volume sets service may contain more volume
   sets than the application client has configured.  The SDA may
   have added volume sets based on internal requirements.

   The report volume sets service provides parameters that define
   the information to report.  The parameters are:

   -Report all or selected Volume Sets               (S)
   -Volume Set Logical Unit Identifier       (V-LUI) (S)

   The report all or selected volume sets indicates if all volume
   sets shall be reported or if just the selected volume set
   shall be reported.

   The V-LUI defines the address of the volume set to report if
   the report single volume set is selected.  The V-LUI is not
   used if the report all volume sets is selected.

   The report volume sets service outputs parameters that contain
   the following information for each volume set within the SDA
   or, optionally, for a single volume set.

   -Volume Set Logical Unit Identifier (V-LUI)       (R or S)
   -PS-extent Stripe Length                     (1 per V-LUI)
   -PS-extent Interleave Depth                  (1 per V-LUI)
   -Granularity of Units (bit, byte, etc.)      (1 per V-LUI)
   -State of the Volume Set                     (1 per V-LUI)
   -PS-extent                                   (x per V-LUI)
   -User Data Stripe Depth                  (1 per PS-extent)
   -Increment/Decrement PS-LBA Count        (1 per PS-extent)


   Note:Any parameters indicated by a (R) may be repeated.  Any
   parameters indicated by a (S) shall only occur once per service
   request.

   The V-LUI defines the address of the volume set.

   PS-extent stripe length is indicates the number of
   contiguous PS-extents counted before looping back to the first
   PS-extent of the current stripe.

   PS-extent interleave depth is indicates the point
   at which the mapping shall continue onto the next consecutive
   PS-extent beyond the current stripe.

   The granularity of units indicates if bits, bytes, words,
   or logical blocks were be used as the units when mapping the
   check data.

   The state of the volume set indicates the current state
   of the volume set.  See x.x.x for a list of states.

   The PS-extent defines the position and range of PS-LBAs within
   a P-LUI that are mapped into the volume set's V-LBAs.  The
   order of the PS-extents within the parameter list indicates
   the order V-LBAs are mapped into the volume set.

   User data stripe depth is the number of contiguous units
   counted within a PS-extent before proceeding to the next
   PS-extent.  Any units defined as check data are not counted to
   determine when the user data stripe depth is reached.

   The increment/decrement PS-LBA count determines if the PS-LBAs
   are mapped in ascending or descending order within the
   PS-extent.

   5.2.2.3  Delete Volume Set Service

   The delete volume set service provides parameters that
   indicate the volume set to delete.  The volume set to delete
   is defined by the following input parameter:

   -Volume Set Logical Unit Identifier (V-LUI)  (S)

   Note:Any parameters indicated by a (R) may be repeated.  Any
   parameters indicated by a (S) shall only occur once per service
   request.

   The V-LUI defines the address of the volume set to be
   deleted.

   5.2.2.4 Recalculate V-LUI Check Data Service

   The recalculate V-LUI check data service requests the
   recalculation of any redundancy groups overlayed by a
   range of V-LBAs.

   The recalculate V-LUI check data service receives input
   parameters that contain the following information:

   -Volume Set Logical Unit Identifier (V-LUI)  (S)
   -Start V-LBA                                 (S)
   -Number of V-LBAs                            (S)

   Note:Any parameters indicated by a (R) may be repeated.  Any
   parameters indicated by a (S) shall only occur once per
   service request.

   The V-LUI defines the address of the volume set that contains
   the range of V-LBAs to recalculate.

   The start V-LBA is the V-LBA to begin the recalculation.

   The number of V-LBAs provides the range of the recalculation.

   5.2.2.5 Verify V-LUI Check Data Service

   The verify V-LUI check data service requests a verification
   that check data is consistent with the protected space within
   any redundancy groups overlayed by a range of V-LBAs.

   The verify V-LUI check data service receives input parameters
   that contain the following information:

   -Volume Set Logical Unit Identifier (V-LUI)       (S)
   -Enable/Disable Continuous Verification           (S)
   -Start V-LBA                                      (S)
   -Number of V-LBAs                                 (S)

   Note:Any parameters indicated by a (R) may be repeated.  Any
   parameters indicated by a (S) shall only occur once per
   service request.

   The V-LUI defines the address of the volume set that contains
   the range of V-LBAs to verify.

   The enable/disable continuous verification indicates if the
   check data within the redundancy groups that overlay the
   range of V-LBAs shall be continuously verified or only
   verified one time.

   Note:If continuous verification is requested and the SDA
   supports that option than the service shall be confirmed with
   no exception conditions.  The continuous verification shall
   execute as an SDA background operation in a user specific
   manner.  Continuous may be defined as only verifying check
   data associated with the LBA range of any write commands that
   occur within the range of V-LBAs that overlay a redundancy
   group that has continuous verification enabled.

   The start V-LBA is the V-LBA to begin the verification.

   The number of V-LBAs provides the range of the verification.

   5.2.2.6 Control Generation of Check Data Service

   The control generation of check data service requests that the
   generation of check data within redundancy groups overlayed by
   a volume set be enabled or disabled.

   The control generation of check data service receives input
   parameters that contain the following information:

   -Volume Set Logical Unit Identifier (V-LUI)       (S)
   -Enable/Disable Check Data                        (S)

   Note:Any parameters indicated by a (R) may be repeated.  Any
   parameters indicated by a (S) shall only occur once per
   service request.

   The V-LUI defines the address of the volume set that shall
   have the generation of check data enabled or disabled.

   The enable/disable check data indicates if the generation of
   check data shall be enabled or disabled.

   5.2.2.6 Control Write Operations Service

   The control write operations service requests that write
   operations to a volume set be enabled or disabled.

   The control write operations service receives input parameters
   that contain the following information:

   -Volume Set Logical Unit Identifier (V-LUI)       (S)
   -Enable/Disable Write Operations                  (S)

   Note:Any parameters indicated by a (R) may be repeated.  Any
   parameters indicated by a (S) shall only occur once per
   service request.

   The V-LUI defines the address of the volume set that shall
   have write operations enabled or disabled.

   The enable/disable write operations indicates if the write
   operations shall be enabled or disabled.

   5.2.3 Spare Services

   The spare services provide for the creation, modification, and
   deletion of spares.

   The spare is a P-extent or P-LUI that will replace a failed
   P-extent or P-LUI.  The redundancy group or P-LUI that
   contains the failed range of P-LBAs or the failed P-LUI must
   be associated with a spare before the replacement can occur.
   A spare is associated with a redundancy group or P-LUI using
   the create/modify spare services.

   Note:P-extents shall only replace P-extents and P-LUIs shall
   only replace P-LUIs.

   5.2.3.1 Create/Modify P-extent Spare Service

   The create/modify P-extent spare service provides for the
   creation of new P-extent spares and the modification of
   existing P-extent spares.

   The create/modify P-extent spare service provides parameters
   that define the boundaries of a P-extent spare and the
   redundancy group(s) and/or the P-extents it is associated
   with.  The P-extent spare is defined by the following input
   parameters:

   -Spare Logical Unit Identifier (S-LUI)            (S)
   -P-Extent                                         (S)
   -Redundancy Group Logical Unit Identifier (R-LUI) (R)
   -Associated P-Extent                              (R)

   Note:Any parameters indicated by a (R) may be repeated.  Any
   parameters indicated by a (S) shall only occur once per service
   request.

   The parameter list that defines the P-extent spare may contain
   zero or more R-LUIs and/or zero or more associated P-extents.

   The S-LUI defines the address to be assigned to the P-extent
   spare being created.

   The P-extent defines the position and range of the P-extent
   spare.  There shall be only one P-extent per create P-extent
   spare service request.

   The R-LUI parameter is the address of a redundancy group that
   shall be associated with this P-extent spare.  There may be
   zero or more redundancy group(s) associated with a single
   P-extent spare.

   The associated P-extent defines the position and range of a
   P-extent that shall be associated with this P-extent spare.
   There may be zero or more P-extents associated with a single
   P-extent spare.

   5.2.3.2  Report P-extent Spare Service

   The report P-extent spare service reports information on
   the configured P-extent spares under control of the addressed
   SDA.

   The report P-extent spare service provides parameters that
   define the information to report.  The parameters are:

   -Report all or selected P-extent Spares           (S)
   -Spare Logical Unit Identifier            (S-LUI) (S)

   The report all or selected P-extent spares indicates if all
   spares shall be reported or if just the selected P-extent
   spare shall be reported.

   The S-LUI defines the address of the P-extent spare to report
   if the report single P-extent spare is selected.  The S-LUI is
   not used if the report all P-extent spares is selected.

   The report P-extent spare service output parameters that
   contain the following information for each P-extent spare
   within the SDA or, optionally, for a single P-extent spare.

   -Spare Logical Unit Identifier (S-LUI)                (S or R)
   -P-Extent                                        (1 per S-LUI)
   -State of the spare                              (1 per S-LUI)
   -Redundancy Group Logical Unit Identifier (R-LUI)(x per S-LUI)
   -Associated P-Extent                             (x per S-LUI)

   Note:Any parameters indicated by a (R) may be repeated.  Any
   parameters indicated by a (S) shall only occur once per service
   request.

   The S-LUI defines the address of the P-extent spare.

   The P-extent defines the position and range of the P-extent
   spare.

   The state of the spare indicates the current state of the
   P-extent spare.  See x.x.x for a list of states.

   The R-LUI defines the address of any Redundancy group that the
   P-extent spare has been assigned.  There may be zero or more
   R-LUIs associated with each P-extent spare.

   The associated P-extent defines the position and range of any
   P-extent that has been assigned to this P-extent spare.  There
   may be zero or more P-extents associated with each P-extent
   spare.

   5.2.3.3 Create/Modify P-LUI/C-LUI Spare Service

   The create/modify P-LUI/C-LUI spare service provides for the
   creation of new P-LUI spares or C-LUI spares and the
   modification of existing P-LUI spares or C-LUI spares.

   The create/modify P-LUI/C-LUI spare service provides
   parameters that define the information to report.  The
   parameters are:

   -Create/Modify P-LUI or C-LUI Spare          (S)

   The create/modify P-LUI or C-LUI spare parameter indicates if
   the logical unit identifier is a physical logical unit
   identifier or a component logical unit identifier.

   The create/modify P-LUI/C-LUI spare service provide parameters
   that define a P-LUI spare or C-LUI spare and the redundancy
   group(s), P-LUI(s) and/or C-LUI(s) it is associated with.  The
   P-LUI spare is defined by the following input parameters:

   -Spare Logical Unit Identifier (S-LUI)            (S)
   -P-LUI or C-LUI                                   (S)
   -Redundancy Group Logical Unit Identifier (R-LUI) (R)
   -Associated P-LUI                                 (R)
   -Associated C-LUI                                 (R)

   Note:Any parameters indicated by a (R) may be repeated.  Any
   parameters indicated by a (S) shall only occur once per service
   request.

   The parameter list that defines the P-LUI spare may contain
   zero or more R-LUIs, zero or more C-LUIs, and/or zero or more
   associated P-LUIs.

   The S-LUI defines the address to be assigned to the P-LUI
   spare or C-LUI being created.

   The P-LUI or C-LUI defines the P-LUI spare or the C-LUI spare.
   There shall be only one P-LUI or C-LUI per create P-LUI/C-LUI
   spare service request.

   The R-LUI parameter is the address of a redundancy group that
   shall be associated with this P-LUI spare or C-LUI spare.
   There may be zero or more redundancy group(s) associated with
   a single P-LUI spare or C-LUI spare.

   The associated P-LUI defines a P-LUI that shall be associated
   with this P-LUI spare or C-LUI spare.  There may be zero or
   more P-LUIs associated with a single P-LUI spare or C-LUI
   spare.

   The associated C-LUI defines a C-LUI that shall be associated
   with this P-LUI spare or C-LUI spare.  There may be zero or
   more C-LUIs associated with a single P-LUI spare or C-LUI
   spare.

   5.2.3.4  Report P-LUI/C-LUI Spare Service

   The report P-LUI/C-LUI spare service reports information on
   the configured P-LUI spares or the C-LUI spares under control
   of the addressed SDA.  The report P-LUI/C-LUI spare service
   provides parameters that define the information to report.
   The parameters are:

   -Report P-LUI Spares or C-LUI Spares              (S)
   -Report all or selected P-LUI or C-LUI Spares     (S)
   -Spare Logical Unit Identifier            (S-LUI) (S)

   The report P-LUI spares or C-LUI spares indicates if P-LUI
   spares or C-LUI spares shall be reported.

   The report all or selected P-LUI or C-LUI spares indicates if
   all spares shall be reported or if just the selected P-LUI
   spare or C-LUI spare shall be reported.

   The S-LUI defines the address of the P-LUI spare or C-LUI
   spare to report if the report single P-LUI spare or C-LUI
   spare is selected.  The S-LUI is not used if the report all
   P-LUI spares or C-LUI spares is selected.

   The report P-LUI/C-LUI spare service outputs parameters that
   contain the following information for each P-LUI spare or
   C-LUI spares within the SDA or, optionally, for a single P-LUI
   spare or C-LUI spare.

   -Spare Logical Unit Identifier (S-LUI)                (S or R)
   -P-LUI or C-LUI                                  (1 per S-LUI)
   -State of the spare                              (1 per S-LUI)
   -Redundancy Group Logical Unit Identifier (R-LUI)(x per S-LUI)
   -Associated P-LUI                                (x per S-LUI)
   -Associated C-LUI                                (x per S-LUI)

   Note:Any parameters indicated by a (R) may be repeated.  Any
   parameters indicated by a (S) shall only occur once per service
   request.

   The S-LUI defines the address of the P-LUI spare or C-LUI
   spare.

   The P-LUI or C-LUI defines the P-LUI spare or the C-LUI spare.

   The state of the spare indicates the current state of the
   P-LUI spare or C-LUI spare.  See x.x.x for a list of states.

   The R-LUI defines the address of any Redundancy group that the
   P-LUI spare or C-LUI spare has been assigned.  There may be
   zero or more R-LUIs associated with each P-LUI spare or C-LUI
   spare.

   The associated P-LUI defines any P-LUI that has been assigned
   to this P-LUI spare or C-LUI spare.  There may be zero or more
   P-LUIs associated with each P-LUI spare or C-LUI spare.

   The associated C-LUI defines any C-LUI that has been assigned
   to this P-LUI spare or C-LUI spare.  There may be zero or more
   C-LUIs associated with each P-LUI spare or C-LUI spare.

   5.2.3.5  Delete Spare Service

   The delete spare service provide parameters that indicate the
   spare to delete.  The spare to delete is defined by the
   following input parameter:

   -Spare Logical Unit Identifier (S-LUI)  (S)

   Note:Any parameters indicated by a (R) may be repeated.  Any
   parameters indicated by a (S) shall only occur once per service
   request.

   The S-LUI defines the address of the spare to be deleted.

   Spares that have been assigned to any redundancy groups,
   P-extents, or P-LUIs shall not be deleted.

   6.0 Disk Array Conversion Layer Functions

   A disk array conversion layer initiates several functions
   when a media access service is requested.  The type of media
   access and the translation in effect determine which
   functions are used.  The following are the functions
   available within a disk array conversion layer:

   -Translation of input Logical Unit Identifiers to output
    Logical Unit Identifiers.
   -Translation of input LBAs to output LBAs.
   -Reading data from and writing data to locations based on
    the translation in effect for the addressed volume set.
   -Calculates and updates the check data (if any).
   -Regeneration of protected space contents within the volume
    set using check data information or duplicate data.
   -Rebuild of protected space contents associated with the
    redundancy group and(or) check data within the redundancy
    group using the contents of the redundancy group.
   -Recalculation of the check data within a redundancy group.
   -Recalculation of the check data associated with a volume
    set.
   -Determines when a P-extent should be disabled and/or
    replaced.
   -Returns a confirmation to the higher level as to the success
    or failure of a service request and, in the case of a
    failure, gives possible corrective actions.

   7.0 Exception Conditions

   Exception conditions inform an application client that:

   -a change occurred in the physical configuration,
   -a change occurred in a volume set configuration,
   -a change occurred in a redundancy group configuration
   -a change occurred in a spare
   -a change occurred in the operation state of the DACL
   -a repair action is requested (e.g. disk is predicting
    failure),
   -a repair action is required to restore the volume sets
    availability (e.g. power supply failure),
   -a repair action is required to restore the volume sets level
    of integrity (ego disk fails), or
   -an error occurred.

   Which exception conditions are returned in confirmations and
   how often they are returned is based on configuration
   requests received from an application client.




More information about the T10 mailing list