X3T9.2/89-109 Rev 1 To: X3T9.2 Committee (SCSI) From: Gerry Houlder Imprimis Subject: New COPY Segment Descriptors for Wide SCSI-3 Revision 1 changes the bytes in which the CAT and DC bits are located, from the source and destination address bytes to the source and destination LUN bytes. This leaves the source and destination address fields expandable to 8 bits for future "fiber channel" implementation. Document X3T9.2/89-94 proposes a single connector, 16 bit wide data bus version of SCSI. It also adds rules for allowing up to 32 devices on a 32 bit wide bus. These additional devices cause problems for the COPY command because the segment descriptors only have 3 bit fields for the source and destination device addresses. This is a problem if 32 addresses are allowed; these device address fields need to be 5 bits or some devices cannot be the source or destination of a COPY operation. This proposal defines new COPY Function Codes that do the same operation as the existing codes but use different segment descriptors. These newly defined descriptors contain 5 bit fields for the source and destination device addresses plus all of the other information needed to perform the operation. By using new COPY function codes, backward compatibility with the existing function codes is kept. They can still be used when only the first 8 addresses exist in the system. Also, old devices that don't implement the new function codes can tell immediately that an illegal request has been made without looking past the first byte of the COPY parameter list. There is no change at all to the COPY command bytes or the field definitions in the 4 byte COPY parameter list header. The rest of this proposal points out the changes that are needed to incorporate this into the SCSI standard. Page numbers and section numbers referred to are taken from Rev. 10 of the SCSI-2 draft standard. Text shown in brackets [] are explanations; text not in brackets should go directly into the SCSI standard. [The editor needs to assign appropriate table numbers for tables 7-new1, 7-new2, 7-new3, and 7-new4, and any others that may change.] [Changes to page 7-10:] Table 7-7: COPY Function Codes ================================================================= Peripheral Device Type COPY Segment ---------------------- Function Descriptor Source Destination Code Table Comments ----------------------------------------------------------------- Direct-Access Sequential-Access 0 7-8 (0,4,5,7) (1,2,3,9) Sequential-Access Direct-Access 1 7-8 (1,3,9) (0,4,7) Direct-Access Direct-Access 2 7-9 (0,4,5,7) (0,4,7) Sequential-Access Sequential-Access 3 7-10 (1,3,9) (1,2,3,9) Sequential-Access Sequential-Access 4 7-11 Image Copy (1) (1) Direct-Access Sequential-Access 5 7-new1 32 address (0,4,5,7) (1,2,3,9) Sequential-Access Direct-Access 6 7-new1 32 address (1,3,9) (0,4,7) Direct-Access Direct-Access 7 7-new2 32 address (0,4,5,7) (0,4,7) Sequential-Access Sequential-Access 8 7-new3 32 address (1,3,9) (1,2,3,9) Sequential-Access Sequential-Access 9 7-new4 Image Copy; (1) (1) 32 address ================================================================= The numbers in parenthesis are the peripheral device type codes (see Table 7-17). COPY function code: 00h Direct-access to sequential-access 01h Sequential-access to writable direct-access 02h Direct-access to writable direct-access 03h Sequential-access to sequential-access 04h Sequential-access image copy 05h Direct-access to sequential-access 06h Sequential-access to writable direct-access 07h Direct-access to writable direct-access 08h Sequential-access to sequential-access 09h Sequential-access image copy 0Ah - 0Fh Reserved 10h - 1Fh Vendor specific For the COMPARE command the destination direct-access device does not have to be a writable device. [There are no changes to 7.2.3.1 and 7.2.3.2.] [Changes to 7.2.3.3, starting at page 7-11.] 7.2.3.3. COPY Function Codes 00h, 01h, 05h, and 06h The format of the segment descriptors for COPY transfers between direct-access and sequential-access devices is specified in Table 7-8 for COPY function codes 00h and 01h; it is specified in Table 7-new1 for COPY function codes 05h and 06h. The segment descriptor may be repeated up to 256 times within the parameter list length specified in the command descriptor block. Table 7-8: Segment Descriptor for COPY Function Codes 00h and 01h [Table 7-8 is unchanged, so it is not shown here] Table 7-new1: Segment Descriptor for Function Codes 05h and 06h ============================================================== Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ============================================================== 0 | Reserved | Source Address | -----|-------------------------------------------------------| 1 | CAT | Reserved | Source LUN | -----|-------------------------------------------------------| 2 | Reserved | Destination Address | -----|-------------------------------------------------------| 3 | Reserved | Destination LUN | -----|-------------------------------------------------------| 4 | Reserved | -----|-------------------------------------------------------| 5 | Reserved | -----|-------------------------------------------------------| 6 | (MSB) | -----|--- Sequential-Access Device Block Length ---| 7 | (LSB) | -----|-------------------------------------------------------| 8 | (MSB) | - - -|- - Direct-Access Device Number of Blocks - -| 11 | (LSB) | -----|-------------------------------------------------------| 12 | (MSB) | - - -|- - Direct-Access Device Logical Block Address - -| 15 | (LSB) | ============================================================== [No other changes required for 7.2.3.3.] [Changes to 7.2.3.4, starting at page 7-13.] 7.2.3.4. COPY Function Codes 02h and 07h The format of the segment descriptors for COPY transfers among direct-access devices is specified in Table 7-9 for COPY function code 02h and is specified in Table 7-new2 for COPY function code 07h. The segment descriptor may be repeated up to 256 times within the parameter list length specified in the command descriptor block. Table 7-9: Segment Descriptor for COPY Function Code 02h [Table 7-9 is unchanged, so it is not shown here] Table 7-new2: Segment Descriptor for Function Code 07h ============================================================== Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ============================================================== 0 | Reserved | Source Address | -----|-------------------------------------------------------| 1 | CAT | Reserved | Source LUN | -----|-------------------------------------------------------| 2 | Reserved | Destination Address | -----|-------------------------------------------------------| 3 | DC | Reserved | Destination LUN | -----|-------------------------------------------------------| 4 | (MSB) | -----|--- Number of Blocks ---| 7 | (LSB) | -----|-------------------------------------------------------| 8 | (MSB) | - - -|- - Source Logical Block Address - -| 11 | (LSB) | -----|-------------------------------------------------------| 12 | (MSB) | - - -|- - Destination Logical Block Address - -| 15 | (LSB) | ============================================================== [No other changes required for 7.2.3.4.] [Changes to 7.2.3.5, starting at page 7-14.] 7.2.3.4. COPY Function Codes 03h and 08h The format of the segment descriptors for COPY transfers among sequential-access devices is specified in Table 7-10 for COPY function code 03h and is specified in Table 7-new3 for COPY function code 08h. The segment descriptor may be repeated up to 256 times within the parameter list length specified in the command descriptor block. Table 7-10: Segment Descriptor for COPY Function Code 03h [Table 7-10 is unchanged, so it is not shown here] Table 7-new3: Segment Descriptor for Function Code 08h ============================================================== Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ============================================================== 0 | Reserved | Source Address | -----|-------------------------------------------------------| 1 | CAT | Reserved | Source LUN | -----|-------------------------------------------------------| 2 | Reserved | Destination Address | -----|-------------------------------------------------------| 3 | DC | Reserved | Destination LUN | -----|-------------------------------------------------------| 4 | (MSB) | -----|--- Source Block Length ---| 5 | (LSB) | -----|-------------------------------------------------------| 6 | (MSB) | - - -|- - Destination Block Length - -| 7 | (LSB) | -----|-------------------------------------------------------| 8 | (MSB) | - - -|- - Number of Blocks - -| 11 | (LSB) | ============================================================== [No other changes required for 7.2.3.5.] [Changes to 7.2.3.6, starting at page 7-15.] 7.2.3.4. COPY Function Codes 04h and 09h The format of the segment descriptors for image COPY transfers among sequential-access devices is specified in Table 7-11 for COPY function code 04h and is specified in Table 7-new4 for COPY function code 09h. The segment descriptor may be repeated up to 256 times within the parameter list length specified in the command descriptor block. Table 7-11: Segment Descriptor for COPY Function Code 04h [Table 7-11 is unchanged, so it is not shown here] Table 7-new4: Segment Descriptor for Function Code 09h ============================================================== Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ============================================================== 0 | Reserved | Source Address | -----|-------------------------------------------------------| 1 | Reserved | Source LUN | -----|-------------------------------------------------------| 2 | Reserved | Destination Address | -----|-------------------------------------------------------| 3 | Reserved | Destination LUN | -----|-------------------------------------------------------| 4 | (MSB) | -----|--- Count ---| 5 | (LSB) | -----|-------------------------------------------------------| 6 | | - - -|- - Reserved - -| 7 | | -----|-------------------------------------------------------| 8 | | - - -|- - Vendor Specific - -| 11 | | ============================================================== [No other changes required for 7.2.3.6.] [End of changes needed.]