mirror of
git://sourceware.org/git/lvm2.git
synced 2025-03-30 10:50:34 +03:00
Export lvm_pv_get_size(), lvm_pv_get_free(), lvm_pv_get_dev_size in lvm2app.
We add these exports to show the pv_size and pv_free and dev_size fields. Fixes rhbz561423. Signed-off-by: Dave Wysochanski <dwysocha@redhat.com>
This commit is contained in:
parent
ed3329eb45
commit
629efc6a89
@ -726,6 +726,9 @@ struct device *pv_dev(const struct physical_volume *pv);
|
||||
const char *pv_vg_name(const struct physical_volume *pv);
|
||||
const char *pv_dev_name(const struct physical_volume *pv);
|
||||
uint64_t pv_size(const struct physical_volume *pv);
|
||||
uint64_t pv_size_field(const struct physical_volume *pv);
|
||||
uint64_t pv_dev_size(const struct physical_volume *pv);
|
||||
uint64_t pv_free(const struct physical_volume *pv);
|
||||
uint64_t pv_status(const struct physical_volume *pv);
|
||||
uint32_t pv_pe_size(const struct physical_volume *pv);
|
||||
uint64_t pv_pe_start(const struct physical_volume *pv);
|
||||
|
@ -3603,6 +3603,38 @@ uint64_t pv_size(const struct physical_volume *pv)
|
||||
return pv_field(pv, size);
|
||||
}
|
||||
|
||||
uint64_t pv_dev_size(const struct physical_volume *pv)
|
||||
{
|
||||
uint64_t size;
|
||||
|
||||
if (!dev_get_size(pv->dev, &size))
|
||||
size = 0;
|
||||
return size;
|
||||
}
|
||||
|
||||
uint64_t pv_size_field(const struct physical_volume *pv)
|
||||
{
|
||||
uint64_t size;
|
||||
|
||||
if (!pv->pe_count)
|
||||
size = pv->size;
|
||||
else
|
||||
size = (uint64_t) pv->pe_count * pv->pe_size;
|
||||
return size;
|
||||
}
|
||||
|
||||
uint64_t pv_free(const struct physical_volume *pv)
|
||||
{
|
||||
uint64_t freespace;
|
||||
|
||||
if (!pv->pe_count)
|
||||
freespace = pv->size;
|
||||
else
|
||||
freespace = (uint64_t)
|
||||
(pv->pe_count - pv->pe_alloc_count) * pv->pe_size;
|
||||
return freespace;
|
||||
}
|
||||
|
||||
uint64_t pv_status(const struct physical_volume *pv)
|
||||
{
|
||||
return pv_field(pv, status);
|
||||
|
@ -78,7 +78,7 @@ FIELD(LVS, lv, STR, "Modules", lvid, 7, modules, "modules", "Kernel device-mappe
|
||||
|
||||
FIELD(LABEL, pv, STR, "Fmt", id, 3, pvfmt, "pv_fmt", "Type of metadata.")
|
||||
FIELD(LABEL, pv, STR, "PV UUID", id, 38, uuid, "pv_uuid", "Unique identifier.")
|
||||
FIELD(LABEL, pv, NUM, "DevSize", dev, 7, devsize, "dev_size", "Size of underlying device in current units.")
|
||||
FIELD(LABEL, pv, NUM, "DevSize", id, 7, devsize, "dev_size", "Size of underlying device in current units.")
|
||||
FIELD(LABEL, pv, STR, "PV", dev, 10, dev_name, "pv_name", "Name.")
|
||||
FIELD(LABEL, pv, NUM, "PMdaFree", id, 9, pvmdafree, "pv_mda_free", "Free metadata area space on this device in current units.")
|
||||
FIELD(LABEL, pv, NUM, "PMdaSize", id, 9, pvmdasize, "pv_mda_size", "Size of smallest metadata area on this device in current units.")
|
||||
|
@ -767,10 +767,7 @@ static int _pvfree_disp(struct dm_report *rh, struct dm_pool *mem,
|
||||
(const struct physical_volume *) data;
|
||||
uint64_t freespace;
|
||||
|
||||
if (!pv->pe_count)
|
||||
freespace = pv->size;
|
||||
else
|
||||
freespace = (uint64_t) (pv->pe_count - pv->pe_alloc_count) * pv->pe_size;
|
||||
freespace = pv_free(pv);
|
||||
|
||||
return _size64_disp(rh, mem, field, &freespace, private);
|
||||
}
|
||||
@ -783,10 +780,7 @@ static int _pvsize_disp(struct dm_report *rh, struct dm_pool *mem,
|
||||
(const struct physical_volume *) data;
|
||||
uint64_t size;
|
||||
|
||||
if (!pv->pe_count)
|
||||
size = pv->size;
|
||||
else
|
||||
size = (uint64_t) pv->pe_count * pv->pe_size;
|
||||
size = pv_size_field(pv);
|
||||
|
||||
return _size64_disp(rh, mem, field, &size, private);
|
||||
}
|
||||
@ -795,11 +789,11 @@ static int _devsize_disp(struct dm_report *rh, struct dm_pool *mem,
|
||||
struct dm_report_field *field,
|
||||
const void *data, void *private)
|
||||
{
|
||||
const struct device *dev = *(const struct device **) data;
|
||||
const struct physical_volume *pv =
|
||||
(const struct physical_volume *) data;
|
||||
uint64_t size;
|
||||
|
||||
if (!dev_get_size(dev, &size))
|
||||
size = 0;
|
||||
size = pv_dev_size(pv);
|
||||
|
||||
return _size64_disp(rh, mem, field, &size, private);
|
||||
}
|
||||
|
@ -3,6 +3,9 @@ lvm_init
|
||||
lvm_quit
|
||||
lvm_config_reload
|
||||
lvm_config_override
|
||||
lvm_pv_get_dev_size
|
||||
lvm_pv_get_size
|
||||
lvm_pv_get_free
|
||||
lvm_pv_get_name
|
||||
lvm_pv_get_uuid
|
||||
lvm_pv_get_mda_count
|
||||
|
@ -867,6 +867,40 @@ char *lvm_pv_get_name(const pv_t pv);
|
||||
*/
|
||||
uint64_t lvm_pv_get_mda_count(const pv_t pv);
|
||||
|
||||
/**
|
||||
* Get the current size in bytes of a device underlying a
|
||||
* physical volume.
|
||||
*
|
||||
* \param pv
|
||||
* Physical volume handle.
|
||||
*
|
||||
* \return
|
||||
* Size in bytes.
|
||||
*/
|
||||
uint64_t lvm_pv_get_dev_size(const pv_t pv);
|
||||
|
||||
/**
|
||||
* Get the current size in bytes of a physical volume.
|
||||
*
|
||||
* \param pv
|
||||
* Physical volume handle.
|
||||
*
|
||||
* \return
|
||||
* Size in bytes.
|
||||
*/
|
||||
uint64_t lvm_pv_get_size(const pv_t pv);
|
||||
|
||||
/**
|
||||
* Get the current unallocated space in bytes of a physical volume.
|
||||
*
|
||||
* \param pv
|
||||
* Physical volume handle.
|
||||
*
|
||||
* \return
|
||||
* Free size in bytes.
|
||||
*/
|
||||
uint64_t lvm_pv_get_free(const pv_t pv);
|
||||
|
||||
/**
|
||||
* Resize physical volume to new_size bytes.
|
||||
*
|
||||
|
@ -43,6 +43,21 @@ uint64_t lvm_pv_get_mda_count(const pv_t pv)
|
||||
return (uint64_t) pv_mda_count(pv);
|
||||
}
|
||||
|
||||
uint64_t lvm_pv_get_dev_size(const pv_t pv)
|
||||
{
|
||||
return (uint64_t) SECTOR_SIZE*pv_dev_size(pv);
|
||||
}
|
||||
|
||||
uint64_t lvm_pv_get_size(const pv_t pv)
|
||||
{
|
||||
return (uint64_t) SECTOR_SIZE*pv_size_field(pv);
|
||||
}
|
||||
|
||||
uint64_t lvm_pv_get_free(const pv_t pv)
|
||||
{
|
||||
return (uint64_t) SECTOR_SIZE*pv_free(pv);
|
||||
}
|
||||
|
||||
int lvm_pv_resize(const pv_t pv, uint64_t new_size)
|
||||
{
|
||||
/* FIXME: add pv resize code here */
|
||||
|
Loading…
x
Reference in New Issue
Block a user