From 298ec21e29a71fa52ca9662371134ac93f9e2092 Mon Sep 17 00:00:00 2001 From: Dave Wysochanski Date: Mon, 19 Apr 2010 15:22:24 +0000 Subject: Use vg->vgmem to allocate vg/lv/pv string properties instead of dm_malloc/fr Everywhere else in the API the caller can rely on lvm2app taking care of memory allocation and free, so make the 'name' and 'uuid' properties of a vg/lv/pv use the vg handle to allocate memory. Signed-off-by: Dave Wysochanski --- liblvm/lvm2app.h | 36 ++++++++++++++++++------------------ liblvm/lvm_lv.c | 14 +++++--------- liblvm/lvm_pv.c | 14 +++++--------- liblvm/lvm_vg.c | 13 ++++--------- 4 files changed, 32 insertions(+), 45 deletions(-) (limited to 'liblvm') diff --git a/liblvm/lvm2app.h b/liblvm/lvm2app.h index 61ffd870..ed866659 100644 --- a/liblvm/lvm2app.h +++ b/liblvm/lvm2app.h @@ -642,12 +642,12 @@ uint64_t lvm_vg_is_partial(vg_t vg); uint64_t lvm_vg_get_seqno(const vg_t vg); /** - * Get the current name of a volume group. + * Get the current uuid of a volume group. * * \memberof vg_t * - * Memory is allocated using dm_malloc() and caller must free the memory - * using dm_free(). + * The memory allocated for the uuid is tied to the vg_t handle and will be + * released when lvm_vg_close() is called. * * \param vg * VG handle obtained from lvm_vg_create or lvm_vg_open(). @@ -655,15 +655,15 @@ uint64_t lvm_vg_get_seqno(const vg_t vg); * \return * Copy of the uuid string. */ -char *lvm_vg_get_uuid(const vg_t vg); +const char *lvm_vg_get_uuid(const vg_t vg); /** - * Get the current uuid of a volume group. + * Get the current name of a volume group. * * \memberof vg_t * - * Memory is allocated using dm_malloc() and caller must free the memory - * using dm_free(). + * The memory allocated for the name is tied to the vg_t handle and will be + * released when lvm_vg_close() is called. * * \param vg * VG handle obtained from lvm_vg_create or lvm_vg_open(). @@ -671,7 +671,7 @@ char *lvm_vg_get_uuid(const vg_t vg); * \return * Copy of the name. */ -char *lvm_vg_get_name(const vg_t vg); +const char *lvm_vg_get_name(const vg_t vg); /** * Get the current size in bytes of a volume group. @@ -783,7 +783,7 @@ uint64_t lvm_vg_get_max_lv(const vg_t vg); * \memberof vg_t * * The memory allocated for the list is tied to the vg_t handle and will be - * released when lvm_vg_close is called. + * released when lvm_vg_close() is called. * * To process the list, use the dm_list iterator functions. For example: * vg_t vg; @@ -896,7 +896,7 @@ int lvm_vg_remove_lv(lv_t lv); * \return * Copy of the uuid string. */ -char *lvm_lv_get_uuid(const lv_t lv); +const char *lvm_lv_get_uuid(const lv_t lv); /** * Get the current uuid of a logical volume. @@ -912,7 +912,7 @@ char *lvm_lv_get_uuid(const lv_t lv); * \return * Copy of the name. */ -char *lvm_lv_get_name(const lv_t lv); +const char *lvm_lv_get_name(const lv_t lv); /** * Get the current size in bytes of a logical volume. @@ -1001,7 +1001,7 @@ int lvm_lv_remove_tag(lv_t lv, const char *tag); * \memberof lv_t * * The memory allocated for the list is tied to the vg_t handle and will be - * released when lvm_vg_close is called. + * released when lvm_vg_close() is called. * * To process the list, use the dm_list iterator functions. For example: * lv_t lv; @@ -1057,8 +1057,8 @@ int lvm_lv_resize(const lv_t lv, uint64_t new_size); * * \memberof pv_t * - * Memory is allocated using dm_malloc() and caller must free the memory - * using dm_free(). + * The memory allocated for the uuid is tied to the vg_t handle and will be + * released when lvm_vg_close() is called. * * \param pv * Physical volume handle. @@ -1066,15 +1066,15 @@ int lvm_lv_resize(const lv_t lv, uint64_t new_size); * \return * Copy of the uuid string. */ -char *lvm_pv_get_uuid(const pv_t pv); +const char *lvm_pv_get_uuid(const pv_t pv); /** * Get the current name of a physical volume. * * \memberof pv_t * - * Memory is allocated using dm_malloc() and caller must free the memory - * using dm_free(). + * The memory allocated for the uuid is tied to the vg_t handle and will be + * released when lvm_vg_close() is called. * * \param pv * Physical volume handle. @@ -1082,7 +1082,7 @@ char *lvm_pv_get_uuid(const pv_t pv); * \return * Copy of the name. */ -char *lvm_pv_get_name(const pv_t pv); +const char *lvm_pv_get_name(const pv_t pv); /** * Get the current number of metadata areas in the physical volume. diff --git a/liblvm/lvm_lv.c b/liblvm/lvm_lv.c index d3bb6b88..cfa5c18b 100644 --- a/liblvm/lvm_lv.c +++ b/liblvm/lvm_lv.c @@ -39,7 +39,7 @@ uint64_t lvm_lv_get_size(const lv_t lv) return SECTOR_SIZE * lv_size(lv); } -char *lvm_lv_get_uuid(const lv_t lv) +const char *lvm_lv_get_uuid(const lv_t lv) { char uuid[64] __attribute((aligned(8))); @@ -47,17 +47,13 @@ char *lvm_lv_get_uuid(const lv_t lv) log_error(INTERNAL_ERROR "unable to convert uuid"); return NULL; } - return strndup((const char *)uuid, 64); + return dm_pool_strndup(lv->vg->vgmem, (const char *)uuid, 64); } -char *lvm_lv_get_name(const lv_t lv) +const char *lvm_lv_get_name(const lv_t lv) { - char *name; - - name = dm_malloc(NAME_LEN + 1); - strncpy(name, (const char *)lv->name, NAME_LEN); - name[NAME_LEN] = '\0'; - return name; + return dm_pool_strndup(lv->vg->vgmem, (const char *)lv->name, + NAME_LEN+1); } uint64_t lvm_lv_is_active(const lv_t lv) diff --git a/liblvm/lvm_pv.c b/liblvm/lvm_pv.c index 894aa4bc..7926bff8 100644 --- a/liblvm/lvm_pv.c +++ b/liblvm/lvm_pv.c @@ -17,7 +17,7 @@ #include "metadata-exported.h" #include "lvm-string.h" -char *lvm_pv_get_uuid(const pv_t pv) +const char *lvm_pv_get_uuid(const pv_t pv) { char uuid[64] __attribute((aligned(8))); @@ -25,17 +25,13 @@ char *lvm_pv_get_uuid(const pv_t pv) log_error(INTERNAL_ERROR "Unable to convert uuid"); return NULL; } - return strndup((const char *)uuid, 64); + return dm_pool_strndup(pv->vg->vgmem, (const char *)uuid, 64); } -char *lvm_pv_get_name(const pv_t pv) +const char *lvm_pv_get_name(const pv_t pv) { - char *name; - - name = dm_malloc(NAME_LEN + 1); - strncpy(name, (const char *)pv_dev_name(pv), NAME_LEN); - name[NAME_LEN] = '\0'; - return name; + return dm_pool_strndup(pv->vg->vgmem, + (const char *)pv_dev_name(pv), NAME_LEN + 1); } uint64_t lvm_pv_get_mda_count(const pv_t pv) diff --git a/liblvm/lvm_vg.c b/liblvm/lvm_vg.c index 4bb4cae1..ada40707 100644 --- a/liblvm/lvm_vg.c +++ b/liblvm/lvm_vg.c @@ -328,7 +328,7 @@ uint64_t lvm_vg_get_max_lv(const vg_t vg) return vg_max_lv(vg); } -char *lvm_vg_get_uuid(const vg_t vg) +const char *lvm_vg_get_uuid(const vg_t vg) { char uuid[64] __attribute((aligned(8))); @@ -336,17 +336,12 @@ char *lvm_vg_get_uuid(const vg_t vg) log_error(INTERNAL_ERROR "Unable to convert uuid"); return NULL; } - return strndup((const char *)uuid, 64); + return dm_pool_strndup(vg->vgmem, (const char *)uuid, 64); } -char *lvm_vg_get_name(const vg_t vg) +const char *lvm_vg_get_name(const vg_t vg) { - char *name; - - name = dm_malloc(NAME_LEN + 1); - strncpy(name, (const char *)vg->name, NAME_LEN); - name[NAME_LEN] = '\0'; - return name; + return dm_pool_strndup(vg->vgmem, (const char *)vg->name, NAME_LEN+1); } struct dm_list *lvm_list_vg_names(lvm_t libh) -- cgit