Added a couple of new verification checks and minor tweaks.
This commit is contained in:
1
Makefile
1
Makefile
@@ -44,6 +44,7 @@ depend: $(SRCS)
|
|||||||
$(OBJS):
|
$(OBJS):
|
||||||
$(CRITICAL_CXX_FLAGS)
|
$(CRITICAL_CXX_FLAGS)
|
||||||
|
|
||||||
|
# makedepend dependencies below -- type "makedepend *.cc" to regenerate....
|
||||||
# DO NOT DELETE
|
# DO NOT DELETE
|
||||||
|
|
||||||
attributes.o: /usr/include/stdint.h /usr/include/features.h
|
attributes.o: /usr/include/stdint.h /usr/include/features.h
|
||||||
|
|||||||
3
NEWS
3
NEWS
@@ -1,6 +1,9 @@
|
|||||||
1.0.2 (?/??/2017):
|
1.0.2 (?/??/2017):
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
|
- Addition of new verification checks, mostly (but not exclusively) related
|
||||||
|
to the new j/-j/--move-main-table option.
|
||||||
|
|
||||||
- Added new option: 'j' on the experts' menu in gdisk;
|
- Added new option: 'j' on the experts' menu in gdisk;
|
||||||
'-j/--move-main-table={sector}' in sgdisk. This option enables relocating
|
'-j/--move-main-table={sector}' in sgdisk. This option enables relocating
|
||||||
the main partition table from sector 2 (the default location) to somewhere
|
the main partition table from sector 2 (the default location) to somewhere
|
||||||
|
|||||||
24
gpt.cc
24
gpt.cc
@@ -276,7 +276,7 @@ int GPTData::Verify(void) {
|
|||||||
<< "The 'e' option on the experts' menu may fix this problem.\n";
|
<< "The 'e' option on the experts' menu may fix this problem.\n";
|
||||||
} // if
|
} // 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) {
|
if (mainHeader.partitionEntriesLBA + GetTableSizeInSectors() > mainHeader.firstUsableLBA) {
|
||||||
problems++;
|
problems++;
|
||||||
cout << "\nProblem: Main partition table extends past the first usable LBA.\n"
|
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"
|
cout << "\nProblem: The backup partition table overlaps the backup header.\n"
|
||||||
<< "Using 'e' on the experts' menu may fix this problem.\n";
|
<< "Using 'e' on the experts' menu may fix this problem.\n";
|
||||||
} // if
|
} // 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)) {
|
if ((mainHeader.lastUsableLBA >= diskSize) || (mainHeader.lastUsableLBA > mainHeader.backupLBA)) {
|
||||||
problems++;
|
problems++;
|
||||||
|
|||||||
6
mbr.cc
6
mbr.cc
@@ -31,12 +31,6 @@ using namespace std;
|
|||||||
MBRData::~MBRData(void) {
|
MBRData::~MBRData(void) {
|
||||||
} // MBRData destructor
|
} // MBRData destructor
|
||||||
|
|
||||||
/* // Assignment operator -- copy entire set of MBR data.
|
|
||||||
MBRData & MBRData::operator=(const MBRData & orig) {
|
|
||||||
BasicMBRData::operator=(orig);
|
|
||||||
return *this;
|
|
||||||
} // MBRData::operator=() */
|
|
||||||
|
|
||||||
// Assignment operator -- copy entire set of MBR data.
|
// Assignment operator -- copy entire set of MBR data.
|
||||||
MBRData & MBRData::operator=(const BasicMBRData & orig) {
|
MBRData & MBRData::operator=(const BasicMBRData & orig) {
|
||||||
BasicMBRData::operator=(orig);
|
BasicMBRData::operator=(orig);
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ uint64_t GetNumber(uint64_t low, uint64_t high, uint64_t def, const string & pro
|
|||||||
cin.getline(line, 255);
|
cin.getline(line, 255);
|
||||||
if (!cin.good())
|
if (!cin.good())
|
||||||
exit(5);
|
exit(5);
|
||||||
num = sscanf(line, "%ld", &response);
|
num = sscanf(line, "%lld", &response);
|
||||||
if (num == 1) { // user provided a response
|
if (num == 1) { // user provided a response
|
||||||
if ((response < low) || (response > high))
|
if ((response < low) || (response > high))
|
||||||
cout << "Value out of range\n";
|
cout << "Value out of range\n";
|
||||||
|
|||||||
Reference in New Issue
Block a user