fdisk: print info and recommendations about alignment
* inform user that phy.sector > log.sector * warn user when alignment_offset is not provided does, DOS-compatible mode is enabled and the default geo.sectors are not aligned * suggest to change display units to sectors (oh yes, fdisk default are cylinders...) Signed-off-by: Karel Zak <kzak@redhat.com>
This commit is contained in:
parent
edd7b95838
commit
8947b52ba0
|
@ -752,8 +752,11 @@ warn_cylinders(void) {
|
|||
"2) booting and partitioning software from other OSs\n"
|
||||
" (e.g., DOS FDISK, OS/2 FDISK)\n"),
|
||||
cylinders);
|
||||
}
|
||||
|
||||
if (total_number_of_sectors > UINT_MAX) {
|
||||
static void
|
||||
warn_limits(void) {
|
||||
if (total_number_of_sectors > UINT_MAX && !nowarn) {
|
||||
int giga = (total_number_of_sectors << 9) / 1000000000;
|
||||
int hectogiga = (giga + 50) / 100;
|
||||
|
||||
|
@ -769,6 +772,33 @@ warn_cylinders(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static void
|
||||
warn_alignment(void) {
|
||||
if (nowarn || !alignment_required)
|
||||
return;
|
||||
|
||||
fprintf(stderr, _("\n"
|
||||
"The device presents a logical sector size that is smaller than\n"
|
||||
"the physical sector size. Aligning to a physical sector boundary\n"
|
||||
"is recommended, or performance may be impacted.\n\n"));
|
||||
|
||||
/*
|
||||
* Print warning when sector_offset is not aligned for DOS mode
|
||||
*/
|
||||
if (alignment_offset == 0 && dos_compatible_flag &&
|
||||
!lba_is_aligned(sector_offset))
|
||||
|
||||
fprintf(stderr, _(
|
||||
"WARNING: The device does not provide compensation (alignment_offset)\n"
|
||||
"for DOS-compatible partitioning, but DOS-compatible mode is enabled.\n"
|
||||
"Use command 'c' to switch-off DOS mode.\n\n"));
|
||||
|
||||
if (display_in_cyl_units)
|
||||
fprintf(stderr, _(
|
||||
"It's recommended to change display units to sectors (command 'u').\n\n"));
|
||||
|
||||
}
|
||||
|
||||
static void
|
||||
read_extended(int ext) {
|
||||
int i;
|
||||
|
@ -1193,9 +1223,6 @@ got_dos_table:
|
|||
}
|
||||
}
|
||||
|
||||
warn_cylinders();
|
||||
warn_geometry();
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
struct pte *pe = &ptes[i];
|
||||
|
||||
|
@ -1220,6 +1247,11 @@ got_dos_table:
|
|||
}
|
||||
}
|
||||
|
||||
warn_cylinders();
|
||||
warn_geometry();
|
||||
warn_limits();
|
||||
warn_alignment();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@ Disk testimage doesn't contain a valid partition table
|
|||
Disk testimage: 0 MB, 0 bytes
|
||||
255 heads, 63 sectors/track, 0 cylinders
|
||||
Units = cylinders of 16065 * 512 = 8225280 bytes
|
||||
Sector size (logical/physical): 512 bytes / 512 bytes
|
||||
Disk identifier: 0x00000000
|
||||
|
||||
Nonexistant file
|
||||
|
|
Loading…
Reference in New Issue