diff options
author | Karel Zak | 2012-12-06 15:04:35 +0100 |
---|---|---|
committer | Karel Zak | 2013-03-11 11:20:41 +0100 |
commit | c578f9af729fd6cb4bc64a431b1779df8f94f889 (patch) | |
tree | 3760c8c3cef8d6db09412536c486ed9e355b9901 /libfdisk/src | |
parent | libfdisk: add topology and geometry functions (diff) | |
download | kernel-qcow2-util-linux-c578f9af729fd6cb4bc64a431b1779df8f94f889.tar.gz kernel-qcow2-util-linux-c578f9af729fd6cb4bc64a431b1779df8f94f889.tar.xz kernel-qcow2-util-linux-c578f9af729fd6cb4bc64a431b1779df8f94f889.zip |
libfdisk: add fdisk_reset_alignment()
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'libfdisk/src')
-rw-r--r-- | libfdisk/src/alignment.c | 34 | ||||
-rw-r--r-- | libfdisk/src/libfdisk.h | 3 |
2 files changed, 34 insertions, 3 deletions
diff --git a/libfdisk/src/alignment.c b/libfdisk/src/alignment.c index e06e1afb0..25c0c6467 100644 --- a/libfdisk/src/alignment.c +++ b/libfdisk/src/alignment.c @@ -6,9 +6,6 @@ #include "fdiskP.h" -/* temporary */ -extern int fdisk_reset_alignment(struct fdisk_context *cxt); - /* * Alignment according to logical granulity (usually 1MiB) */ @@ -350,3 +347,34 @@ unsigned long fdisk_topology_get_grain(struct fdisk_context *cxt) return res; } + +/** + * fdisk_reset_alignment: + * @cxt: fdisk context + * + * Resets alignment setting to the default or label specific values. + * + * Returns: 0 on success, < 0 in case of error. + */ +int fdisk_reset_alignment(struct fdisk_context *cxt) +{ + int rc = 0; + + if (!cxt) + return -EINVAL; + + /* default */ + cxt->grain = fdisk_topology_get_grain(cxt); + cxt->first_lba = fdisk_topology_get_first_lba(cxt); + + /* overwrite default by label stuff */ + if (cxt->label && cxt->label->reset_alignment) + rc = cxt->label->reset_alignment(cxt); + + DBG(LABEL, dbgprint("%s alignment reseted to: " + "first LBA=%ju, grain=%lu [rc=%d]", + cxt->label ? cxt->label->name : NULL, + (uintmax_t) cxt->first_lba, + cxt->grain, rc)); + return rc; +} diff --git a/libfdisk/src/libfdisk.h b/libfdisk/src/libfdisk.h index 6ea08bdb0..08df05bed 100644 --- a/libfdisk/src/libfdisk.h +++ b/libfdisk/src/libfdisk.h @@ -68,6 +68,9 @@ extern int fdisk_verify_disklabel(struct fdisk_context *cxt); extern int fdisk_add_partition(struct fdisk_context *cxt, int partnum, struct fdisk_parttype *t); extern int fdisk_delete_partition(struct fdisk_context *cxt, int partnum); +/* alignment.c */ +extern int fdisk_reset_alignment(struct fdisk_context *cxt); + #ifdef __cplusplus } #endif |