[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
bouyer%antioche.eu.org@localhost (Manuel Bouyer) writes:
>> Actually I think someone pointed out that the max sector number
>> for LBA28 is sector 0xffffffe - the maximum value for the 'number of
>> sectors addressable with LBA28' is 0xfffffff.
>that's true in ATA7. but previous standards didn't impose restrictions
>on the content of words 60-61 of IDENTIFY, nor did they state that
>LBA28's last sector is 0xfffffe.
ATA6 (at least the draft I have) shows the same rules and ATA5
doesn't have LBA48.
>I also didn't see in ATA7 restrictions on LBA28's addressing, only on
>the content if words 60-61 of IDENTIFY.
The language in the standard is pretty vague, however, it says
that if a device has more than 0xfffffff blocks, then (60-61)
does impose such a limit on LBA28 addressing.
On the other hand, the standard says that (60-61)
- contain a value one greater than the total number of user-addressable sectors
in 28-bit addressing
- contain the maximum capacity that can be addressed by 28-bit commands.
to me, that's an error as the first clause asks for sector count + 1
and the second clause asks for just the sector count. Also READ NATIVE
MAX ADDRESS (an optional command) shall return 2^28-2 if the device
is larger than 2^28-1 sectors.
So, for devices implementing LBA48, it should be pretty safe to
just use LBA48 for adressing sectors >= 2^28-2 (including ranges
that span that boundary) and LBA28 otherwise.
This is only a problem for devices that are larger than 2^28-2
and do not implement LBA48 (so the size is 2^28-1 or 2^28).
IMHO, there is no such _disk_, but if there is, or you have a
controller that breaks LBA48, then you lose the ability to address
Michael van Elst
"A potential Snark may lurk in every tree."
Main Index |
Thread Index |