[lvm-devel] [PATCH 05/12] Add pv_uuid, vg_uuid, and lv_uuid, and call id_format_and_copy.

Zdenek Kabelac zkabelac at redhat.com
Fri Sep 10 09:38:03 UTC 2010


Dne 9.9.2010 22:13, Dave Wysochanski napsal(a):
> Add supporting functions for pv_uuid, vg_uuid, and lv_uuid.
> Call new function id_format_and_copy.
> 
> Signed-off-by: Dave Wysochanski <dwysocha at redhat.com>
> ---
>  lib/metadata/metadata.c |   15 +++++++++++++++
>  lib/metadata/metadata.h |    3 +++
>  liblvm/lvm_lv.c         |   10 ++--------
>  liblvm/lvm_pv.c         |   10 ++--------
>  liblvm/lvm_vg.c         |    8 +-------
>  5 files changed, 23 insertions(+), 23 deletions(-)
> 
> diff --git a/lib/metadata/metadata.c b/lib/metadata/metadata.c
> index 86f07e7..6fb69dc 100644
> --- a/lib/metadata/metadata.c
> +++ b/lib/metadata/metadata.c
> @@ -4619,6 +4619,21 @@ char *pv_attr(struct dm_pool *mem, const struct physical_volume *pv)
>  	return repstr;
>  }
>  
> +char *pv_uuid(struct physical_volume *pv)
> +{
> +	return id_format_and_copy(pv->vg->vgmem, &pv->id);
> +}
> +
> +char *vg_uuid(struct volume_group *vg)
> +{
> +	return id_format_and_copy(vg->vgmem, &vg->id);
> +}
> +
> +char *lv_uuid(struct logical_volume *lv)
> +{
> +	return id_format_and_copy(lv->vg->vgmem, &lv->lvid.id[1]);
> +}
> +
>  static int _lv_mimage_in_sync(const struct logical_volume *lv)
>  {
>  	float percent;
> diff --git a/lib/metadata/metadata.h b/lib/metadata/metadata.h
> index 1749f85..4eb826a 100644
> --- a/lib/metadata/metadata.h
> +++ b/lib/metadata/metadata.h
> @@ -422,5 +422,8 @@ uint64_t vg_mda_free(const struct volume_group *vg);
>  char *pv_attr(struct dm_pool *mem, const struct physical_volume *pv);
>  char *vg_attr(struct dm_pool *mem, const struct volume_group *vg);
>  char *lv_attr(struct dm_pool *mem, const struct logical_volume *lv);
> +char *lv_uuid(struct logical_volume *lv);
> +char *vg_uuid(struct volume_group *vg);
> +char *pv_uuid(struct physical_volume *pv);

Again - 'const'for *lv, *vg, *pv  would fit here probably better.

>  const char *lvm_lv_get_uuid(const lv_t lv)
>  {
> -	char uuid[64] __attribute__((aligned(8)));
> -
> -	if (!id_write_format(&lv->lvid.id[1], uuid, sizeof(uuid))) {


Probably not a big issue, but I can see some 'inconsistency' -

It looks like we have put 'const' on this return value to mark value as a
string which user should not try to 'free' - but this is somewhat missuse of
'const'  - there is probably no reason to avoid modification of copied string.
As we do not keep it internally - it just allocated string and user should be
able to do anything he wants to do with it.

Maybe we should reconsider and relax this return values to plain char*.

Zdenek




More information about the lvm-devel mailing list