1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-21 13:34:40 +03:00
lvm2/libdm
Peter Rajnoha 9c8f912ea7 libdm: report: introduce dm_report_group
This patch introduces DM report group (represented by dm_report_group
structure) that is used to group several reports to make a whole. As a
whole, all the reports in the group follow the same settings and/or
formatting used on output and it controls that the output is properly
ordered (e.g. the output from different reports is not interleaved
which would break readability and/or syntax of target output format
used for the whole group).

To support this feature, there are 4 new functions:
  - dm_report_group_create
  - dm_report_group_push
  - dm_report_group_pop
  - dm_report_group_destroy

From the naming used (dm_report_group_push/pop), it's clear the reports
are pushed onto a stack. The rule then is that only the report on top
of the stack can be reported (that means calling dm_report_output).
This way we make sure that the output is not interleaved and provides
determinism and control over the output.

Different formats may allow or disallow some of the existing report
flags controlling output itself (DM_REPORT_OUTPUT_*) to be set or not so
once the report is pushed to a group, the grouping code makes sure that
all the reports have compatible flags set and then these flags are
restored once each report is popped from the report group stack.

We also allow to push/pop non-report item in which case such an item
creates a structure (e.g. to put several reports together with any
opening and/or closing lines needed on output which pose as extra
formatting structure besides formatting the reports).

The dm_report_group_push function accepts an argument to pass any
format-specific data needed (e.g. handle, name, structures passed
along while working with reports...).

We can call dm_report_output directly anytime we need (with the only
restriction that we can call dm_report_output only for the report that
is currently on top of the group's stack). Or we don't need to call
dm_report_output explicitly in which case all the reports in a stack are
reported on output automatically once we call dm_report_group_destroy.
2016-06-20 09:26:51 +02:00
..
datastruct doc: change fsf address 2016-01-21 12:11:37 +01:00
ioctl libdm: Show lib vsn even if driver vsn unavailable. 2016-05-12 01:14:25 +01:00
misc doc: change fsf address 2016-01-21 12:11:37 +01:00
mm gcc: cleanup some sign warnings 2016-02-23 12:25:25 +01:00
regex doc: change fsf address 2016-01-21 12:11:37 +01:00
.exported_symbols libdm: Use wrappers for all malloc functions. 2015-07-22 23:11:48 +01:00
.exported_symbols.Base hash: change name of new lookup function 2015-11-17 11:59:44 -06:00
.exported_symbols.DM_1_02_97 libdm: new dm_task_get_info with internal_suspend 2015-05-15 16:48:22 +02:00
.exported_symbols.DM_1_02_98 libdm: Add dm_task_get_errno to return ioctl errno. 2015-05-26 15:13:49 +01:00
.exported_symbols.DM_1_02_99 libdm: add dm_tree_node_set_thin_pool_read_only 2015-06-18 15:15:39 +02:00
.exported_symbols.DM_1_02_100 config: add support for config value formatting flags 2015-06-24 11:13:37 +02:00
.exported_symbols.DM_1_02_101 report: add infrastructure to recognize fuzzy reserved names and returning dynamic reserved values 2015-07-03 10:47:09 +02:00
.exported_symbols.DM_1_02_103 libdm: Use wrappers for all malloc functions. 2015-07-22 23:11:48 +01:00
.exported_symbols.DM_1_02_104 libdm: Drop ignored duplicate export designation. 2015-08-26 17:30:36 +01:00
.exported_symbols.DM_1_02_105 pre-release 2015-08-17 17:20:14 +01:00
.exported_symbols.DM_1_02_106 libdm: add per region precise timestamps property methods 2015-08-24 20:03:21 +01:00
.exported_symbols.DM_1_02_107 libdm: add latency histogram support 2015-09-02 20:48:59 +01:00
.exported_symbols.DM_1_02_110 libdm: dm_tree_node_size_changed recognizes reduction 2015-10-25 21:05:15 +01:00
.exported_symbols.DM_1_02_113 libdm: introduce dm_get_status_mirror 2015-12-01 13:00:43 +01:00
.exported_symbols.DM_1_02_124 libdm: Add dm_udev_wait_immediate. 2016-04-28 00:54:27 +01:00
.exported_symbols.DM_1_02_128 libdm: report: introduce dm_report_group 2016-06-20 09:26:51 +02:00
libdevmapper.h libdm: report: introduce dm_report_group 2016-06-20 09:26:51 +02:00
libdevmapper.pc.in libdm: pkgconfig: fix devmapper.pc to not reference nonexistent rt.pc file 2015-09-03 09:28:42 +02:00
libdm-common.c libdm: Add dm_udev_wait_immediate. 2016-04-28 00:54:27 +01:00
libdm-common.h doc: change fsf address 2016-01-21 12:11:37 +01:00
libdm-config.c Revert "libdm: trace missing settings" 2016-05-27 14:35:11 +01:00
libdm-deptree.c raid0: Add raid0 segment type. 2016-05-23 16:46:38 +01:00
libdm-file.c doc: change fsf address 2016-01-21 12:11:37 +01:00
libdm-report.c libdm: report: introduce dm_report_group 2016-06-20 09:26:51 +02:00
libdm-stats.c libdm-stats: check for empty region and area lists 2016-04-22 10:35:07 +01:00
libdm-string.c doc: change fsf address 2016-01-21 12:11:37 +01:00
libdm-targets.c libdm: cache status reports passthrough cache mode 2016-05-19 18:26:07 +02:00
libdm-timestamp.c doc: change fsf address 2016-01-21 12:11:37 +01:00
Makefile.in doc: change fsf address 2016-01-21 12:11:37 +01:00