summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorDave Wysochanski <dwysocha@redhat.com>2010-10-12 16:13:06 +0000
committerDave Wysochanski <dwysocha@redhat.com>2010-10-12 16:13:06 +0000
commit2eba846043b143d745b26e3a60658394cf3081e2 (patch)
tree363cf7486804f8a255ba6ef3676fe4cca9205543 /lib
parentd88090b0ae983577e3cf14909148514f627a2f98 (diff)
downloadlvm2-2eba846043b143d745b26e3a60658394cf3081e2.tar.gz
lvm2-2eba846043b143d745b26e3a60658394cf3081e2.tar.xz
lvm2-2eba846043b143d745b26e3a60658394cf3081e2.zip
Refactor and add code for (lv) 'modules' get function.
Diffstat (limited to 'lib')
-rw-r--r--lib/metadata/lv.c15
-rw-r--r--lib/metadata/lv.h1
-rw-r--r--lib/report/properties.c2
-rw-r--r--lib/report/report.c12
4 files changed, 21 insertions, 9 deletions
diff --git a/lib/metadata/lv.c b/lib/metadata/lv.c
index 345f958b..634e21d0 100644
--- a/lib/metadata/lv.c
+++ b/lib/metadata/lv.c
@@ -18,6 +18,21 @@
#include "activate.h"
#include "toolcontext.h"
#include "segtype.h"
+#include "str_list.h"
+
+char *lv_modules_dup(struct dm_pool *mem, const struct logical_volume *lv)
+{
+ struct dm_list *modules;
+
+ if (!(modules = str_list_create(mem))) {
+ log_error("modules str_list allocation failed");
+ return NULL;
+ }
+
+ if (!list_lv_modules(mem, lv, modules))
+ return_NULL;
+ return tags_format_and_copy(lv->vg->vgmem, modules);
+}
char *lv_mirror_log_dup(struct dm_pool *mem, const struct logical_volume *lv)
{
diff --git a/lib/metadata/lv.h b/lib/metadata/lv.h
index 8d069afd..2f0ebeeb 100644
--- a/lib/metadata/lv.h
+++ b/lib/metadata/lv.h
@@ -59,5 +59,6 @@ char *lv_convert_lv_dup(struct dm_pool *mem, const struct logical_volume *lv);
int lv_kernel_major(const struct logical_volume *lv);
int lv_kernel_minor(const struct logical_volume *lv);
char *lv_mirror_log_dup(struct dm_pool *mem, const struct logical_volume *lv);
+char *lv_modules_dup(struct dm_pool *mem, const struct logical_volume *lv);
#endif
diff --git a/lib/report/properties.c b/lib/report/properties.c
index eba2b593..ce1d2f7a 100644
--- a/lib/report/properties.c
+++ b/lib/report/properties.c
@@ -137,7 +137,7 @@ GET_LV_STR_PROPERTY_FN(lv_tags, lv_tags_dup(lv))
#define _lv_tags_set _not_implemented_set
GET_LV_STR_PROPERTY_FN(mirror_log, lv_mirror_log_dup(lv->vg->vgmem, lv))
#define _mirror_log_set _not_implemented_set
-#define _modules_get _not_implemented_get
+GET_LV_STR_PROPERTY_FN(modules, lv_modules_dup(lv->vg->vgmem, lv))
#define _modules_set _not_implemented_set
/* VG */
diff --git a/lib/report/report.c b/lib/report/report.c
index e6510c5c..d1553729 100644
--- a/lib/report/report.c
+++ b/lib/report/report.c
@@ -165,17 +165,13 @@ static int _modules_disp(struct dm_report *rh, struct dm_pool *mem,
const void *data, void *private)
{
const struct logical_volume *lv = (const struct logical_volume *) data;
- struct dm_list *modules;
+ char *modules_str;
- if (!(modules = str_list_create(mem))) {
- log_error("modules str_list allocation failed");
+ if (!(modules_str = lv_modules_dup(mem, lv)))
return 0;
- }
-
- if (!list_lv_modules(mem, lv, modules))
- return_0;
- return _tags_disp(rh, mem, field, modules, private);
+ dm_report_field_set_value(field, modules_str, NULL);
+ return 1;
}
static int _vgfmt_disp(struct dm_report *rh, struct dm_pool *mem,