From: Karel Zak Date: Wed, 20 Aug 2014 09:43:02 +0000 (+0200) Subject: libfdisk: fix fdisk_get_optimal_iosize() and update tests X-Git-Tag: v2.26-rc1~499 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6b11aad26b29d4984965ff1044184117c0955843;p=thirdparty%2Futil-linux.git libfdisk: fix fdisk_get_optimal_iosize() and update tests Signed-off-by: Karel Zak --- diff --git a/disk-utils/fdisk.c b/disk-utils/fdisk.c index b3d1ac311e..cd70dc99b1 100644 --- a/disk-utils/fdisk.c +++ b/disk-utils/fdisk.c @@ -528,7 +528,7 @@ void list_disk_geometry(struct fdisk_context *cxt) bytes, (uintmax_t) fdisk_get_nsectors(cxt)); free(strsz); - if (fdisk_label_require_geometry(lb) || fdisk_use_cylinders(cxt)) + if (lb && (fdisk_label_require_geometry(lb) || fdisk_use_cylinders(cxt))) fdisk_info(cxt, _("Geometry: %d heads, %llu sectors/track, %llu cylinders"), fdisk_get_geom_heads(cxt), fdisk_get_geom_sectors(cxt), diff --git a/libfdisk/src/context.c b/libfdisk/src/context.c index 8aaa497263..4232448175 100644 --- a/libfdisk/src/context.c +++ b/libfdisk/src/context.c @@ -645,12 +645,16 @@ unsigned int fdisk_get_units_per_sector(struct fdisk_context *cxt) * fdisk_get_optimal_iosize: * @cxt: context * + * The optimal I/O is optional and does not have to be provided by device, + * anyway libfdisk never returns zero. If the optimal I/O size is not provided + * then libfdisk returns minimal I/O size or sector size. + * * Returns: optimal I/O size */ unsigned long fdisk_get_optimal_iosize(struct fdisk_context *cxt) { assert(cxt); - return cxt->optimal_io_size; + return cxt->optimal_io_size ? cxt->optimal_io_size : cxt->io_size; } /** diff --git a/tests/expected/fdisk/bsd b/tests/expected/fdisk/bsd index 3965a73a6d..679731efa3 100644 --- a/tests/expected/fdisk/bsd +++ b/tests/expected/fdisk/bsd @@ -10,8 +10,6 @@ Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: - - ------------------- Create 1st primary partition diff --git a/tests/expected/fdisk/gpt b/tests/expected/fdisk/gpt index 2ca66ab842..b5c29b6d81 100644 --- a/tests/expected/fdisk/gpt +++ b/tests/expected/fdisk/gpt @@ -8,8 +8,6 @@ Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: - - ------------------- Create partitions diff --git a/tests/expected/fdisk/mbr-dos-mode b/tests/expected/fdisk/mbr-dos-mode index 62c454a989..1b54d0939d 100644 --- a/tests/expected/fdisk/mbr-dos-mode +++ b/tests/expected/fdisk/mbr-dos-mode @@ -11,8 +11,6 @@ Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: - - ------------------- Create primary partition @@ -194,7 +192,5 @@ Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: - - ------------------- diff --git a/tests/expected/fdisk/mbr-nondos-mode b/tests/expected/fdisk/mbr-nondos-mode index 89396af46f..d24691cd49 100644 --- a/tests/expected/fdisk/mbr-nondos-mode +++ b/tests/expected/fdisk/mbr-nondos-mode @@ -10,8 +10,6 @@ Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: - - ------------------- Create 1st primary partition @@ -208,7 +206,5 @@ Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: - - ------------------- diff --git a/tests/expected/fdisk/oddinput b/tests/expected/fdisk/oddinput index 7a91f8d2fe..0ba07c6691 100644 --- a/tests/expected/fdisk/oddinput +++ b/tests/expected/fdisk/oddinput @@ -3,7 +3,6 @@ f1c9645dbc14efddc7d8a322685f26eb oddinput.img Empty image listing Disk testimage: 10 MiB, 10485760 bytes, 20480 sectors -Geometry: 255 heads, 63 sectors/track, 1 cylinders Units: cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes diff --git a/tests/expected/fdisk/sunlabel b/tests/expected/fdisk/sunlabel index 2ee79436fe..7045b61a78 100644 --- a/tests/expected/fdisk/sunlabel +++ b/tests/expected/fdisk/sunlabel @@ -9,8 +9,6 @@ Units: cylinders of 63 * 512 = 32256 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: sun - - Create first partition e730c7ec8208601f41963f0485147248 sunlabel.img