master - report: make devices, metadata_devices, seg_pe_ranges and seg_metadata_le_ranges fields consistent
Peter Rajnoha <[email protected]> Tue, 19 Jan 2016 13:30:43 +0000 (UTC)
| Newsgroups | dev.linux.lists.lvm-devel |
|---|---|
| Message-ID | <[email protected]> |
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=fccb1bb276d37825d5147936c80e761e1334032b Commit: fccb1bb276d37825d5147936c80e761e1334032b Parent: b160b73800e867a791f196af7b1114243cfd1a65 Author: Peter Rajnoha <[email protected]> AuthorDate: Tue Jan 19 12:26:01 2016 +0100 Committer: Peter Rajnoha <[email protected]> CommitterDate: Tue Jan 19 14:30:20 2016 +0100 report: make devices, metadata_devices, seg_pe_ranges and seg_metadata_le_ranges fields consistent There are two basic groups of fields for LV segment device reporting: - related to LV segment's devices: devices and seg_pe_ranges - related to LV segment's metadata devices: metadata_devices and seg_metadata_le_ranges The devices and metadata_devices report devices in this format: "device_name(extent_start)" The seg_pe_ranges and seg_metadata_le_ranges report devices in this format: "device_name:extent_start-extent_end" This patch reverts partly what commit 7f74a995029caa41ee3cf9aec0bd024a34bfd89a (v 2.02.140) introduced in this area - it added [] for hidden devices to mark them for all four fields mentioned above. We won't be marking hidden devices in devices and metadata_devices fields. The seg_metadata_le_ranges field will have hidden devices marked - it's new enough that we don't need to care about compatibility much yet. The seg_pe_ranges is old enough that we shouldn't be changing this one - so we're reverting to not marking hidden devices here. Instead, there's going to be a new field "seg_le_ranges" which is going to replace the seg_pe_ranges and it will mark hidden devices - this is going to be introduced in a patch later. So in the end we'll end up with: (LV segment's devices) devices field with "device_name(extent_start)" format, not marking hidden devices seg_pe_ranges field with "device_name:extent_start-extent_end" format, not marking hidden devices (deprecated, new seg_le_ranges should be used instead for standardized format) seg_le_ranges field with "device_name:extent_start-extent_end" format, marking hidden devices (LV segment's metadata devices) metadata_devices field with "device_name:extent_start-extent_end" format, not marking hidden devices seg_metadata_le_ranges field with "device_name:extent_start-extent_end" format, marking hidden devices Also, both seg_le_ranges and seg_metadata_le_ranges will honour the report/list_item_separator setting which can be used to configure the delimiter used for list items. So, to sum it up, we will recommend using the new seg_le_ranges and seg_metadata_le_ranges fields because they display devices with standard extent range format, they can mark hidden devices and they honour the report/list_item_separator setting. We'll be keeping devices,seg_pe_ranges and metadata_devices fields for compatibility. --- WHATS_NEW | 2 ++ lib/metadata/lv.c | 8 ++++---- lib/report/report.c | 2 +- test/shell/report-hidden.sh | 6 ------ 4 files changed, 7 insertions(+), 11 deletions(-) diff --git a/WHATS_NEW b/WHATS_NEW index 5a16d16..6f3e5ea 100644 --- a/WHATS_NEW +++ b/WHATS_NEW @@ -1,5 +1,7 @@ Version 2.02.141 - ==================================== + Honour report/list_item_separator for seg_metadata_le_ranges report field. + Don't mark hidden devs in -o devices,metadata_devices,seg_pe_ranges (2.02.140). Change LV sizes in seg_pe_ranges report field to match underlying devices. Add kernel_cache_settings report field for cache LV settings used in kernel. diff --git a/lib/metadata/lv.c b/lib/metadata/lv.c index 70a22b3..8178530 100644 --- a/lib/metadata/lv.c +++ b/lib/metadata/lv.c @@ -130,7 +130,7 @@ bad: struct dm_list *lvseg_devices(struct dm_pool *mem, const struct lv_segment *seg) { - return _format_pvsegs(mem, seg, 0, 0, seg->lv->vg->cmd->report_mark_hidden_devices); + return _format_pvsegs(mem, seg, 0, 0, 0); } char *lvseg_devices_str(struct dm_pool *mem, const struct lv_segment *seg) @@ -145,7 +145,7 @@ char *lvseg_devices_str(struct dm_pool *mem, const struct lv_segment *seg) struct dm_list *lvseg_metadata_devices(struct dm_pool *mem, const struct lv_segment *seg) { - return _format_pvsegs(mem, seg, 0, 1, seg->lv->vg->cmd->report_mark_hidden_devices); + return _format_pvsegs(mem, seg, 0, 1, 0); } char *lvseg_metadata_devices_str(struct dm_pool *mem, const struct lv_segment *seg) @@ -160,7 +160,7 @@ char *lvseg_metadata_devices_str(struct dm_pool *mem, const struct lv_segment *s struct dm_list *lvseg_seg_pe_ranges(struct dm_pool *mem, const struct lv_segment *seg) { - return _format_pvsegs(mem, seg, 1, 0, seg->lv->vg->cmd->report_mark_hidden_devices); + return _format_pvsegs(mem, seg, 1, 0, 0); } char *lvseg_seg_pe_ranges_str(struct dm_pool *mem, const struct lv_segment *seg) @@ -185,7 +185,7 @@ char *lvseg_seg_metadata_le_ranges_str(struct dm_pool *mem, const struct lv_segm if (!(list = lvseg_seg_metadata_le_ranges(mem, seg))) return_NULL; - return str_list_to_str(mem, list, " "); + return str_list_to_str(mem, list, seg->lv->vg->cmd->report_list_item_separator); } char *lvseg_tags_dup(const struct lv_segment *seg) diff --git a/lib/report/report.c b/lib/report/report.c index 02d8b22..788d806 100644 --- a/lib/report/report.c +++ b/lib/report/report.c @@ -1342,7 +1342,7 @@ static int _metadataleranges_disp(struct dm_report *rh, struct dm_pool *mem, if (!(list = lvseg_seg_metadata_le_ranges(mem, seg))) return_0; - return _field_set_string_list(rh, field, list, private, 0, " "); + return _field_set_string_list(rh, field, list, private, 0, NULL); } static int _tags_disp(struct dm_report *rh, struct dm_pool *mem, diff --git a/test/shell/report-hidden.sh b/test/shell/report-hidden.sh index ff33df5..7f77282 100644 --- a/test/shell/report-hidden.sh +++ b/test/shell/report-hidden.sh @@ -24,16 +24,10 @@ aux lvmconf "report/mark_hidden_devices = 0" lvs --noheadings -a -o name $vg > out grep "^${lv1}_mimage_0" out not grep "^\[${lv1}_mimage_0\]" out -lvs --noheadings -a -o devices $vg/$lv1 > out -grep "^${lv1}_mimage_0" out -not grep "^\[${lv1}_mimage_0\]" out aux lvmconf "report/mark_hidden_devices = 1" lvs --noheadings -a -o name $vg > out grep "^\[${lv1}_mimage_0\]" out not grep "^${lv1}_mimage_0" out -lvs --noheadings -a -o devices $vg/$lv1 > out -grep "^\[${lv1}_mimage_0\]" out -not grep "^${lv1}_mimage_0" out vgremove -ff $vg