mirror of
git://sourceware.org/git/lvm2.git
synced 2025-01-23 02:05:07 +03:00
Add lvm_vg_open() to open an existing VG for reading or writing.
lvm_vg_open() calls internal vg_read() function which is the entry point for reading an existing VG. In addition to the mode, we include a 'flags' parameter for future extensions. Signed-off-by: Dave Wysochanski <dwysocha@redhat.com>
This commit is contained in:
parent
44482a809e
commit
8b4677dca3
@ -5,6 +5,7 @@ lvm_vg_create
|
||||
lvm_vg_extend
|
||||
lvm_vg_set_extent_size
|
||||
lvm_vg_write
|
||||
lvm_vg_open
|
||||
lvm_vg_close
|
||||
lvm_vg_remove
|
||||
lvm_errno
|
||||
|
23
liblvm/lvm.h
23
liblvm/lvm.h
@ -190,4 +190,27 @@ int lvm_vg_remove(vg_t *vg);
|
||||
*/
|
||||
int lvm_vg_close(vg_t *vg);
|
||||
|
||||
/**
|
||||
* Open an existing VG.
|
||||
*
|
||||
* Open a VG for reading or writing.
|
||||
*
|
||||
* \param libh
|
||||
* Handle obtained from lvm_create.
|
||||
*
|
||||
* \param vgname
|
||||
* Name of the VG to open.
|
||||
*
|
||||
* \param mode
|
||||
* Open mode - either "r" (read) or "w" (read/write).
|
||||
* Any other character results in an error with EINVAL set.
|
||||
*
|
||||
* \param flags
|
||||
* Open flags - currently ignored.
|
||||
*
|
||||
* \return non-NULL VG handle (success) or NULL (failure).
|
||||
*/
|
||||
vg_t *lvm_vg_open(lvm_t libh, const char *vgname, const char *mode,
|
||||
uint32_t flags);
|
||||
|
||||
#endif /* _LIB_LVM_H */
|
||||
|
@ -12,6 +12,9 @@
|
||||
* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include <errno.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "lib.h"
|
||||
#include "lvm.h"
|
||||
#include "toolcontext.h"
|
||||
@ -80,3 +83,26 @@ int lvm_vg_remove(vg_t *vg)
|
||||
bad:
|
||||
return 0;
|
||||
}
|
||||
|
||||
vg_t *lvm_vg_open(lvm_t libh, const char *vgname, const char *mode,
|
||||
uint32_t flags)
|
||||
{
|
||||
uint32_t internal_flags = 0;
|
||||
vg_t *vg;
|
||||
|
||||
if (!strncmp(mode, "w", 1))
|
||||
internal_flags |= READ_FOR_UPDATE;
|
||||
else if (strncmp(mode, "r", 1)) {
|
||||
log_errno(EINVAL, "Invalid VG open mode");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
vg = vg_read((struct cmd_context *)libh, vgname, NULL, internal_flags);
|
||||
if (vg_read_error(vg)) {
|
||||
/* FIXME: use log_errno either here in inside vg_read */
|
||||
vg_release(vg);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return vg;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user