From c0c419a3572307e71026144b8907a33b464f6066 Mon Sep 17 00:00:00 2001 From: Csaba Henk Date: Sat, 2 Oct 2010 18:44:16 +0000 Subject: volgen: add a precise getter function which considers default values as well Signed-off-by: Csaba Henk Signed-off-by: Vijay Bellur BUG: 1750 (clean up volgen) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=1750 --- xlators/mgmt/glusterd/src/glusterd-volgen.c | 31 +++++++++++++++++++++++++++++ xlators/mgmt/glusterd/src/glusterd-volgen.h | 2 ++ 2 files changed, 33 insertions(+) (limited to 'xlators/mgmt/glusterd') diff --git a/xlators/mgmt/glusterd/src/glusterd-volgen.c b/xlators/mgmt/glusterd/src/glusterd-volgen.c index f83cdefe828..619e32920f0 100644 --- a/xlators/mgmt/glusterd/src/glusterd-volgen.c +++ b/xlators/mgmt/glusterd/src/glusterd-volgen.c @@ -412,6 +412,37 @@ volgen_graph_set_options (glusterfs_graph_t *graph, dict_t *dict) &basic_option_handler); } +static int +optget_option_handler (glusterfs_graph_t *graph, struct volopt_map_entry2 *vme2, + void *param) +{ + struct volopt_map_entry2 *vme2x = param; + + if (strcmp (vme2->key, vme2x->key) == 0) + vme2x->value = vme2->value; + + return 0; +} + +/* This getter considers defaults also. */ +int +glusterd_volinfo_get (glusterd_volinfo_t *volinfo, char *key, char **value) +{ + struct volopt_map_entry2 vme2 = {0,}; + int ret = 0; + + vme2.key = key; + + ret = volgen_graph_set_options_generic (NULL, volinfo->dict, &vme2, + &optget_option_handler); + if (ret) + return -1; + + *value = vme2.value; + + return 0; +} + static int volgen_graph_merge_sub (glusterfs_graph_t *dgraph, glusterfs_graph_t *sgraph) { diff --git a/xlators/mgmt/glusterd/src/glusterd-volgen.h b/xlators/mgmt/glusterd/src/glusterd-volgen.h index 3e877fd7b08..fe706ef335c 100644 --- a/xlators/mgmt/glusterd/src/glusterd-volgen.h +++ b/xlators/mgmt/glusterd/src/glusterd-volgen.h @@ -46,4 +46,6 @@ int glusterd_create_nfs_volfile (); int glusterd_delete_volfile (glusterd_volinfo_t *volinfo, glusterd_brickinfo_t *brickinfo); +int glusterd_volinfo_get (glusterd_volinfo_t *volinfo, char *key, char **value); + #endif -- cgit