[lvm-devel] [PATCH 2/4] Add lvseg 'get' functions.
Zdenek Kabelac
zkabelac at redhat.com
Wed Oct 20 11:53:19 UTC 2010
Dne 19.10.2010 15:24, Dave Wysochanski napsal(a):
>
> Signed-off-by: Dave Wysochanski <dwysocha at redhat.com>
> diff --git a/lib/metadata/lv.c b/lib/metadata/lv.c
> index b7a8700..eca046f 100644
> --- a/lib/metadata/lv.c
> +++ b/lib/metadata/lv.c
> @@ -20,6 +20,41 @@
> #include "segtype.h"
> #include "str_list.h"
>
> +char *lvseg_tags_dup(const struct lv_segment *seg)
> +{
> + return tags_format_and_copy(seg->lv->vg->vgmem, &seg->tags);
> +}
> +
> +char *lvseg_segtype_dup(const struct lv_segment *seg)
> +{
> + if (seg->area_count == 1) {
> + return (char *)"linear";
NACK!
> + }
> +
> + return dm_pool_strdup(seg->lv->vg->vgmem, seg->segtype->ops->name(seg));
> +}
> +
> +uint64_t lvseg_chunksize(const struct lv_segment *seg)
> +{
> + uint64_t size;
> +
> + if (lv_is_cow(seg->lv))
> + size = (uint64_t) find_cow(seg->lv)->chunk_size;
> + else
> + size = UINT64_C(0);
if (lv_is_cow())
return ...
return 0;
> diff --git a/lib/report/report.c b/lib/report/report.c
> index dbeef21..c7f141f 100644
> --- a/lib/report/report.c
> +++ b/lib/report/report.c
> @@ -279,12 +279,9 @@ static int _segtype_disp(struct dm_report *rh __attribute__((unused)),
> {
> const struct lv_segment *seg = (const struct lv_segment *) data;
>
> - if (seg->area_count == 1) {
> - dm_report_field_set_value(field, "linear", NULL);
> - return 1;
> - }
> -
> - dm_report_field_set_value(field, seg->segtype->ops->name(seg), NULL);
> + char *name;
> + name = lvseg_segtype_dup(seg);
> + dm_report_field_set_value(field, name, NULL);
> return 1;
> }
I really think this API is wrong somewhere - there is way too many duplication
- this isn't going to be very efficient....
I do like the beauty of const strings....
Zdenek
More information about the lvm-devel
mailing list