[lvm-devel] LVM2/liblvm lvm.h lvm_base.c lvm_lv.c
wysochanski at sourceware.org
wysochanski at sourceware.org
Tue Jul 28 13:16:41 UTC 2009
CVSROOT: /cvs/lvm2
Module name: LVM2
Changes by: wysochanski at sourceware.org 2009-07-28 13:16:40
Modified files:
liblvm : lvm.h lvm_base.c lvm_lv.c
Log message:
Update lvm.h - remove remaining FIXMEs, note limitations of a few functions.
Almost done...
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/liblvm/lvm.h.diff?cvsroot=lvm2&r1=1.38&r2=1.39
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/liblvm/lvm_base.c.diff?cvsroot=lvm2&r1=1.10&r2=1.11
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/liblvm/lvm_lv.c.diff?cvsroot=lvm2&r1=1.10&r2=1.11
--- LVM2/liblvm/lvm.h 2009/07/28 12:19:58 1.38
+++ LVM2/liblvm/lvm.h 2009/07/28 13:16:40 1.39
@@ -20,13 +20,36 @@
#include <stdint.h>
-/******************************** WARNING ********************************/
-/*
+/******************************** WARNING ***********************************
+ *
* NOTE: This API is under development and subject to change at any time.
*
* Please send feedback to lvm-devel at redhat.com
+ *
+ *********************************** WARNING ********************************/
+
+/*************************** Design Overview ********************************/
+
+/*
+ * The API is designed around the following basic LVM objects:
+ * 1) Physical Volume (PV) 2) Volume Group (VG) 3) Logical Volume (LV).
+ *
+ * The library provides functions to list the objects in a system,
+ * get and set object properties (such as names, UUIDs, and sizes), as well
+ * as create/remove objects and perform more complex operations and
+ * transformations. Each object instance is represented by a handle, and
+ * handles are passed to and from the functions to perform the operations.
+ *
+ * A central object in the library is the Volume Group, represented by the
+ * VG handle, vg_t. Performing an operation on a PV or LV object first
+ * requires obtaining a VG handle. Once the vg_t has been obtained, it can
+ * be used to enumerate the pv_t's and lv_t's within that vg_t. Attributes
+ * of these objects can then be queried.
+ *
+ * A volume group handle may be obtained with read or write permission.
+ * Any attempt to change a property of a pv_t, vg_t, or lv_t without
+ * obtaining write permission on the vg_t will fail with EPERM.
*/
-/******************************** WARNING ********************************/
/**
* Retrieve the library version.
@@ -180,9 +203,8 @@
* Override the LVM configuration with a configuration string.
*
* This function is equivalent to the --config option on lvm commands.
- * FIXME: submit a patch to document the --config option
* Once this API has been used to over-ride the configuration,
- * you should use lvm_config_reload to apply the new settings.
+ * use lvm_config_reload to apply the new settings.
*
* \param libh
* Handle obtained from lvm_init.
@@ -559,9 +581,8 @@
* Create a linear logical volume.
* This function commits the change to disk and does _not_ require calling
* lvm_vg_write.
- * FIXME: This function should probably not commit to disk but require calling
- * lvm_vg_write. However, this appears to be non-trivial change until
- * lv_create_single is refactored by segtype.
+ * NOTE: The commit behavior of this function is subject to change
+ * as the API is developed.
*
* \param vg
* VG handle obtained from lvm_vg_create or lvm_vg_open.
@@ -612,11 +633,10 @@
*
* This function commits the change to disk and does _not_ require calling
* lvm_vg_write.
+ * NOTE: The commit behavior of this function is subject to change
+ * as the API is developed.
* Currently only removing linear LVs are possible.
*
- * FIXME: This function should probably not commit to disk but require calling
- * lvm_vg_write.
- *
* \param lv
* Logical volume handle.
*
@@ -689,6 +709,8 @@
/**
* Resize logical volume to new_size bytes.
*
+ * NOTE: This function is currently not implemented.
+ *
* \param lv
* Logical volume handle.
*
@@ -763,6 +785,8 @@
/**
* Resize physical volume to new_size bytes.
*
+ * NOTE: This function is currently not implemented.
+ *
* \param pv
* Physical volume handle.
*
--- LVM2/liblvm/lvm_base.c 2009/07/28 11:03:28 1.10
+++ LVM2/liblvm/lvm_base.c 2009/07/28 13:16:40 1.11
@@ -77,6 +77,9 @@
return 0;
}
+/*
+ * FIXME: submit a patch to document the --config option
+ */
int lvm_config_override(lvm_t libh, const char *config_settings)
{
struct cmd_context *cmd = (struct cmd_context *)libh;
--- LVM2/liblvm/lvm_lv.c 2009/07/28 09:56:48 1.10
+++ LVM2/liblvm/lvm_lv.c 2009/07/28 13:16:40 1.11
@@ -96,6 +96,11 @@
lp->stripe_size = DEFAULT_STRIPESIZE * 2;
}
+/*
+ * FIXME: This function should probably not commit to disk but require calling
+ * lvm_vg_write. However, this appears to be non-trivial change until
+ * lv_create_single is refactored by segtype.
+ */
lv_t *lvm_vg_create_lv_linear(vg_t *vg, const char *name, uint64_t size)
{
struct lvcreate_params lp;
@@ -117,6 +122,10 @@
return lvl->lv;
}
+/*
+ * FIXME: This function should probably not commit to disk but require calling
+ * lvm_vg_write.
+ */
int lvm_vg_remove_lv(lv_t *lv)
{
if (!lv || !lv->vg || vg_read_error(lv->vg))
More information about the lvm-devel
mailing list