History log of /haiku/src/add-ons/kernel/partitioning_systems/gpt/Header.cpp
Revision Date Author Comments
# ed7204fa 13-Dec-2019 Alexander von Gluck IV <kallisti5@unixzen.com>

gpt: Correct naming. efi_* also conflicts with some efi headers

Change-Id: I19b5b2c4609da8474b26588ae8d7d4caf72a826b
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2018
Reviewed-by: Fredrik Holmqvist <fredrik.holmqvist@gmail.com>
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>


# b5aaac02 22-Apr-2017 Adrien Destugues <pulkomandy@pulkomandy.tk>

GPT: lower our identify score if only one header is present.

GPT should have its partition table both at the start and end of the
disk. Our GPT partitionning system is able to cope with just one of the
two being available. However this has the unwanted effect that when
erasing only the start of the disk, it is still recognized with its old
GPT scheme.

To avoid this, lower the score of GPT if it finds only one of the two
headers, allowing MBR and BFS to get more priority in that case.

Should fix #12290, #13434.


# 80bc54a5 17-Dec-2016 Jessica Hamilton <jessica.l.hamilton@gmail.com>

partitioning_systems/gpt: write the protective MBR & bootloader

* This fixes booting Haiku when creating a brand new GPT
partition layout with the BIOS/MBR.
* This also fixes boot issues with UEFI based on OVMF, which
rejects GPT partitions that don't have the protective MBR.


# 08006f7c 19-Nov-2015 Jessica Hamilton <jessica.l.hamilton@gmail.com>

efi_gpt: properly fix block offset calculations for partition entries

In 2346363b, had corrected the offset writing to the disk, but missed
correcting the offset for reading from the entries struct.

Instead of writing a block, just write the single entry, simplifying
the offset logic considerably.


# f217aa87 08-Oct-2015 Jessica Hamilton <jessica.l.hamilton@gmail.com>

gpt/Header.cpp: also disable UUID code when _USER_MODE defined.

src/tools/makebootable defines _USER_MODE, which we can check
for in gpt/Header.cpp to remove the dependency on libuuid, as
makebootable only needs read-only access to partition maps
anyway.


# 0baf9d8d 07-Oct-2015 Jessica Hamilton <jessica.l.hamilton@gmail.com>

gpt partitioning: generate uuids for disks & partitions.

Also added src/libs/uuid to tree, sources adapted from
http://git.kernel.org/cgit/fs/ext2/e2fsprogs.git/tree/lib/uuid.


# 2346363b 06-Oct-2015 Jessica Hamilton <jessica.l.hamilton@gmail.com>

gpt partitioning: fix writing of partition entries.

When writing an individual entry to disk, the offset of the entry
was omitted, which resulted in entries not block-aligned to
overwrite previously valid entries. This in turn resulted in the
stored entries CRC no longer matching what was on disk, causing
the partitioning system to fail to identify it as a valid GPT
when read from disk later (e.g. after a reboot).

E.g. if the first entry is the ESP (which it typically is), and
then the second being an entry for a BFS partition, updating the
BFS partition entry would overwrite the entry for the ESP, thus
corrupting the entries table.


# 4a839f2d 25-Jul-2015 Josef Gajdusek <atx@atalax.net>

partitioning_systems/gpt: Fix _IsHeaderValid().

Signed-off-by: Augustin Cavalier <waddlesplash@gmail.com>


# 5bca1dd7 18-Jun-2015 Alexander von Gluck IV <kallisti5@unixzen.com>

GPT: Fix creation of GPT disk systems; resolves #10298

* The alternate / backup block wasn't defined
leading to an invalid configuration.
* This was compounded with another issue that
was resolved a while back with GPT
* gdisk now identifies GPT systems created with
Haiku as valid


# e825d892 09-May-2013 Jérôme Duval <jerome.duval@gmail.com>

efi_gpt: fixes 64 bit warnings


# 9e8f9374 28-Jan-2013 Axel Dörfler <axeld@pinc-software.de>

gpt: Added some missing pieces of supporting the backup header.

* The alternate block was not set correctly.
* The CRC of the backup header was never updated.
* We now dump both headers.


# 52571606 27-Jan-2013 Axel Dörfler <axeld@pinc-software.de>

gpt: Fixed boot loader build.

* Thanks, Alex!


# 953d310a 27-Jan-2013 Axel Dörfler <axeld@pinc-software.de>

gpt: Added support for the backup header/entries.


# ef2558c0 26-Jan-2013 Axel Dörfler <axeld@pinc-software.de>

gpt: Fixed a number of remaining issues.

* The header and table is now correctly written; the backup is still
missing, though.
* The Header class is now responsible for both, the primary, and the
backup header.
* Changed the Header constructors: the block is no longer needed. Also,
under GCC 4 the initialization code accidentally used the read
Header constructor.
* Fixed incorrectly copied GUID - the static_guid cannot be copied
into a guid_t directly.
* Fixed copy&paste bug that would overwrite the offset for the child
partition to be created.
* With all of this in place I successfully created a BFS partition
with a GUID partition table. However, I have not yet tested if other
systems can still read this. Also, creating two partitions doesn't
seem to work yet, either (luckily I only need a single one ;-)).


# ab313893 25-Jan-2013 Axel Dörfler <axeld@pinc-software.de>

Implemented write support, reorganized source files.

* Moved some functionality into their own files so that they can easily
be reused by other code.
* Added crc32() function from FreeBSD. Implemented CRC handling and
validation.
* Implemented missing write functionality.


# 0baf9d8d8d5f4ec141f1c5866fe1bd5a5df26cd9 07-Oct-2015 Jessica Hamilton <jessica.l.hamilton@gmail.com>

gpt partitioning: generate uuids for disks & partitions.

Also added src/libs/uuid to tree, sources adapted from
http://git.kernel.org/cgit/fs/ext2/e2fsprogs.git/tree/lib/uuid.


# 2346363b232bf4666af233a754ea04164ab25092 06-Oct-2015 Jessica Hamilton <jessica.l.hamilton@gmail.com>

gpt partitioning: fix writing of partition entries.

When writing an individual entry to disk, the offset of the entry
was omitted, which resulted in entries not block-aligned to
overwrite previously valid entries. This in turn resulted in the
stored entries CRC no longer matching what was on disk, causing
the partitioning system to fail to identify it as a valid GPT
when read from disk later (e.g. after a reboot).

E.g. if the first entry is the ESP (which it typically is), and
then the second being an entry for a BFS partition, updating the
BFS partition entry would overwrite the entry for the ESP, thus
corrupting the entries table.


# 4a839f2daaeb237f0fb8c5192899c9e0993e762e 25-Jul-2015 Josef Gajdusek <atx@atalax.net>

partitioning_systems/gpt: Fix _IsHeaderValid().

Signed-off-by: Augustin Cavalier <waddlesplash@gmail.com>


# 5bca1dd7af5c6c7a0cb10ee528b47ae52ab6fbd4 18-Jun-2015 Alexander von Gluck IV <kallisti5@unixzen.com>

GPT: Fix creation of GPT disk systems; resolves #10298

* The alternate / backup block wasn't defined
leading to an invalid configuration.
* This was compounded with another issue that
was resolved a while back with GPT
* gdisk now identifies GPT systems created with
Haiku as valid


# e825d892e18b961648f911cc6acf0bcfbbd31258 09-May-2013 Jérôme Duval <jerome.duval@gmail.com>

efi_gpt: fixes 64 bit warnings


# 9e8f937437083a330f440629007ec1ce13221d5b 28-Jan-2013 Axel Dörfler <axeld@pinc-software.de>

gpt: Added some missing pieces of supporting the backup header.

* The alternate block was not set correctly.
* The CRC of the backup header was never updated.
* We now dump both headers.


# 5257160668005086169d9431a56baf55f40dc54e 27-Jan-2013 Axel Dörfler <axeld@pinc-software.de>

gpt: Fixed boot loader build.

* Thanks, Alex!


# 953d310a47372bb97f2b1154d032aa344dbbcb69 27-Jan-2013 Axel Dörfler <axeld@pinc-software.de>

gpt: Added support for the backup header/entries.


# ef2558c0aea88aa525b9ede73710a513dc47de6b 26-Jan-2013 Axel Dörfler <axeld@pinc-software.de>

gpt: Fixed a number of remaining issues.

* The header and table is now correctly written; the backup is still
missing, though.
* The Header class is now responsible for both, the primary, and the
backup header.
* Changed the Header constructors: the block is no longer needed. Also,
under GCC 4 the initialization code accidentally used the read
Header constructor.
* Fixed incorrectly copied GUID - the static_guid cannot be copied
into a guid_t directly.
* Fixed copy&paste bug that would overwrite the offset for the child
partition to be created.
* With all of this in place I successfully created a BFS partition
with a GUID partition table. However, I have not yet tested if other
systems can still read this. Also, creating two partitions doesn't
seem to work yet, either (luckily I only need a single one ;-)).


# ab313893415e1eaed50e2af3b3517b614ee10e8a 25-Jan-2013 Axel Dörfler <axeld@pinc-software.de>

Implemented write support, reorganized source files.

* Moved some functionality into their own files so that they can easily
be reused by other code.
* Added crc32() function from FreeBSD. Implemented CRC handling and
validation.
* Implemented missing write functionality.