From: Karel Zak Date: Mon, 16 Jan 2017 10:20:32 +0000 (+0100) Subject: libfdisk: apply label alignment properties X-Git-Tag: v2.30-rc1~303 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b2140d2f24e046d57f9c653aad2f21732f04a51e;p=thirdparty%2Futil-linux.git libfdisk: apply label alignment properties This fix changes from the previous patches. Signed-off-by: Karel Zak --- diff --git a/libfdisk/src/alignment.c b/libfdisk/src/alignment.c index 15d6140ed7..77ca35dc57 100644 --- a/libfdisk/src/alignment.c +++ b/libfdisk/src/alignment.c @@ -614,6 +614,20 @@ static unsigned long topology_get_grain(struct fdisk_context *cxt) return res; } +/* apply label alignment setting to the context -- if not sure use + * fdisk_reset_alignment() + */ +int fdisk_apply_label_device_properties(struct fdisk_context *cxt) +{ + int rc = 0; + + if (cxt->label && cxt->label->op->reset_alignment) { + DBG(CXT, ul_debugobj(cxt, "appling label device properties...")); + rc = cxt->label->op->reset_alignment(cxt); + } + return rc; +} + /** * fdisk_reset_alignment: * @cxt: fdisk context @@ -638,8 +652,7 @@ int fdisk_reset_alignment(struct fdisk_context *cxt) cxt->last_lba = cxt->total_sectors - 1; /* overwrite default by label stuff */ - if (cxt->label && cxt->label->op->reset_alignment) - rc = cxt->label->op->reset_alignment(cxt); + rc = fdisk_apply_label_device_properties(cxt); DBG(CXT, ul_debugobj(cxt, "alignment reset to: " "first LBA=%ju, last LBA=%ju, grain=%lu [rc=%d]", diff --git a/libfdisk/src/context.c b/libfdisk/src/context.c index 25220f0642..3d0e8754f5 100644 --- a/libfdisk/src/context.c +++ b/libfdisk/src/context.c @@ -621,6 +621,8 @@ int fdisk_assign_device(struct fdisk_context *cxt, fdisk_probe_labels(cxt); + fdisk_apply_label_device_properties(cxt); + /* warn about obsolete stuff on the device if we aren't in * list-only mode and there is not PT yet */ if (!fdisk_is_listonly(cxt) && !fdisk_has_label(cxt) && check_collisions(cxt) < 0) diff --git a/libfdisk/src/fdiskP.h b/libfdisk/src/fdiskP.h index 0f37541d8e..99d7fdc9c1 100644 --- a/libfdisk/src/fdiskP.h +++ b/libfdisk/src/fdiskP.h @@ -415,6 +415,7 @@ extern int fdisk_discover_topology(struct fdisk_context *cxt); extern int fdisk_has_user_device_geometry(struct fdisk_context *cxt); extern int fdisk_apply_user_device_properties(struct fdisk_context *cxt); +extern int fdisk_apply_label_device_properties(struct fdisk_context *cxt); extern void fdisk_zeroize_device_properties(struct fdisk_context *cxt); /* utils.c */