mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-21 13:34:40 +03:00
Add lvm2app interfaces to lookup a vgname from a pvid and pvname.
lvm2app forces applications to start with a volume group name, open the volume group, then operate on individual pvs. In some cases the application may want to start with a device name rather than the volume group name. Today, if an application wants to do this, it must iterate through all the volume groups to find the volume group that the specific device is attached to. These new interfaces allow the application to avoid such overhead. Bump the lvm2app version number to 3.
This commit is contained in:
parent
1a832398a7
commit
0d23926e4e
@ -48,3 +48,5 @@ lvm_list_vg_names
|
|||||||
lvm_list_vg_uuids
|
lvm_list_vg_uuids
|
||||||
lvm_vg_create_lv_linear
|
lvm_vg_create_lv_linear
|
||||||
lvm_vg_remove_lv
|
lvm_vg_remove_lv
|
||||||
|
lvm_vgname_from_pvid
|
||||||
|
lvm_vgname_from_device
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2008,2009 Red Hat, Inc. All rights reserved.
|
* Copyright (C) 2008,2009,2010 Red Hat, Inc. All rights reserved.
|
||||||
*
|
*
|
||||||
* This file is part of LVM2.
|
* This file is part of LVM2.
|
||||||
*
|
*
|
||||||
@ -343,6 +343,45 @@ struct dm_list *lvm_list_vg_names(lvm_t libh);
|
|||||||
*/
|
*/
|
||||||
struct dm_list *lvm_list_vg_uuids(lvm_t libh);
|
struct dm_list *lvm_list_vg_uuids(lvm_t libh);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the volume group name given a PV UUID
|
||||||
|
*
|
||||||
|
* \memberof lvm_t
|
||||||
|
*
|
||||||
|
* The memory allocated for the name is tied to the lvm_t handle and will be
|
||||||
|
* released when lvm_quit is called.
|
||||||
|
*
|
||||||
|
* NOTE: This function may scan devices in the system for LVM metadata.
|
||||||
|
*
|
||||||
|
* \param libh
|
||||||
|
* Handle obtained from lvm_init().
|
||||||
|
*
|
||||||
|
* \return
|
||||||
|
* The volume group name for the given PV UUID.
|
||||||
|
* NULL is returned if the PV UUID is not associated with a volume group.
|
||||||
|
*/
|
||||||
|
const char *lvm_vgname_from_pvid(lvm_t libh, const char *pvid);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the volume group name given a device name
|
||||||
|
*
|
||||||
|
* \memberof lvm_t
|
||||||
|
*
|
||||||
|
* The memory allocated for the name is tied to the lvm_t handle and will be
|
||||||
|
* released when lvm_quit is called.
|
||||||
|
*
|
||||||
|
* NOTE: This function may scan devices in the system for LVM metadata.
|
||||||
|
*
|
||||||
|
* \param libh
|
||||||
|
* Handle obtained from lvm_init().
|
||||||
|
*
|
||||||
|
* \return
|
||||||
|
* The volume group name for the given device name.
|
||||||
|
* NULL is returned if the device is not an LVM device.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
const char *lvm_vgname_from_device(lvm_t libh, const char *device);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Open an existing VG.
|
* Open an existing VG.
|
||||||
*
|
*
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
#include "toolcontext.h"
|
#include "toolcontext.h"
|
||||||
#include "locking.h"
|
#include "locking.h"
|
||||||
#include "lvm-version.h"
|
#include "lvm-version.h"
|
||||||
|
#include "metadata-exported.h"
|
||||||
|
|
||||||
const char *lvm_library_get_version(void)
|
const char *lvm_library_get_version(void)
|
||||||
{
|
{
|
||||||
@ -98,3 +99,21 @@ const char *lvm_errmsg(lvm_t libh)
|
|||||||
{
|
{
|
||||||
return stored_errmsg();
|
return stored_errmsg();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char *lvm_vgname_from_pvid(lvm_t libh, const char *pvid)
|
||||||
|
{
|
||||||
|
struct cmd_context *cmd = (struct cmd_context *)libh;
|
||||||
|
char uuid[64] __attribute((aligned(8)));
|
||||||
|
|
||||||
|
if (!id_read_format(uuid, pvid)) {
|
||||||
|
log_error(INTERNAL_ERROR "Unable to convert uuid");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
return find_vgname_from_pvid(cmd, uuid);
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *lvm_vgname_from_device(lvm_t libh, const char *device)
|
||||||
|
{
|
||||||
|
struct cmd_context *cmd = (struct cmd_context *)libh;
|
||||||
|
return find_vgname_from_pvname(cmd, device);
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user