Subject: Re: CVS commit: src/sys/dev/ata
To: Dave Sainty <dave@dtsp.co.nz>
From: Dave Sainty <dave@dtsp.co.nz>
List: source-changes
Date: 07/05/2005 07:51:34
Dave Sainty writes:

> Manuel Bouyer writes:
> 
> > On Sat, Jul 02, 2005 at 04:29:01AM +0000, David Sainty wrote:
> > > [...]
> > > [An alternative approach is to just always drop to LBA48 if the request
> > > happens to pass by sector 0xfffffff and the drive reported as larger than
> > > 0xfffffff sectors.  My understanding is that the 32 bit addressing below
> > > 0x10000000 is purely there as a performance booster, not to resolve a
> > > compatibility issue.]
> > 
> > It is. Some controllers can't do LBA48 properly. Large drives on such
> > controllers currently work fine if limited to 128GB.
> 
> They wouldn't be any worse off under the suggested scheme.  If they
> happen to have one of the crash-on-0xfffffff drives on such a
> controller they STILL couldn't use that sector, because then the drive
> would be crashing now.  And under the suggested scheme they would
> still be able to use the rest of the lower 128GB, like you suggest.

If they don't have a crash-on-0xfffffff drive, but it is over 128GB in
size and the controller can't do LBA48 then I guess they would only be
able to access 2^32-1 sectors instead of 2^32.  Is that really a
problem though?

If we can detect the controllers that can't do LBA48 we can allow them
to try a LBA32 access to 0xfffffff instead.  Though we also know that
some drives/systems would hang at that point.