diff options
author | Rod Smith <rodsmith@rodsbooks.com> | 2017-07-23 11:50:17 -0400 |
---|---|---|
committer | Rod Smith <rodsmith@rodsbooks.com> | 2017-07-23 11:50:17 -0400 |
commit | 0dfa506ba6e999c511dd69b688e24ab8884f4a1a (patch) | |
tree | 36d0d288c25879e8aef7df16bc46f5ae3bac77e6 /gpt.cc | |
parent | 503e9ada12d38394381442a944d5c9da847800b6 (diff) | |
download | sgdisk-0dfa506ba6e999c511dd69b688e24ab8884f4a1a.tar.gz |
Added a couple of new verification checks and minor tweaks.
Diffstat (limited to 'gpt.cc')
-rw-r--r-- | gpt.cc | 24 |
1 files changed, 23 insertions, 1 deletions
@@ -276,7 +276,7 @@ int GPTData::Verify(void) { << "The 'e' option on the experts' menu may fix this problem.\n"; } // if - // Check the main and backup partition tables for overlap with things + // Check the main and backup partition tables for overlap with things and unusual gaps if (mainHeader.partitionEntriesLBA + GetTableSizeInSectors() > mainHeader.firstUsableLBA) { problems++; cout << "\nProblem: Main partition table extends past the first usable LBA.\n" @@ -292,6 +292,28 @@ int GPTData::Verify(void) { cout << "\nProblem: The backup partition table overlaps the backup header.\n" << "Using 'e' on the experts' menu may fix this problem.\n"; } // if + if (mainHeader.partitionEntriesLBA != 2) { + cout << "\nWarning: There is a gap between the main metadata (sector 1) and the main\n" + << "partition table (sector " << mainHeader.partitionEntriesLBA + << "). This is helpful in some exotic configurations,\n" + << "but is generally ill-advised. Using 'j' on the experts' menu can adjust this\n" + << "gap.\n"; + } // if + if (mainHeader.partitionEntriesLBA + GetTableSizeInSectors() != mainHeader.firstUsableLBA) { + cout << "\nWarning: There is a gap between the main partition table (ending sector " + << mainHeader.partitionEntriesLBA + GetTableSizeInSectors() - 1 << ")\n" + << "and the first usable sector (" << mainHeader.firstUsableLBA << "). This is helpful in some exotic configurations,\n" + << "but is unusual. The util-linux fdisk program often creates disks like this.\n" + << "Using 'j' on the experts' menu can adjust this gap.\n"; + } // if + + if (mainHeader.sizeOfPartitionEntries * mainHeader.numParts < 16384) { + cout << "\nWarning: The size of the partition table (" << mainHeader.sizeOfPartitionEntries * mainHeader.numParts + << " bytes) is less than the minimum\n" + << "required by the GPT specification. Most OSes and tools seem to work fine on\n" + << "such disks, but this is a violation of the GPT specification and so may cause\n" + << "problems.\n"; + } // if if ((mainHeader.lastUsableLBA >= diskSize) || (mainHeader.lastUsableLBA > mainHeader.backupLBA)) { problems++; |