From: Karel Zak Date: Fri, 13 Jan 2017 11:16:06 +0000 (+0100) Subject: libfdisk: recount size when apply user device properties X-Git-Tag: v2.30-rc1~307 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e86c73164fccf600802612bc033128bcef305341;p=thirdparty%2Futil-linux.git libfdisk: recount size when apply user device properties Signed-off-by: Karel Zak --- diff --git a/libfdisk/src/alignment.c b/libfdisk/src/alignment.c index b874a48f89..c4496fe9f2 100644 --- a/libfdisk/src/alignment.c +++ b/libfdisk/src/alignment.c @@ -337,10 +337,19 @@ int fdisk_apply_user_device_properties(struct fdisk_context *cxt) if (cxt->user_pyh_sector) cxt->phy_sector_size = cxt->user_pyh_sector; - if (cxt->user_log_sector) + if (cxt->user_log_sector) { + uint64_t old_total = cxt->total_sectors; + uint64_t old_secsz = cxt->sector_size; + cxt->sector_size = cxt->min_io_size = cxt->io_size = cxt->user_log_sector; + if (cxt->sector_size != old_secsz) { + cxt->total_sectors = (old_total * (old_secsz/512)) / (cxt->sector_size >> 9); + DBG(CXT, ul_debugobj(cxt, "new total sectors: %ju", cxt->total_sectors)); + } + } + if (cxt->user_geom.heads) cxt->geom.heads = cxt->user_geom.heads; if (cxt->user_geom.sectors)