summaryrefslogtreecommitdiffstats
path: root/liblvm
diff options
context:
space:
mode:
authorDave Wysochanski <dwysocha@redhat.com>2009-07-26 20:58:11 +0000
committerDave Wysochanski <dwysocha@redhat.com>2009-07-26 20:58:11 +0000
commit2642ef553a389c5f3f38dc4dbf12ec5618075dcf (patch)
tree32b7010fce6d75cabba8c5376b6b679a4554142c /liblvm
parent63b186b6f74b251b0e1854015cf88789e0a319c1 (diff)
downloadlvm2-2642ef553a389c5f3f38dc4dbf12ec5618075dcf.tar.gz
lvm2-2642ef553a389c5f3f38dc4dbf12ec5618075dcf.tar.xz
lvm2-2642ef553a389c5f3f38dc4dbf12ec5618075dcf.zip
Add lvm_lv_is_active and lvm_lv_is_suspended.
Return whether an LV is active in the kernel (live table) or suspended (table suspend). Author: Dave Wysochanski <dwysocha@redhat.com>
Diffstat (limited to 'liblvm')
-rw-r--r--liblvm/.exported_symbols2
-rw-r--r--liblvm/lvm.h18
-rw-r--r--liblvm/lvm_lv.c19
3 files changed, 39 insertions, 0 deletions
diff --git a/liblvm/.exported_symbols b/liblvm/.exported_symbols
index 6708154d..99114230 100644
--- a/liblvm/.exported_symbols
+++ b/liblvm/.exported_symbols
@@ -17,6 +17,8 @@ lvm_lv_deactivate
lvm_lv_get_uuid
lvm_lv_get_name
lvm_lv_get_size
+lvm_lv_is_active
+lvm_lv_is_suspended
lvm_vg_create
lvm_vg_extend
lvm_vg_set_extent_size
diff --git a/liblvm/lvm.h b/liblvm/lvm.h
index 13c723d2..c2fef96a 100644
--- a/liblvm/lvm.h
+++ b/liblvm/lvm.h
@@ -516,6 +516,24 @@ char *lvm_lv_get_name(const lv_t *lv);
*/
uint64_t lvm_lv_get_size(const lv_t *lv);
+/**
+ * Get the current activation state of a logical volume.
+ *
+ * \param lv
+ * Logical volume handle.
+ * \return 1 if the LV is active in the kernel, 0 if not
+ */
+uint64_t lvm_lv_is_active(const lv_t *lv);
+
+/**
+ * Get the current suspended state of a logical volume.
+ *
+ * \param lv
+ * Logical volume handle.
+ * \return 1 if the LV is suspended in the kernel, 0 if not
+ */
+uint64_t lvm_lv_is_suspended(const lv_t *lv);
+
/************************** physical volume handling ************************/
/**
diff --git a/liblvm/lvm_lv.c b/liblvm/lvm_lv.c
index 78057afe..a2436ed4 100644
--- a/liblvm/lvm_lv.c
+++ b/liblvm/lvm_lv.c
@@ -19,6 +19,7 @@
#include "defaults.h"
#include "segtype.h"
#include "locking.h"
+#include "activate.h"
#include <string.h>
@@ -49,6 +50,24 @@ char *lvm_lv_get_name(const lv_t *lv)
return name;
}
+uint64_t lvm_lv_is_active(const lv_t *lv)
+{
+ struct lvinfo info;
+ if (lv_info(lv->vg->cmd, lv, &info, 1, 0) &&
+ info.exists && info.live_table)
+ return 1;
+ return 0;
+}
+
+uint64_t lvm_lv_is_suspended(const lv_t *lv)
+{
+ struct lvinfo info;
+ if (lv_info(lv->vg->cmd, lv, &info, 1, 0) &&
+ info.exists && info.suspended)
+ return 1;
+ return 0;
+}
+
/* Set defaults for non-segment specific LV parameters */
static void _lv_set_default_params(struct lvcreate_params *lp,
vg_t *vg, const char *lvname,