Port MTD structures to use 64-bit byte offsets instead of sectors.
As per the discussion on issue 221745 we will be using 64-bit byte offsets
for the MTD partition table and converting to/from sectors internally in cgpt.
Existing interfaces do not change, eg sizes are still reported in sectors, only
the on-disk representation is affected.
BRANCH=none
BUG=chromium:221745
TEST=unit tests pass
Change-Id: Id312d42783acfdabe6eb8aea11dcbd298e00a100
Reviewed-on: https://gerrit.chromium.org/gerrit/60919
Commit-Queue: Albert Chaulk <achaulk@chromium.org>
Reviewed-by: Albert Chaulk <achaulk@chromium.org>
Tested-by: Albert Chaulk <achaulk@chromium.org>
diff --git a/tests/cgptlib_test.c b/tests/cgptlib_test.c
index ba9cd05..1ee551d 100644
--- a/tests/cgptlib_test.c
+++ b/tests/cgptlib_test.c
@@ -225,8 +225,8 @@
Memcpy(mtd->primary.signature, MTD_DRIVE_SIGNATURE,
sizeof(mtd->primary.signature));
- mtd->primary.first_lba = 32;
- mtd->primary.last_lba = DEFAULT_DRIVE_SECTORS - 1;
+ mtd->primary.first_offset = 32 * DEFAULT_SECTOR_SIZE;
+ mtd->primary.last_offset = DEFAULT_DRIVE_SECTORS * DEFAULT_SECTOR_SIZE - 1;
mtd->primary.size = MTD_DRIVE_V1_SIZE;
/* These values are not used directly by the library, but they are checked */
@@ -236,20 +236,20 @@
mtd->fts_block_size = 1;
partitions = &mtd->primary.partitions[0];
- partitions[0].starting_lba = 34;
- partitions[0].ending_lba = 133;
+ partitions[0].starting_offset = 34 * DEFAULT_SECTOR_SIZE;
+ partitions[0].ending_offset = 134 * DEFAULT_SECTOR_SIZE - 1;
partitions[0].flags =
MTD_PARTITION_TYPE_CHROMEOS_KERNEL << MTD_ATTRIBUTE_TYPE_OFFSET;
- partitions[1].starting_lba = 134;
- partitions[1].ending_lba = 232;
+ partitions[1].starting_offset = 134 * DEFAULT_SECTOR_SIZE;
+ partitions[1].ending_offset = 233 * DEFAULT_SECTOR_SIZE - 1;
partitions[1].flags =
MTD_PARTITION_TYPE_CHROMEOS_ROOTFS << MTD_ATTRIBUTE_TYPE_OFFSET;
- partitions[2].starting_lba = 234;
- partitions[2].ending_lba = 331;
+ partitions[2].starting_offset = 234 * DEFAULT_SECTOR_SIZE;
+ partitions[2].ending_offset = 332 * DEFAULT_SECTOR_SIZE - 1;
partitions[2].flags =
MTD_PARTITION_TYPE_CHROMEOS_KERNEL << MTD_ATTRIBUTE_TYPE_OFFSET;
- partitions[3].starting_lba = 334;
- partitions[3].ending_lba = 430;
+ partitions[3].starting_offset = 334 * DEFAULT_SECTOR_SIZE;
+ partitions[3].ending_offset = 431 * DEFAULT_SECTOR_SIZE - 1;
partitions[3].flags =
MTD_PARTITION_TYPE_CHROMEOS_ROOTFS << MTD_ATTRIBUTE_TYPE_OFFSET;
@@ -809,8 +809,8 @@
EXPECT(GPT_ERROR_OUT_OF_REGION == CheckEntries(e1, h1));
BuildTestMtdData(mtd);
- if (mh->first_lba > 0) {
- me[0].starting_lba = mh->first_lba - 1;
+ if (mh->first_offset > 0) {
+ me[0].starting_offset = mh->first_offset - 1;
mh->crc32 = MtdHeaderCrc(mh);
EXPECT(GPT_ERROR_OUT_OF_REGION == MtdCheckEntries(me, mh));
}
@@ -822,7 +822,7 @@
EXPECT(GPT_ERROR_OUT_OF_REGION == CheckEntries(e1, h1));
BuildTestMtdData(mtd);
- me[0].ending_lba = mh->last_lba + 1;
+ me[0].ending_offset = mh->last_offset + 1;
mh->crc32 = MtdHeaderCrc(mh);
EXPECT(GPT_ERROR_OUT_OF_REGION == MtdCheckEntries(me, mh));
@@ -833,7 +833,7 @@
EXPECT(GPT_ERROR_OUT_OF_REGION == CheckEntries(e1, h1));
BuildTestMtdData(mtd);
- me[0].starting_lba = me[0].ending_lba + 1;
+ me[0].starting_offset = me[0].ending_offset + 1;
mh->crc32 = MtdHeaderCrc(mh);
EXPECT(GPT_ERROR_OUT_OF_REGION == MtdCheckEntries(me, mh));
@@ -846,7 +846,7 @@
BuildTestMtdData(mtd);
me[0].flags = 0;
- me[0].starting_lba = me[0].ending_lba + 1;
+ me[0].starting_offset = me[0].ending_offset + 1;
mh->crc32 = MtdHeaderCrc(mh);
EXPECT(GPT_SUCCESS == MtdCheckEntries(me, mh));
@@ -928,8 +928,10 @@
SetGuid(&e[j].unique, j);
e[j].starting_lba = cases[i].entries[j].starting_lba;
e[j].ending_lba = cases[i].entries[j].ending_lba;
- me[j].starting_lba = cases[i].entries[j].starting_lba;
- me[j].ending_lba = cases[i].entries[j].ending_lba;
+ me[j].starting_offset = cases[i].entries[j].starting_lba *
+ DEFAULT_SECTOR_SIZE;
+ me[j].ending_offset = cases[i].entries[j].ending_lba *
+ DEFAULT_SECTOR_SIZE;
}
RefreshCrc32(gpt);