Date: Sun, 5 Sep 93 23:13:30 CDT From: George Penokie To: scsi@WichitaKS.NCR.COM Subject: SCSI Disk Array Model (93-003r9) Extracted-To: SCSI_Reflector Date: Aug,28 1993 X3T9.2/93-003 rev 9 To: X3T9.2 Committee (SCSI) From: George Penokie (IBM) Subject: SCSI Disk Array Model | - Denotes changes from rev 8 to rev 9 | 0.0 References | This proposal uses many of the definitions and concepts | contained within the SCSI-3 Architecture Model (SAM). It is | assumed a reader of this proposal has knowledge of SAM | definitions and concepts. | 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 set which allows lost or destroyed user data to be reconstructed. 1. Check Data Mapping - The distribution of the check data within a redundancy set. | 1. C-LBA - Check Data Logical Block Address 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. Extent - All or part of the addressable space within a | device. The parameters which define an extent are: | -Start LBA | -Number of LBAs | -Number of Bytes per LBA | The start LBA is the first addressable LBA of the | extent. | The number of LBAs provides the capacity of the extent | in blocks. | The number of bytes per LBA provides the size, in bytes, | of the blocks in the extent. | 1. P-LUI - Physical Device Logical Unit Identifier | 1. P-LBA - Physical Device Logical Block Address | 1. Redundancy Set - A grouping of protected space and associated Check Data (Check Data may be null) into a single Logical Unit which shall only have a single type of redundancy. | 1. R-LUI - Redundancy set Logical Unit Identifier | 1. R-LBA - Redundancy set Logical Block Address 1. Set - Objects which 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. S-LBA - Spare pool Logical Block Address | 1. Spare Pool -A range of LBAs associated with one or more redundancy sets which can be used to replace a portion of | the redundancy set. 1. SCSI Disk Array (SDA) - A device which 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 which 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 groupings of User Data into a | single Logical Unit. 2.0 Model for SCSI disk arrays The following is a model which defines SCSI disk arrays. 2.1 SCSI Disk Array Addressing When addressing a SCSI Disk Array (SDA) one of the following methods is used: Physical Addressing Redundancy Set Addressing Volume Set Addressing | Spare Pool Addressing The selected address mode is valid from the start of the command until a command complete is indicated. Each command indicates which one of the address modes the DACL shall use to do address translations. Note:A task that contains multiple commands may switch to a different address mode on each command. 2.1.1 Physical Address Mode Physical address mode instructs the DACL to translate the | input P-LUI to the output P-LUI using the physical translate table. The DACL shall pass the command to the output P-LUI without modification. | If the output P-LUI addresses a SDA then the DACL shall select the physical address mode for the command being sent to the SDA. | If the P-LUI is contained within the SDA and is not controlled | by a DACL then the SDA executes the command. Implementors Note: This provides the means for a system to corrupt data. 2.1.2 Redundancy Set Address Mode If the redundancy set being addressed is within the addressed SDA then the command is executed by the SDA. Note: The addressed Redundancy Set may not be under the control of the addressed SDA. It may be in a SDA lower in the tree structure. If the redundancy set being addressed is not controlled within the addressed SDA then the SDA uses the redundancy set location table to determine which SDA to send the command. | The SDA shall use the input R-LUI as the output R-LUI and | shall pass the command to the output R-LUI without modification. 2.1.3 Volume Set Address Mode The volume set address mode instructs the DACL to execute 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. If the volume set being addressed is not controlled within the addressed SDA then the SDA uses the volume set location table to determine which SDA to send the command. The SDA shall | use the input V-LUI as the output V-LUI and shall pass the | command to the output V-LUI without modification. | 2.1.4 Spare Pool Address Mode | If the spare pool being addressed is within the addressed SDA then the command is executed by the SDA. | Note: The addressed spare pool may not be under the control of the addressed SDA. It may be in a SDA lower in the tree structure. | If the spare pool being addressed is not controlled within | the addressed SDA then the SDA uses the spare pool location table to determine which SDA to send the command. 3.0 SCSI Disk Array Requests 3.1 Maintenance Services | The SDA provides the following maintenance services: | -Report P-LUI Geographic Location | -Report Physical Space -Report Unassigned Physical Space | 3.1.1 Report P-LUI Geographic Location Service | The report P-LUI geographic location provides a parameter | list which contains the following information for each field | replaceable unit (FRU) under its control: | -Physical Logical Unit Identifier | -FRU Type Identifier | -State of the device | -Geographic Location | The P-LUI defines the address of the physical device. | The FRU type identifier indicates the type of physical device | is associated with the P-LUI. See x.x.x for a list of FRU | type identifiers. | The state of the device indicates the current state of | physical logical unit. See x.x.x for a list of states. | The geographic location is a vendor specific indication as to | the position of the physical logical unit within the SDA. | 3.1.2 Report Physical Space Service | The report physical space service provides a parameter list | which contains the following information for each addressable | device within the SDA which may be used for user data: | -Physical Logical Unit Identifier | -Type Identifier | -Extent | -State of the device | -Location within tree | The P-LUI defines the address of the physical device. | The type identifier indicates the type of physical device | is associated with the P-LUI. See x.x.x for a list of FRU | type identifiers. | The Extent defines the position and range of the P-LBAs for | the physical device. | The state of the device indicates the current state of | logical unit. See x.x.x for a list of states. | The location within the tree provides information which | identifies the position of the physical logical unit. See | x.x.x for the method used to define the position. | 3.1.3 Report Unassigned Physical Space Service | The report unassigned physical space service provides a | parameter list which contains the following information for | each addressable device within the SDA that may be used for | user data that has not been configured into a set: | -Physical Logical Unit Identifier | -Device Type Identifier | -Extent | -State of the device | -Location within tree | The P-LUI defines the address of the physical device. | The type identifier indicates the type of physical device | is associated with the LUI. See x.x.x for a list of FRU type | identifiers. | The Extent defines the position and range of the unassigned | P-LBAs for the physical device. | The state of the device indicates the current state of | physical logical unit. See x.x.x for a list of states. | The location within the tree provides information which | identifies the position of the physical logical unit. See | x.x.x for the method used to define the position. 3.2 Configuration Services The SDA performs the following configuration services: -Report Redundancy Sets -Report Unassigned Redundancy Set Space -Create/Modify Redundancy Set -Delete Redundancy Set -Report Volume Sets -Create/Modify Volume Set -Delete Volume Set -Report Spare Pool -Create/Modify Spare Pool -Delete Spare Pool -Set method of reporting informational exception conditions 3.2.1 Redundancy Set Services The redundancy set services provide for the creation, modification, and deletion of redundancy sets. | A redundancy set is a set which defines the check data and | the boundaries of the protected space covered by the check | data. | The following figure shows the relationship between the check | data and protected space before any volume sets have been | defined. Redundancy Set | ------------------------------------- | / \ | / \ | / 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 set. Redundancy Set | ------------------------------------- | / | | \ | / | | \ | / Volume Set (1) | Volume Set (2) | \ | / | | \ | / ------- | \ | / / \ | \ | / / Check \ |Unassigned\ | \ \ Data / | Space / | \ \ / | / | \ ------- | / | \ | | / | \ | | / | \ | | / | \ | | / | ------------------------------------- 3.2.1.1 Report Redundancy Sets Service The report redundancy sets service provides a parameter list which contains the following information for each redundancy set within the SDA: | -Redundancy Set Logical Unit Identifier (R-LUI) -Redundancy Type Identifier | -State of the Redundancy Set | The R-LUI defines the address of the redundancy set. The redundancy type identifier parameter defines the of check data mapping within the redundancy set. See 3.2.1.3 for a description of the redundancy type identifiers. | The state of the redundancy set indicates the current state | of the redundancy set. See x.x.x for a list of states. 3.2.1.2 Report Unassigned Redundancy Set Space Service The report unassigned redundancy set space service provides a parameter list which contains the following information for portions of any configured redundancy set within the SDA which has not been assigned to a volume set: -Redundancy Set Logical Unit Identifier (R-LUI) -Redundancy Type Identifier | -State of the Redundancy Set -Physical Logical Unit Identifier (P-LUI) | -Extent -Location within tree The parameter list which reports the unassigned redundancy | set space may contain one or more P-LUIs. For each P-LUI the | parameter list shall contain an extent, and location within | tree parameters. | NOTE:The information provided by this service provides | information to the ULP so it can place redundancy sets on | specific devices. | The R-LUI defines the address of the redundancy set. The redundancy type identifier parameter defines the check data mapping within the redundancy set. See 3.2.1.3 for a description of the redundancy type identifiers. | The state of the redundancy set indicates the current state | of the redundancy set. See x.x.x for a list of states. | P-LUI is a parameter which points to a device which has unassigned redundancy set space. | The extent defines the position and range of the unassigned | redundancy set P-LBAs within the P-LUI. The extent does not | include check data space. <> The location within the tree provides information which identifies the position of the physical logical unit. See x.x.x for the method used to define the position. 3.2.1.3 Create/Modify Redundancy Set Service | The create/modify redundancy set service provides for the | creation of new redundancy sets and the modification of an | existing redundancy sets. | The create/modify redundancy set service provides a parameter list which defines the boundaries of a redundancy set and the check data mapping within that redundancy set. The redundancy set is defined by the following parameters: | -Redundancy Set Logical Unit Identifier (R-LUI) -Redundancy Type Identifier | -Physical Logical Unit Identifier (P-LUI) | -Extent -Check Data Mapping The parameter list which defines the redundancy set may | contain one or more P-LUIs. For each P-LUI the parameter | list shall contain an extent and a check data mapping. | The R-LUI defines the address to be assigned to the redundancy set being created. The redundancy type identifier parameter defines the of check data mapping within the redundancy set as one of the following: -No Redundancy -Mirrored Redundancy -Striped Redundancy In a redundancy set which has a mapping of no redundancy user data is not protected. In a redundancy set which has a mapping of mirrored redundancy all user data is written to the devices listed in | the check data mapping parameters. In a redundancy set which has a mapping of striped 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. | P-LUI is a parameter which points to a device which will become all or part of the requested redundancy set. There | may be one or more P-LUIs per create/modify redundancy set request. | The extent defines the position and range of the redundancy | set P-LBAs within the P-LUI. The extent may include check | data space. The parameters which define the check data mapping depend on the redundancy type identifier. For a redundancy type identifier of no redundancy there are no check data parameters. For a redundancy type identifier of mirrored redundancy the check data parameters are: -Mirrored Logical Unit Identifier -Start LBA Mirrored LUI is a parameter which points to a device which | becomes the mirror of the P-LUI within the redundancy set. | There may be one or more mirrored LUIs per P-LUI within a | redundancy set request. | Start LBA is the first LBA on the mirrored LUI. Note:The number of LBAs on the mirrored LUI shall be equal to | the number of LBAs of the P-LUI. For a redundancy type identifier of striped redundancy the check data parameters are: | -Start Interleave P-LBA -Interleave ratio (check data to user data) | 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 R-LBA. Interleave ratio defines the check data mapping. The interleave ratio contains the following parameters: | -Granularity of Units (bit, byte, logical block, etc.) -Number of units of check data -Number of units of user data | -Type of Check Data (??) <> The check data mapping within the P-LUI repeats until the end of the range defined by the extent is reached. The interleave shall begin with check data. An example of how check data would be interleaved with user data follows: Number or units of check data = 2 Number or units of user data = 4 Start LBA Last Unit Start Interleave LBA | | | | V 1st P-LUI 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 LBA Last Unit | | Start Interleave LBA | | | | | | V V 2nd P-LUI 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 LBA Last Unit | | Start Interleave LBA | | | | | | V V 3rd P-LUI 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 3.2.1.4 Delete Redundancy Set Service The delete redundancy set service provides a parameter list which indicates the redundancy set to delete. The redundancy set to delete is defined by the following parameter: | -Redundancy Set Logical Unit Identifier (R-LUI) | The R-LUI defines the address of the redundancy set to be | deleted. | If any volume sets are associated with the R-LUI to be | deleted the delete redundancy set service request shall be | rejected. 3.2.2 Volume Set Services The volume set services provide for the creation, modification, and deletion of volume sets. A volume set is a set which contains one or more redundancy | sets and a range of V-LBAs which hold user data. | The following figure shows a relationship between the check | data and protected space before any volume sets have been | defined. Redundancy Set(a) Redundancy Set(b) | ---------------------------------------------- | / | \ | / | \ | / Protected Space(a) | Protected Space(b) \ | / | \ | /---- ----- | ----- ----- \ | / \ / \ | / \ / \ \ | / Check \ / Check \ | / Check \ / Check \ \ | \ Data / \ Data / | \ Data / \ Data / / | \(a) / \(a) / | \(b) / \(b) / / | \---- ----- | ----- ----- / | \ | / | \ | / | \ | / | \ | / | ---------------------------------------------- | 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 sets. | Volume Set (1) | ==========================================----- | // | || \ | // | || \ | // Protected Space(a) | Protected Space(b) \ | // | || \ | //---- ----- | ----- -----|| \ | // \ / \ | / \ / \\ \ | // Check \ / Check \ | / Check \ / Check \\Unassigned\ | \\ Data / \ Data / | \ Data / \ Data // Space / | \\(a) / \(a) / | \(b) / \(b) // / | \\---- ----- | ----- -----|| / | \\ | || / | \\ | || / | \\ User Data (1) || / | \\ | || / | ==========================================----- | Redundancy Set(a) Redundancy Set(b) = - Volume Set Boundary 3.2.2.1 Report Volume Sets Service The report volume sets service provides a parameter list which contains the following information for each volume set within the SDA: | -Volume Set Logical Unit Identifier (V-LUI) -Volume Set Type Identifier | -State of the Volume Set | The V-LUI defines the address of the volume set. The volume set type identifier parameter defines the of user data mapping within the volume set. See 3.2.2.2 for a description of the volume set type identifiers. | The state of the volume set indicates the current state | of the volume set. See x.x.x for a list of states. 3.2.2.2 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 which defines the boundaries of a volume set and the user data mapping within that volume set. The volume set is defined by the following parameters: -Volume Set Logical Unit Identifier (V-LUI) -Volume Set Type Identifier | -Physical Logical Unit Identifier (P-LUI) | -Extent | -User Data Mapping The parameter list which defines the volume set may contain | one or more P-LUIs. For each P-LUI the parameter list shall contain an extent and a user data mapping. | The V-LUI defines the address to be assigned to the volume set being created. The volume set type identifier parameter defines the of user data mapping within the volume set as one of the following: -Linear Mapping -Striped Mapping | In a volume set which has a linear mapping the V-LBAs are numbered consecutively on devices within the volume set. With | linear mapping the next V-LBA after the last one on a device | is the first V-LBA of the next device within the volume set. | The V-LBA numbering skips over any C-LBAs. Volume Set Device 1 Device 2 ... Volume -------- Volume -------- V-LBA |P-LBA | V-LBA |P-LBA | 0 | 0 | x+1 | 0 | 1 | 1 | X+2 | 1 | 2 | 2 | x+3 | 2 | . | . | . | . | . | . | . | . | . | . | . | . | x | x | 2x+1 | x | -------- -------- | In a volume set which has striped mapping the V-LBAs are striped across the devices within the volume set. The | mapping of the V-LBAs is defined by the user data mapping parameters. | P-LUI is a parameter which points to a device which will | become all or part of the requested volume set. There may be | one or more P-LUIs per create/modify volume set request. | The extent defines the position and range of the volume | set P-LBAs within the P-LUI. The extent may include check | data space. The parameters which define the user data mapping depend on the volume set type identifier. For a volume set type identifier of linear mapping there are no user data parameters. User data mapping parameters: | -Granularity of Units (bit, byte, logical block, etc.) | -Segment Size | -Device Stripe Depth | Any units defined as check data are counted to determine when | the segment end is reached. However, the user data unit | numbering skips over any check data units. | Segment size is the number of contiguous units to count on a | device before proceeding to another device. | Device stripe depth is used to determine the number of | contiguous devices to count before looping back to the first | device within the current stripe. This looping continues | until all the units of an extent are used up. When the | current stripes' extent is used up the mapping continues to | the next device. When the last device of the volume set is | reached the mapping loops back to the first device. This | mapping continues until all the extents are mapped. | <> EXAMPLE 1 | Granularity of Units = Logical Blocks Segment Size = 2 | Device Stripe Depth = 3 Volume Set Device 1 Device 2 Device 3 -------- -------- -------- | V-LBA |P-LBA | V-LBA |P-LBA | V-LBA |P-LBA | | cd | 0 | 1 | 0 | 2 | 0 | | 0 | 1 | cd | 1 | 3 | 1 | | 4 | 2 | 5 | 2 | cd | 2 | | cd | 3 | 6 | 3 | 7 | 3 | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -------- -------- -------- | cd - Check Data Logical Block Address EXAMPLE 2 | Granularity of Units = Logical Blocks | Segment Size = 2 | Device Stripe Depth = 2 Volume Set | Device 1 Device 2 Device 3 Device 4 | -------- -------- -------- -------- | V-LBA |P-LBA | V-LBA |P-LBA | V-LBA |P-LBA | V-LBA |P-LBA | | cd | 0 | 1 | 0 | 6 | 0 | 8 | 0 | | 0 | 1 | cd | 1 | 7 | 1 | 9 | 1 | | 2 | 2 | 4 | 2 | cd | 2 | 11 | 2 | | 3 | 3 | 5 | 3 | 10 | 3 | cd | 3 | | eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee | cd | 4 | 13 | 4 | 18 | 4 | 20 | 4 | | 12 | 5 | cd | 5 | 19 | 5 | 21 | 5 | | 14 | 6 | 16 | 6 | cd | 6 | 23 | 6 | | 15 | 7 | 17 | 7 | 22 | 7 | cd | 7 | | -------- -------- -------- -------- | cd - Check Data Logical Block Address | e - Extent boundary 3.2.2.3 Delete Volume Set Service The delete volume set service provides a parameter list which indicates the volume set to delete. The volume set to delete is defined by the following parameter: -Volume Set Logical Unit Identifier (V-LUI) The V-LUI defines the address of the volume set to be deleted. 3.2.3 Spare Pool Services The spare pool services provide for the creation, modification, and deletion of spare pools. The spare pool is a range of LBAs which will replace a failed range of LBAs within a redundancy set. The redundancy set which contains the failed range of LBAs must be associated with a spare pool before the replacement can occur. 3.2.3.1 Report Spare Pools Service The report spare pools service provides a parameter list which contains the following information for each spare pool within the SDA: -Spare Set Logical Unit Identifier (S-LUI) -Redundancy Set Logical Unit Identifier (R-LUI) The S-LUI defines the address of the spare set. The R-LUI defines the address of the Redundancy set that the spare pool has been assigned. There may be one or more R-LUIs associated with each spare pool. 3.2.3.2 Create/Modify Spare Pool Service | The create/modify spare pool service provides for the | creation of new spare pools and the modification of | existing spare pools. | The create/modify spare pool service provides a parameter | list which defines the boundaries of a spare pool and the | redundancy set(s) it is associated with. The spare pool is defined by the following parameters: -Spare Pool Logical Unit Identifier (S-LUI) -Physical Logical Unit Identifier (P-LUI) | -Extent -Redundancy Set Logical Unit Identifier (R-LUI) The parameter list which defines the spare pool may contain | one or more R-LUIs. | The S-LUI defines the address to be assigned to the spare | pool being created. P-LUI is a parameter which points to a device which will become all or part of the requested spare pool. There shall be only one P-LUI per create spare pool request. | The extent defines the position and range of the spare pool | P-LBAs within the P-LUI. | R-LUI parameter is the address of the redundancy set associated with this spare pool. There may be one or more redundancy set(s) associated with a spare pool. 3.2.3.3 Delete spare pool Service The delete spare pool service provides a parameter list which indicates the spare pool to delete. The spare pool to delete is defined by the following parameter: -Spare Pool Logical Unit Identifier (S-LUI) The S-LUI defines the address of the spare pool to be deleted. 3.2.6 Reporting informational exception conditions The higher level 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 3.3 SCSI Disk Array Services The disk array conversion layer performs the following services: | -Recalculate the check data associated with a volume set, | -Recalculate the check data within a redundancy set, | -Reconstruct the user data associated with a redundancy set using check data information or duplicate data, -Verify user data within a volume set, | -Verify check data within a redundancy set, -Enable/Disable writes, | -Enable/Disable generation of the check data associated with a volume set, -Enable/Disable generation of check data within a redundancy set, | -Initialize a volume set, and | -Initialize a redundancy set. 4.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 set and(or) check data within the redundancy | set using the contents of the redundancy set. | -Recalculation of the check data associated with a volume set. | -Recalculation of the check data within a redundancy set. -Determines when a LBA range 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. 5.0 Exception Conditions Exception conditions inform a higher level that: | -a change occurred in the physical configuration, | -a change occurred in a volume set configuration, | -a change occurred in a redundancy set 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 a higher level. 6.0 System 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 which 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) 6.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. 6.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 which 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) 7.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 which 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 target 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 contain 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. 7.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) | | -------------- 7.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) | | -------------- 7.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) | | -------------- 7.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) | | -------------- 7.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) | | --------------