diff options
author | Karel Zak <kzak@redhat.com> | 2009-11-03 12:00:23 +0100 |
---|---|---|
committer | Karel Zak <kzak@redhat.com> | 2009-11-18 11:25:10 +0100 |
commit | 8947b52ba06e6ab34bc0b256c2379b476487876a (patch) | |
tree | 7bf801086216a0297ff5ca31588ced206c35a6dc /fdisk | |
parent | edd7b95838507cbdac2cac54ffa0815391bdaa14 (diff) | |
download | util-linux-old-8947b52ba06e6ab34bc0b256c2379b476487876a.tar.gz |
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>
Diffstat (limited to 'fdisk')
-rw-r--r-- | fdisk/fdisk.c | 40 |
1 files changed, 36 insertions, 4 deletions
diff --git a/fdisk/fdisk.c b/fdisk/fdisk.c index 4daa0148..f269164c 100644 --- a/fdisk/fdisk.c +++ b/fdisk/fdisk.c @@ -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; @@ -770,6 +773,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; struct pte *pex; @@ -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; } |