Date: Oct,30 1993 X3T9.2/93-140 rev 1 To: X3T9.2 Committee (SCSI) From: George Penokie (IBM) Subject: SCSI Disk Array Model | - Denotes changes from 93-140r0 to 93-140r1 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 and ideas. 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 reconstructed. 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. 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 intersect 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 addressable space within a | single SCSI device. 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 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 SCSI device configured as a redundancy group. 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 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. 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 pool Logical Unit Identifier | 1. Spare - A range of LBAs or P-LUIs associated with one or more redundancy groups that can be used to replace a portion of the redundancy group. 1. SCSI Disk Array (SDA) - A device that processes SCSI command discriptor 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. 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. 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. 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) 2.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. 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) | | -------------- 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) | | -------------- 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) | | -------------- 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) | | -------------- 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) | | -------------- 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 DIRECTLY INDIRECTLY PREFIX SPACE | ADDRESSING ADDRESSABLE ADDRESSABLE ADDRESSED | THROUGH SDA ------------------------------------------------------------- | Volume Set yes no V- user data | Physical yes no P- physical | Redundancy Group no yes R- protected | Spare no yes S- physical | Redundancy groups and spares shall be accessed by addressing | service requests to the SDAs' P-LUI that controls the | redundancy groups and spares. | <> 4.1.1 Physical Address Mode | <> | All SCSI operations are allowed in physical address mode, | however P-LUIs are not required to to support all SCSI | commands. Any command that is not supported shall terminate | in error. If the P-LUI is contained within the SDA and is not controlled by a DACL 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. | The SDA shall only allow the following services to a redundancy group: -All redundancy group configuration services. -Set method of reporting informational exception conditions -Recalculate the check data within a redundancy group. -Reconstruct the user data associated with a redundancy group using check data information or duplicate data. -Verify check data within a redundancy group. -Enable/Disable generation of check data within a redundancy group. | -Check the check data associated with a command. 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 physical address mode, | however P-LUIs are not required to to support all SCSI | commands. Any command that is not supported shall terminate | in error. | <> The SDA shall only allow the following services to a volume set: -All volume set configuration services. -Set method of reporting informational exception conditions -Recalculate the check data associated with a volume set. | -Check the check data associated with a volume set. -Enable/Disable writes. -Enable/Disable generation of the check data associated with a volume set. | 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. | The SDA shall only allow the following services to a spare pool: -All spare pool configuration services. 5.0 SCSI Disk Array Requests 5.1 Maintenance Services The SDA provides the following maintenance services: -Report P-LUI Geographic Location -Set P-LUI Geographic Location -Report Physical Space -Report Unassigned Physical Space 5.1.1 Report P-LUI Geographic Location Service | The report P-LUI geographic location service outputs a parameter list that contains the following information for each P-LUI within the SDA: Note:The P-LUI of the SDA is included as an entry in the parameter list. -Physical Logical Unit Identifier (P-LUI) (R) -P-LUI Unit Type Identifier (1 per P-LUI) | -Replaceable Unit (1 per P-LUI) -State of the device (1 per P-LUI) -Geographic Location (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 P-LUI type identifier indicates the type of logical unit is associated with the P-LUI. See x.x.x for a list of logical unit type identifiers. | The replaceable unit indicates if the P-LUI is a replaceable | unit and if it is Costumer Replaceable Unit (CRU) or a Field | Replaceable Unit (FRU). The state of the device indicates the current state of P-LUI. See x.x.x for a list of states. The geographic location is a vendor specific ASCII indication as to the position of the P-LUI within the SDA. 5.1.2 Set P-LUI Geographic Location Service | The set P-LUI geographic location service receives an input parameter list that contains the following information for | each P-LUI that the Application Client wants to set the geographic location: -Physical Logical Unit Identifier (P-LUI) (R) | -P-LUI Unit Type Identifier (1 per P-LUI) | -Replaceable Unit (1 per P-LUI) -Geographic Location (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 indicates the address of the physical logical unit. | The P-LUI type identifier indicates the type of logical unit | is associated with the P-LUI. See x.x.x for a list of logical | unit type identifiers. | The replaceable unit indicates if the P-LUI is a replaceable | unit and if it is Costumer Replaceable Unit (CRU) or a Field | Replaceable Unit (FRU). The geographic location is a vendor specific ASCII field that | indicates where the P-LUI is located. 5.1.3 Report Physical Space Service | The report physical space service outputs a parameter list that contains the following information for each addressable device within the SDA that may be used for user data: -P-extent (R) -Type Identifier (1 per P-extent) -State of the device (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 type identifier indicates the type of device associated with the P-extent. See x.x.x for a list of type identifiers. The state of the device indicates the current state of the device associated with the P-extent. See x.x.x for a list of states. 5.1.4 Report Unassigned Physical Space Service | The report unassigned physical space service outputs a parameter list that contains the following information for each P-LUI within the SDA that may be configured but has not | yet been configured into a set, group, or spare: -P-extent (R) -Device Type Identifier (1 per P-extent) -State of the device (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 type identifier indicates the type of device associated with the P-extent. See x.x.x for a list of type identifiers. The state of the device indicates the current state of the device associated with the P-extent. See x.x.x for a list of states. 5.2 SCSI Disk Array Services <> The SDA performs the following services to a redundancy group: -Create/Modify Redundancy Group -Report Redundancy Groups -Report Unassigned Redundancy Group Space -Delete Redundancy Group -Verify check data is consistent with protected space within the selected Redundancy Group -Recalculate the check data within a Redundancy Group -Reconstruct the user data associated with a Redundancy Group using check data information or duplicate data -Enable/Disable generation of check data within a Redundancy Group -Enable/Disable continuous verify of user data within a Redundancy Group -Set method of reporting informational exception conditions The SDA performs the following services to a volume set: -Create/Modify Volume Set -Report Volume Sets -Delete Volume Set -Recalculate the check data associated with a volume set, -Verify user data is consistent with any associated check data within the selected Volume Set -Enable/Disable generation of the check data associated with a Volume Set -Enable/Disable writes -Set method of reporting informational exception conditions | The SDA performs the following services to a spare: | -Create/Modify Spare | -Report Spare | -Delete Spare 5.2.1 Redundancy Group Services The redundancy group services provide for the creation, modification, reporting, and deletion 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. 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 12 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 a parameter list that defines 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) | -Recalculate protected space (S) | -Preserve protected space (S) | -Set protected space to known value (S) -Redundancy Type Identifier (S) -Granularity of Units (bit, byte, logical block, etc.) (S) -P-Extent (R) -Start 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 start 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 recalculate protected space indicates if the protected | space within the redundancy group 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 shall be preserved during | the creation or modification of a redundancy group. | The set protected space indicates if the protected space shall | be set to a specified value and the value to set the protected | space to. 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 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 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 shall be equal for 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 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. Start interleave P-LBA is the beginning LBA of the interleave ratio on the P-LUI. Note:It is not required that the start interleave P-LBA be equal to the start PS-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 interleave shall begin with check data. 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 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 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 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 groups service outputs a parameter list that contains the following information for each redundancy group within the SDA: -Redundancy Group Logical Unit Identifier (R-LUI) (R) -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 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 interleave P-LBA is the beginning LBA of the interleave | ratio on the P-LUI. | Note:It is not required that the start interleave P-LBA be | equal to the start PS-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 space service outputs a parameter list that contains the following information for portions of any configured redundancy group within the SDA that have not been assigned to a volume set: -Redundancy Group Logical Unit Identifier (R-LUI) (R) -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) | -PS-Extent (x per R-LUI) | -Start Interleave P-LBA (1 per PS-extent) | -Number of units of check data (1 per PS-extent) | -Number of units of user data (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. NOTE:The information provided by this service provides information to the application client so it can place redundancy 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 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 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. | Start interleave P-LBA is the beginning LBA of the interleave | ratio on the P-LUI. | Note:It is not required that the start interleave P-LBA be | equal to the start PS-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.4 Delete Redundancy Group Service The delete redundancy group service provides a parameter list that indicates 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.2 Volume Set Services The volume set services provide for the creation, modification, reporting, and deletion 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. 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.4.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 a parameter list that defines 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 PS-extent stripe length is not an even multiple of the | number of PS-extents the service request shall be terminated | in error. 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. | 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. 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 PS-extent interleave depth = Don't Care Granularity of Units = Logical Blocks User Data stripe depth = 4 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 ... | ----------------------------------------------------- EXAMPLE 2 PS-extent stripe length = 4 Granularity of Units = Bytes PS-extent interleave depth = 8 User Data stripe depth = 128 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.4.2 Report Volume Sets Service The report volume sets service outputs a parameter list that contains the following information for each volume set within the SDA: -Volume Set Logical Unit Identifier (V-LUI) (R) | -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.4.3 Delete Volume Set Service The delete volume set service provides a parameter list that indicates 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.3 Spare Services | The spare services provide for the creation, modification, and deletion of spare pools. | The spare is a P-extent that will replace a failed P-extent. | The redundancy group or P-LUI that contains the failed range | of P-LBAs 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. | 5.2.3.1 Create/Modify Spare Service | The create/modify spare service provides for the creation of | new spares and the modification of existing spares. | The create/modify spare service provides a parameter list that | defines the boundaries of a spare and the redundancy group(s) | and/or the P-LUI(s) it is associated with. The spare is | defined by the following input parameters: -Spare Logical Unit Identifier (S-LUI) (S) -P-Extent or Spare P-LUI (S) -Redundancy Group Logical Unit Identifier (R-LUI) (R) -Physical Logical Unit Identifier (P-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 spare may contain zero or more R-LUIs and/or zero or more P-LUIs. The S-LUI defines the address to be assigned to the spare | being created. | The P-extent defines the position and range of the spare. The | spare P-LUI defines the address of the spare. There shall be | only one P-extent and spare P-LUI per create spare service | request. | The R-LUI parameter is the address of a redundancy group that | shall be associated with this spare. There may be zero or | more redundancy group(s) associated with a spare. | The P-LUI parameter is the address of a device that shall be | associated with this spare. There may be zero or more P-LUIs | associated with each spare. | 5.2.3.2 Report Spare Service | The report spare service outputs a parameter list that | contains the following information for each spare within the SDA: -Spare Logical Unit Identifier (S-LUI) (R) | -P-Extent or Spare P-LUI (1 per S-LUI) -State of the spare (1 per S-LUI) -Redundancy Group Logical Unit Identifier (R-LUI)(x per S-LUI) -Physical Logical Unit Identifier (P-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 spare. | The P-extent defines the position and range of the spare. The | spare P-LUI defines the address of the spare. | The state of the spare indicates the current state of the | spare. See x.x.x for a list of states. The R-LUI defines the address of any Redundancy group that the | spare has been assigned. There may be zero or more R-LUIs | associated with each spare. | The P-LUI defines the address of any device that the spare has been assigned. There may be zero or more P-LUIs associated | with each spare. | 5.2.3.3 Delete spare Service | The delete spare service provides a parameter list that | indicates 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 or P-LUIs shall not be deleted. 5.2.6 Reporting informational exception conditions | The application client configures the volume set to report informational exception conditions using one or more of the following methods: -Periodic Check Condition with a Recovered Error Sense Key, -Check Condition with Unit Attention Sense Key, or -No Check Condition; system will poll to determine current state of DACL. -Asynchronous Event Conditions 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 user data within the volume set using check data information or duplicate data. -Reconstruction of user data 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 associated with a volume set. -Recalculation of the check data within a redundancy group. -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 pool -a change occurred in the operation state of the DACL -a repair action is requested (eg disk is predicting failure), -a repair action is required to restore the volume sets availability (eg power supply failure), -a repair action is required to restore the volume sets level of integrity (eg 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.