]> sourceware.org Git - lvm2.git/commitdiff
Added files lib/lvm.h and lib/lvm_base.c:
authorThomas Woerner <twoerner@redhat.com>
Tue, 24 Feb 2009 13:03:45 +0000 (13:03 +0000)
committerThomas Woerner <twoerner@redhat.com>
Tue, 24 Feb 2009 13:03:45 +0000 (13:03 +0000)
New structure lvm (used as an alias to cmd_context), new type definition lvm_t
for the lvm handle. Added functions lvm_create, lvm_destroy and
lvm_reload_config using the new handle.

Modified test/api/test.c:
Use new lvm.h header file and lvm_t handle.

Removed lib/lvm2.h

Author: Thomas Woerner <twoerner@redhat.com>

WHATS_NEW
lib/Makefile.in
lib/lvm.h [new file with mode: 0644]
lib/lvm2.h [deleted file]
lib/lvm_base.c [new file with mode: 0644]
test/api/test.c

index 06c94ef85c3671fec8e0de6b42de1bf833415de1..bb3e965dd70f3cf19a22e55894b07c1a8f1aacd3 100644 (file)
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
 Version 2.02.45 - 
 ===================================
+  Add lib/lvm.h and lib/lvm_base.c for the new library interface.
   Move tools/version.h to lib/misc/lvm-version.h.
   Split LVM_VERSION into MAJOR, MINOR, PATCHLEVEL, RELEASE and RELEASE_DATE.
   Add system_dir parameter to create_toolcontext().
index 54092cd2f0b950e1e71d0bd215d91dc862b31459..47786a779a11acbd3246849eedc5c4be9a684221 100644 (file)
@@ -1,6 +1,6 @@
 #
 # Copyright (C) 2001-2004 Sistina Software, Inc. All rights reserved.
-# Copyright (C) 2004-2007 Red Hat, Inc. All rights reserved.
+# Copyright (C) 2004-2009 Red Hat, Inc. All rights reserved.
 #
 # This file is part of LVM2.
 #
@@ -86,7 +86,8 @@ SOURCES =\
        report/report.c \
        striped/striped.c \
        uuid/uuid.c \
-       zero/zero.c
+       zero/zero.c \
+       lvm_base.c
 
 ifeq ("@LVM1@", "internal")
   SOURCES +=\
diff --git a/lib/lvm.h b/lib/lvm.h
new file mode 100644 (file)
index 0000000..3b60510
--- /dev/null
+++ b/lib/lvm.h
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2008,2009 Red Hat, Inc. All rights reserved.
+ *
+ * This file is part of LVM2.
+ *
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License v.2.1.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+#ifndef _LIB_LVM_H
+#define _LIB_LVM_H
+
+#include "lvm-version.h"
+
+#include <stdint.h>
+
+struct lvm; /* internal data */
+
+/**
+ * The lvm handle.
+ */
+typedef struct lvm *lvm_t;
+
+/**
+ * Create a LVM handle.
+ *
+ * \param   system_dir
+ *          Set an alternative LVM system directory. Use NULL to use the 
+ *          default value. If the environment variable LVM_SYSTEM_DIR is set, 
+ *          it will override any LVM system directory setting.
+ * \return  A valid LVM handle is returned or NULL if there has been a
+ *          memory allocation problem. You have to check if an error occured
+ *          with the lvm_error function.
+ */
+lvm_t lvm_create(const char *system_dir);
+
+/**
+ * Destroy a LVM handle allocated with lvm_create.
+ *
+ * \param   libh
+ *          Handle obtained from lvm_create.
+ */
+void lvm_destroy(lvm_t libh);
+
+/**
+ * Reload the original configuration from the system directory.
+ *
+ * \param   libh
+ *          Handle obtained from lvm_create.
+ */
+int lvm_reload_config(lvm_t libh);
+
+#endif /* _LIB_LVM_H */
diff --git a/lib/lvm2.h b/lib/lvm2.h
deleted file mode 100644 (file)
index b18cead..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2001-2004 Sistina Software, Inc. All rights reserved.  
- * Copyright (C) 2004-2008 Red Hat, Inc. All rights reserved.
- *
- * This file is part of LVM2.
- *
- * This copyrighted material is made available to anyone wishing to use,
- * modify, copy, or redistribute it subject to the terms and conditions
- * of the GNU Lesser General Public License v.2.1.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-#ifndef _LIB_LVM2_H
-#define _LIB_LVM2_H
-
-#include <stdint.h>
-
-/*
- * Library Initialisation
- * FIXME: For now just #define lvm2_create() and lvm2_destroy() to 
- * create_toolcontext() and destroy_toolcontext()
- */
-struct arg;
-struct cmd_context;
-struct cmd_context *create_toolcontext(unsigned is_long_lived);
-void destroy_toolcontext(struct cmd_context *cmd);
-
-/*
- * lvm2_create
-lvm_handle_t lvm2_create(void);
- *
- * Description: Create an LVM2 handle used in many other APIs.
- *
- * Returns:
- * NULL: Fail - unable to initialise handle.
- * non-NULL: Success - valid LVM2 handle returned
- */
-#define lvm2_create(X) create_toolcontext(1)
-
-/*
- * lvm2_destroy
-void lvm2_destroy(lvm_handle_t h);
- *
- * Description: Destroy an LVM2 handle allocated with lvm2_create
- *
- * Parameters:
- * - h (IN): handle obtained from lvm2_create
- */
-#define lvm2_destroy(X) destroy_toolcontext(X)
-
-#endif
diff --git a/lib/lvm_base.c b/lib/lvm_base.c
new file mode 100644 (file)
index 0000000..f917533
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2008,2009 Red Hat, Inc. All rights reserved.
+ *
+ * This file is part of LVM2.
+ *
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License v.2.1.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#include "lib.h"
+#include "lvm.h"
+#include "toolcontext.h"
+#include "locking.h"
+#include "metadata-exported.h"
+#include "report.h"
+
+lvm_t lvm_create(const char *system_dir)
+{
+       struct cmd_context *cmd;
+
+       /* FIXME: logging bound to handle
+        */
+
+       /* create context */
+       /* FIXME: split create_toolcontext */
+       cmd = create_toolcontext(1, system_dir);
+       if (!cmd)
+               return NULL;
+       /*
+        * FIXME: if an non memory error occured, return the cmd (maybe some
+        * cleanup needed).
+        */
+
+       /* initialization from lvm_run_command */
+       init_error_message_produced(0);
+
+       /* FIXME: locking_type config option needed? */
+       /* initialize locking */
+       if (!init_locking(-1, cmd)) {
+               /* FIXME: use EAGAIN as error code here */
+               log_error("Locking initialisation failed.");
+               lvm_destroy((lvm_t) cmd);
+               return NULL;
+       }
+
+       return (lvm_t) cmd;
+}
+
+void lvm_destroy(lvm_t libh)
+{
+       /* FIXME: error handling */
+       destroy_toolcontext((struct cmd_context *)libh);
+}
+
+int lvm_reload_config(lvm_t libh)
+{
+       /* FIXME: re-init locking needed here? */
+       return refresh_toolcontext((struct cmd_context *)libh);
+}
index de53c46c444138bb29618bedd136b099d97020ac..b7429761e8a28c27ce581ef08cbea585ded3a888 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 2001-2004 Sistina Software, Inc. All rights reserved.  
- * Copyright (C) 2004-2008 Red Hat, Inc. All rights reserved.
+ * Copyright (C) 2004-2009 Red Hat, Inc. All rights reserved.
  *
  * This file is part of LVM2.
  *
@@ -16,7 +16,7 @@
 #include <string.h>
 #include <stdlib.h>
 #include <readline/readline.h>
-#include "lvm2.h"
+#include "lvm.h"
 
 #define MAX_ARGS 64
 
@@ -48,7 +48,7 @@ static int lvm_split(char *str, int *argc, char **argv, int max)
        return *argc;
 }
 
-static int lvmapi_test_shell(void *h)
+static int lvmapi_test_shell(lvm_t libh)
 {
        int argc, i;
        char *input = NULL, *args[MAX_ARGS], **argv;
@@ -99,18 +99,17 @@ static int lvmapi_test_shell(void *h)
                      
 int main (int argc, char *argv[])
 {
-       void *h;
+       lvm_t libh;
 
-       h = lvm2_create();
-       if (!h) {
+       libh = lvm_create(NULL);
+       if (!libh) {
                printf("Unable to open lvm library instance\n");
                return 1;
        }
 
-       lvmapi_test_shell(h);
+       lvmapi_test_shell(libh);
 
-       if (h)
-               lvm2_destroy(h);
+       lvm_destroy(libh);
        return 0;
 }
 
This page took 0.047543 seconds and 5 git commands to generate.