[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#574795: Libata transition and HPA caused disk size truncation



On Sun, 2010-03-21 at 03:33 +0100, Cesare Leonardi wrote:
> Package: linux-image-2.6.32-4-686
> Version: 2.6.32-10
> Severity: normal
>
> I will be verbose mainly to help the kernel team, because i suspect
> this problem will arise for others during this libata transition.
> Dear maintainter, this bug has documentation purposes: treat it as you
> like. It isn't really a bug: it's a mixture of buggy BIOS and kernel
> design decisions that, on some non-new hardware, can cause serious
> trouble during this transition.
> And however, as reported below, i've already managed to find a
> workaround.

Thank you very much for taking the time to research and document this.

> The problem: after rebooting with the new libata enabled kernel, my
> system immediately stopped the boot phase showing filesystem problems
> and asking me to do an fsck. The reported cause was an home partition
> that overflow the disk size.
> I haven't run the suggested fsck, but rather some investigation and to
> my surprise i discovered that my 160 GB hard disk is now seen as a
> 137 GB!
> As a consequence this made invisible my swap partition (beyond 137 GB)
> and my home partition is partially seen.
[...]
> Then, rebooting with the previous 2.6.32-3-686 kernel i've found these
> messages:
> [    4.563873] hda: Host Protected Area detected.
> [    4.563874]  current capacity is 268435455 sectors (137438 MB)
> [    4.563876]  native  capacity is 312581808 sectors (160041 MB)
> [    4.563880] hda: 268435455 sectors (137438 MB) w/8192KiB Cache, CHS=16709/255/63
> [    4.565793] hda: cache flushes supported
> [    4.565846]  hda: hda1 hda2 hda3
> [    4.592183] hda: p2 size 262148670 exceeds device capacity, enabling native capacity
> [    4.597405] hda: detected capacity change from 137438952960 to 160041885696

This is interesting.  I think we should apply this same workaround to
libata if possible.

> So my BIOS is forcing the OS to see not more than 137 GB.
> Someone say that some vendors work this way to avoid non authorized
> hardware.
> However no BIOS update available, no BIOS settings i can tweak.

I think this is a bug in the BIOS, not any intentional restriction.

The HPA is implemented by the drive and the BIOS must temporarily
override it in order to access a recovery partition.  If the BIOS uses
LBA rather than LBA48 the drive cannot report its full capacity but will
report the maximum size supported by LBA which is 2^28 sectors (about
137 GB).  Then when the BIOS attempts to override any HPA (i.e. make the
entire drive accessible), it actually reduces the accessible size to
this.

[...]
> Ben, kernel team, i only suggest you to add a check in your migration
> script: maybe you can lookup for "Host Protected Area detected" in
> dmesg during the kernel install and, if that string is found, you can
> show a warning message, informing that there can be problem on the next
> reboot. An example:

I don't want to do this.  The behaviour should not change.  But if we
cannot apply that workaround then I will add some sort of warning.

Ben.

-- 
Ben Hutchings
Power corrupts.  Absolute power is kind of neat.
                           - John Lehman, Secretary of the US Navy 1981-1987

Attachment: signature.asc
Description: This is a digitally signed message part


Reply to: