summaryrefslogtreecommitdiffstats
path: root/tools/reporter.c
diff options
context:
space:
mode:
authorAlasdair Kergon <agk@redhat.com>2008-06-25 16:52:27 +0000
committerAlasdair Kergon <agk@redhat.com>2008-06-25 16:52:27 +0000
commit36081ccf2d078e6940fb533e3f2eb856da3a1416 (patch)
tree6b3d8fbde8675cf1d187a74326ab839092054be3 /tools/reporter.c
parent937a25249f9eb3ac9eb2245b413ca9525f0c92f6 (diff)
downloadlvm2-36081ccf2d078e6940fb533e3f2eb856da3a1416.tar.gz
lvm2-36081ccf2d078e6940fb533e3f2eb856da3a1416.tar.xz
lvm2-36081ccf2d078e6940fb533e3f2eb856da3a1416.zip
Fix reporting of LV fields alongside unallocated PV segments.
Diffstat (limited to 'tools/reporter.c')
-rw-r--r--tools/reporter.c35
1 files changed, 33 insertions, 2 deletions
diff --git a/tools/reporter.c b/tools/reporter.c
index 02b51e38..5c35a0cb 100644
--- a/tools/reporter.c
+++ b/tools/reporter.c
@@ -61,8 +61,39 @@ static int _pvsegs_sub_single(struct cmd_context *cmd __attribute((unused)),
int ret = ECMD_PROCESSED;
struct lv_segment *seg = pvseg->lvseg;
- if (!report_object(handle, vg, seg ? seg->lv : NULL, pvseg->pv, seg,
- pvseg))
+ struct logical_volume _free_logical_volume = {
+ .vg = vg,
+ .name = (char *) "",
+ .snapshot = NULL,
+ .status = VISIBLE_LV,
+ .major = -1,
+ .minor = -1,
+ };
+
+ struct lv_segment _free_lv_segment = {
+ .lv = &_free_logical_volume,
+ .le = 0,
+ .status = 0,
+ .stripe_size = 0,
+ .area_count = 0,
+ .area_len = 0,
+ .origin = NULL,
+ .cow = NULL,
+ .chunk_size = 0,
+ .region_size = 0,
+ .extents_copied = 0,
+ .log_lv = NULL,
+ .areas = NULL,
+ };
+
+ _free_lv_segment.segtype = get_segtype_from_string(cmd, "free");
+ _free_lv_segment.len = pvseg->len;
+ list_init(&_free_logical_volume.tags);
+ list_init(&_free_logical_volume.segments);
+ list_init(&_free_logical_volume.segs_using_this_lv);
+
+ if (!report_object(handle, vg, seg ? seg->lv : &_free_logical_volume, pvseg->pv,
+ seg ? : &_free_lv_segment, pvseg))
ret = ECMD_FAILED;
return ret;