Revert revision 254095
authorMarcel Moolenaar <marcel@FreeBSD.org>
Tue, 5 Mar 2019 04:15:34 +0000 (04:15 +0000)
committerMarcel Moolenaar <marcel@FreeBSD.org>
Tue, 5 Mar 2019 04:15:34 +0000 (04:15 +0000)
commit96937e3b23a041cee5e39e4b8d7bc3cc3603c846
tree51b1dfb91a49a26f4e2d937882436f64de47f060
parent9ae4c2a48d1c00624011ff4c92f3f22b638e84b8
Revert revision 254095

In revision 254095, gpt_entries is not set to match the on-disk
hdr_entries, but rather is computed based on available space.
There are 2 problems with this:

1.  The GPT backend respects hdr_entries and only reads and writes
    that number of partition entries.  On top of that, CRC32 is
    computed over the table that has hdr_entries elements.  When
    the common code works on what is possibly a larger number, the
    behaviour becomes inconsistent and problematic.  In particular,
    it would be possible to add a new partition that on a reboot
    isn't there anymore.
2.  The calculation of gpt_entries is based on flawed assumptions.
    The GPT specification does not dictate that sectors are layed
    out in a particular way that the available space can be
    determined by looking at LBAs.  In practice, implementations
    do the same thing, because there's no reason to do it any
    other way.  Still, GPT allows certain freedoms that can be
    exploited in some form or shape if the need arises.

PR: 229977
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D19438
sys/geom/part/g_part_gpt.c