summaryrefslogtreecommitdiffstats
path: root/libfdisk
diff options
context:
space:
mode:
authorKarel Zak2013-01-21 17:10:23 +0100
committerKarel Zak2013-03-11 12:47:31 +0100
commit47b8e7c00207dfcb34de66f1f9458268d4a90f9d (patch)
treea2f5cf0f894bdcfab9934ed200204f46721d9d2e /libfdisk
parentlibfdisk: cleanup fdisk_get_partition_type() returns (diff)
downloadkernel-qcow2-util-linux-47b8e7c00207dfcb34de66f1f9458268d4a90f9d.tar.gz
kernel-qcow2-util-linux-47b8e7c00207dfcb34de66f1f9458268d4a90f9d.tar.xz
kernel-qcow2-util-linux-47b8e7c00207dfcb34de66f1f9458268d4a90f9d.zip
libfdisk: add part_get_status operation
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'libfdisk')
-rw-r--r--libfdisk/src/fdiskP.h5
-rw-r--r--libfdisk/src/label.c19
-rw-r--r--libfdisk/src/libfdisk.h6
3 files changed, 30 insertions, 0 deletions
diff --git a/libfdisk/src/fdiskP.h b/libfdisk/src/fdiskP.h
index 8f9905d81..3a5ab4a7e 100644
--- a/libfdisk/src/fdiskP.h
+++ b/libfdisk/src/fdiskP.h
@@ -145,6 +145,11 @@ struct fdisk_label_operations {
int (*part_set_type)(struct fdisk_context *cxt, struct fdisk_label *lb,
int partnum,
struct fdisk_parttype *t);
+
+ /* returns FDISK_PARTSTAT_* flags */
+ int (*part_get_status)(struct fdisk_context *cxt, struct fdisk_label *lb,
+ int partnum, int *status);
+
/* refresh alignment setting */
int (*reset_alignment)(struct fdisk_context *cxt,
struct fdisk_label *lb);
diff --git a/libfdisk/src/label.c b/libfdisk/src/label.c
index 502df69b4..4716b94a6 100644
--- a/libfdisk/src/label.c
+++ b/libfdisk/src/label.c
@@ -229,6 +229,25 @@ size_t fdisk_get_nparttypes(struct fdisk_context *cxt)
return cxt->label->nparttypes;
}
+/**
+ * fdisk_partition_is_used:
+ * @cxt: fdisk context
+ * @partnum: partition number
+ * @status: returns FDISK_PARTSTAT_* flags
+ *
+ * Returns 0 on success, otherwise, a corresponding error.
+ */
+int fdisk_partition_get_status(struct fdisk_context *cxt, int partnum, int *status)
+{
+ if (!cxt || !cxt->label)
+ return -EINVAL;
+ if (!cxt->label->op->part_get_status)
+ return -ENOSYS;
+
+ return cxt->label->op->part_get_status(cxt, cxt->label, partnum, status);
+}
+
+
/*
* Resets the current used label driver to initial state
*/
diff --git a/libfdisk/src/libfdisk.h b/libfdisk/src/libfdisk.h
index 379fb4d47..967d21e9a 100644
--- a/libfdisk/src/libfdisk.h
+++ b/libfdisk/src/libfdisk.h
@@ -43,6 +43,11 @@ enum fdisk_labeltype {
FDISK_DISKLABEL_ANY = -1
};
+enum {
+ FDISK_PARTSTAT_NONE,
+ FDISK_PARTSTAT_USED /* partition used */
+};
+
/* init.c */
extern void fdisk_init_debug(int mask);
@@ -90,6 +95,7 @@ extern int fdisk_set_partition_type(struct fdisk_context *cxt, int partnum,
extern void fdisk_label_set_changed(struct fdisk_label *lb, int changed);
extern int fdisk_label_is_changed(struct fdisk_label *lb);
+extern int fdisk_partition_get_status(struct fdisk_context *cxt, int partnum, int *status);
/* alignment.c */
extern int fdisk_reset_alignment(struct fdisk_context *cxt);