X3T9.2/88-027 Rev 0 To: X3T9.2 Committee (SCSI) From: Gerry Houlder MPI/CDC Subject: Proposed wording for MODE SELECT This proposal is in response to an action item assigned to me at the Jan. 6-8 Working Group Meeting. The proposed wording is intended to resolve the "square bracket" notes on pages 7-30 and 7-41 of the Rev. 3 SCSI-2 draft plus some concerns that came up during discussion of how to handle values sent to unsupported MODE SELECT parameters. Insert, as the second paragraph after table 7-24 on page 7-30, the following paragraph: "If a target supports saved pages, it may save only one copy of the page for each LUN and have it apply to all initiators or it may save separate copies for each initiator for each LUN. If separate copies are saved, the target must also maintain separate current values for each initiator/LUN combination. The advantage to maintaining separate copies is that each initiator can simultaneously use different values for some parameters without conflicting with the operation of other initiators. For some pages, such as those describing how the media is formatted, it may not make sense to have separate copies for each initiator." In the next paragraph (currently the second paragraph after table 7-24), change the first sentence to read as "If an initiator sends a MODE SELECT that changes any parameters that apply to other initiators, the target may generate a unit attention condition for all affected initiators except the one that issued the MODE SELECT command (see section 6.1.3)." I chose to use the word "..target MAY generate .." because of input from some sequential device makers that object to being required to generate unit attention for MODE SELECT changes. If the working group thinks this should be "SHALL", then so be it. Replace the first paragraph on page 7-31 (the underlined one) with the following two paragraphs: "If the initiator attempts to send an unsupported value to a field (including reserved fields) in the MODE SELECT header, block descriptor, or any page header, the target shall terminate the command with CHECK CONDITION status, set the sense key to ILLEGAL REQUEST, and set the additional error code to INVALID FIELD IN PARAMETER LIST. If the initiator attempts to send a value to a mode parameter field that is not changeable (as reported by the target in a MODE SENSE command requesting changeable values) and that value is different from the value returned in a MODE SENSE requesting current values, the target may either: (1) ignore the new value and complete the command with GOOD status. (2) terminate the command with CHECK CONDITION status, set the sense key to ILLEGAL REQUEST, and set the additional error code to INVALID FIELD IN PARAMETER LIST." Also, the fourth sentence (underlined in Rev. 3) of the second to last paragraph on page 7-31 should be changed slightly. Change "A parameter list length that results in truncation of any descriptor or header .." to read as "A parameter list length that results in truncation of any descriptor, header, or page of parameters ..". This is needed because, if the page length of a page is longer than the number of bytes transferred for that page, the target will set an error condition rather than accept a partial page. The discussion of page length (why was the name complicated to "page-specific parameter length"?) on page 7-41 seems to require the initiator to use the length returned by the target. Unfortunately, that discussion doesn't say that the number of bytes transferred for that page must match the page length (which it should). This gets into resolving the "square bracket" note on page 7-41, as proposed in the next paragraph. In the 4th paragraph after table 7-34 on page 7-41, the second sentence reads "The initiator should set this value ..". Change this to read "The initiator must set this value ..". The 4th sentence reads "The target is permitted to return a parameter length value that is less than the full page length,..". Change it to read "The target is permitted to return a page length value that is less than the full page length defined in this standard,..". Add a sentence after that 4th sentence that reads "The number of bytes transferred must agree with the page- specific parameter lengths of all pages transferred." Does anyone object to changing "page-specific parameter length" back to "page length"? I think the shorter name adds clarity and the name differentiation may keep the reader from confusing this parameter length with the parameter length in the CDB or the sense data length or the block descriptor length. Note that the term "page length" is consistent with the naming of "sense data length" and "block descriptor length". Would we want to add the word "parameter" to the names of these lengths also? Let's direct the editor to change it back to page length! The last paragraph on page 7-41 can be deleted, because the new paragraphs added at the top of page 7-31 covers the same thing. Since this is a MODE SELECT issue, and doesn't apply to MODE SENSE, page 7-31 is a better spot for it. Note that I have not carried over the sentence objected to by Larry and Gary in the square bracket note. I think their objection is valid, and the target shouldn't be required to 'change back' parameters that were successfully changed before a problem was detected.