]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
libfdisk: apply label alignment properties
authorKarel Zak <kzak@redhat.com>
Mon, 16 Jan 2017 10:20:32 +0000 (11:20 +0100)
committerKarel Zak <kzak@redhat.com>
Mon, 16 Jan 2017 10:20:32 +0000 (11:20 +0100)
This fix changes from the previous patches.

Signed-off-by: Karel Zak <kzak@redhat.com>
libfdisk/src/alignment.c
libfdisk/src/context.c
libfdisk/src/fdiskP.h

index 15d6140ed73b145382c831ea325134b2348838ae..77ca35dc57d0b90b1d939b9112d31519c7586e3e 100644 (file)
@@ -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]",
index 25220f0642c5b0f1558b8ef74ca701628633ed35..3d0e8754f5ab8ad943ce0d8e8ea4b57bdcd58472 100644 (file)
@@ -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)
index 0f37541d8e3b8d56294b845c8060501f9eaadceb..99d7fdc9c19ec44018866b7765e63d29b64aa6af 100644 (file)
@@ -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 */