libfdisk: add fdisk_reset_alignment()

Signed-off-by: Karel Zak <kzak@redhat.com>
This commit is contained in:
Karel Zak 2012-12-06 15:04:35 +01:00
parent aa42788d5f
commit c578f9af72
4 changed files with 34 additions and 37 deletions

View File

@ -74,7 +74,6 @@ extern const struct fdisk_label gpt_label;
extern struct fdisk_context *fdisk_new_context_from_filename(const char *fname, int readonly);
extern void fdisk_free_context(struct fdisk_context *cxt);
extern int fdisk_create_disklabel(struct fdisk_context *cxt, const char *name);
extern int fdisk_reset_alignment(struct fdisk_context *cxt);
extern struct fdisk_parttype *fdisk_get_partition_type(struct fdisk_context *cxt, int partnum);
extern int fdisk_set_partition_type(struct fdisk_context *cxt, int partnum,
struct fdisk_parttype *t);

View File

@ -69,39 +69,6 @@ static int __probe_labels(struct fdisk_context *cxt)
return 1; /* not found */
}
/**
* 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;
}
/**
* fdisk_create_disklabel:
* @cxt: fdisk context

View File

@ -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;
}

View File

@ -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