summaryrefslogtreecommitdiff
path: root/libdm/libdm-config.c
diff options
context:
space:
mode:
authorPeter Rajnoha <prajnoha@redhat.com>2012-07-20 15:53:04 +0200
committerPeter Rajnoha <prajnoha@redhat.com>2012-07-20 15:53:04 +0200
commit5e36b86c46f04eddae2d4b1f826e1f24995b3636 (patch)
tree78aee73d59b1c7ea1198594016a28a38594e2354 /libdm/libdm-config.c
parent8d5ae472e5226f87175d51722fb5942c531bb8bb (diff)
downloadlvm2-5e36b86c46f04eddae2d4b1f826e1f24995b3636.tar.gz
config: fix one-node dumpconfig, add dm_config_write_one_node
A regression introduced in 2.02.89 (11e520256b3005ed813ce83f8770aaab74edef3f) caused the lvm dumpconfig <node> to print out the node as well as its subsequent siblings. The information about "only_one" mode got lost. Before this patch (just an example node): # lvm dumpconfig global/use_lvmetad use_lvmetad=1 thin_check_executable="/usr/sbin/thin_check" thin_check_options="-q" (...all nodes to the end of the section) With this patch applied: # lvm dumpconfig global/use_lvmetad use_lvmetad=1
Diffstat (limited to 'libdm/libdm-config.c')
-rw-r--r--libdm/libdm-config.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/libdm/libdm-config.c b/libdm/libdm-config.c
index d9d3882f2..845749797 100644
--- a/libdm/libdm-config.c
+++ b/libdm/libdm-config.c
@@ -331,14 +331,15 @@ static int _write_config(const struct dm_config_node *n, int only_one,
return 1;
}
-int dm_config_write_node(const struct dm_config_node *cn, dm_putline_fn putline, void *baton)
+static int _write_node(const struct dm_config_node *cn, int only_one,
+ dm_putline_fn putline, void *baton)
{
struct output_line outline;
if (!(outline.mem = dm_pool_create("config_line", 1024)))
return_0;
outline.putline = putline;
outline.putline_baton = baton;
- if (!_write_config(cn, 0, &outline, 0)) {
+ if (!_write_config(cn, only_one, &outline, 0)) {
dm_pool_destroy(outline.mem);
return_0;
}
@@ -346,6 +347,16 @@ int dm_config_write_node(const struct dm_config_node *cn, dm_putline_fn putline,
return 1;
}
+int dm_config_write_one_node(const struct dm_config_node *cn, dm_putline_fn putline, void *baton)
+{
+ return _write_node(cn, 1, putline, baton);
+}
+
+int dm_config_write_node(const struct dm_config_node *cn, dm_putline_fn putline, void *baton)
+{
+ return _write_node(cn, 0, putline, baton);
+}
+
/*
* parser