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:
Karel Zak 2009-11-03 12:00:23 +01:00
parent edd7b95838
commit 8947b52ba0
2 changed files with 37 additions and 4 deletions

View File

@ -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;
}

View File

@ -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