Subject: Re: LBA48_THRESHOLD
To: der Mouse <mouse@Rodents.Montreal.QC.CA>
From: Manuel Bouyer <bouyer@antioche.eu.org>
List: tech-kern
Date: 01/16/2005 01:36:41
On Sat, Jan 15, 2005 at 02:27:12PM -0500, der Mouse wrote:
> > No, because it could then break existing setups of drives supporting
> > LBA48, but with 0x10000000 sectors (so which don't need LBA48),
> > connected to controllers that don't handle LBA48.
>
> I am inclined to doubt any such drives exist; manufacturers generally
> go for round *decimal* numbers of bytes, which means they tend to avoid
> round *binary* numbers of bytes.
Exept that in this case it's a limit of the interface. So they produced
drives with the maximum capacity the interface allows.
There are also a drives with highter capacity, which will announce this
capacity if a jumper is set. This allows larger drives to be functionnal
with legacy hardware/drivers.
> Also, is it possible to report a size of 0x10000000 through LBA?
Yes, it's a 32bit value.
> I
> would tend to doubt it, or the ST3200822A presumably would be doing it.
Or the ST3200822A firmware is buggy.
>
> Or am I missing something else? (I readily admit there's a whole lot
> here I do not really understand, so this is fairly likely.)
>
> > However, instead of the quick, we could probably use the LBA sectors
> > reported to decide when to switch to LBA48, instead of the quirk.
>
> I'm not sure what you mean. You mean,
> wd->sc-wdc_bio.blkno >= LBA-reported-size?
Yes. More specifically, I mean remplace
if (wd->sc_flags & WDF_LBA48 &&
(wd->sc_wdc_bio.blkno > LBA48_THRESHOLD ||
(wd->sc_quirks & WD_QUIRK_FORCE_LBA48) != 0))
with
if (wd->sc_flags & WDF_LBA48 &&
wd->sc_wdc_bio.blkno > LBA-reported-size)
--
Manuel Bouyer <bouyer@antioche.eu.org>
NetBSD: 26 ans d'experience feront toujours la difference
--