Along the thread of being helpful to SCSI-to-ATA
Translation (SAT): There's a related capability I think should be addressed
ahead of the Read/Write Long capabilities.
The SCSI SBC-2 standard defines the TB bit in the
Read/Write error recovery mode page as follows:
A transfer block (TB) bit set to zero specifies that the device server shall not transfer a logical block to thedata-in buffer if the logical block is not recovered within the recovery limits specified. A TB bit set to onespecifies that the device server shall transfer a logical block to the data-in buffer before returning CHECKCONDITION status if the logical block is not recovered within the recovery limits specified. The data returnedin this case is vendor-specific. The TB bit does not affect the action taken for recovered data.
The net effect is the ability of a SCSI disk drive to
transfer a block of data read from the media, even though there were
uncorrectable/unrecoverable errors. Presumably (though not specified) the disk
would return data that matches the orignially written data except for the
bits/bytes affected by the media defect. Without a comparable feature in the ATA
command set, the only way SAT device can SATisfy (sorry) the required
behavior for a TB set to one is to manufacture the data - which doesn't really
meet the spirit of what the TB feature was intended to
accomplish.
Perhaps this could be done with some form of read/write
long (or wrong), but the problem with those commands is the ECC algorithm
applied is vendor-specific, and the host application needs to comprehend the
vendor-specific aspects of the device ECC algorithm in order to reliably "plant"
bad ECC that can be distinguished from an actual bad block. I'd like to see a
standard ATA command that allows retrieval of whatever good information can be
extracted from a bad block that isn't dependent on vendor-specific aspects of
the ECC algorithm applied (i.e. doesn't transfer the ECC
bytes).
Bob
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Elliott, Robert (Server Storage)
Sent: Wednesday, June 08, 2005 5:11 PM
To: [email protected]
Subject: [t13] WRITE LONG, SCT Write Long, and WRITE WRONG EXT
ATA offers quite a
few ways to perform WRITE LONG and READ LONG functionality.
1. ATA-3 defined
WRITE LONG (command codes 32h and 33h) and READ LONG
(command codes 22h
and 23h), including a note that "The committe is considering removing READ LONG
and WRITE LONG commands in a future ATA standard." The commands are
obsolete in ATA-4.
2. The SCT (SMART
Command Transport) technical report defines a way to implement WRITE LONG
and READ LONG commands through SMART log pages (supporting 48-bit
LBAs).
Command:
SMART READ LOG, SMART WRITE LOG, READ LOG EXT, or WRITE LOG
EXT
Log address: E0h
(Writes) or E1h (Reads)
SCT Function code:
0001h (Read Long) and 0002h (Write Long)
Those log addresses are marked "Reserved" in
ata7v1r4b.
3. Proposal
e02126, defining new WRITE WRONG EXT and READ WRONG EXT commands, has apparently
been resurrected.
Any
chance of converging on one method? If WRITE WRONG continues, then a SCSI
equivalent would be helpful for the SCSI-to-ATA Translation (SAT)
project.
Since these commands each address a single logical block, it's unclear
how well they will work with long physical
sectors, where the ECC bytes are shared by more than one logical
block.
--
Rob Elliott, [EMAIL PROTECTED]
Hewlett-Packard Industry Standard Server Storage Advanced Technology
https://ecardfile.com/id/RobElliott
Rob Elliott, [EMAIL PROTECTED]
Hewlett-Packard Industry Standard Server Storage Advanced Technology
https://ecardfile.com/id/RobElliott
