#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)
{
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
#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 */
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,