glusterd: Change the volfile to have readdir-ahead as a child
of dht As mentioned in feature page http://review.gluster.org/#/c/16090/ readdir-ahead will be optionally placed below dht. There are two options: 1. performance.readdir-ahead 2. performance.parallel-readdir If only option is enabled, then readdir ahead is placed at its original place as an ancestor of dht. If both the options 1 and 2 are enabled then readdir ahead is placed as a child of dht. Also changes have been made to retain the rebalance, quotad, snapd vol files to remain unchanged. Change-Id: I0adf0b476fcbf91251f5a2fee2241786a3d8255a BUG: 1401812 Signed-off-by: Poornima G <pgurusid@redhat.com> Reviewed-on: http://review.gluster.org/16072 Reviewed-by: Raghavendra G <rgowdapp@redhat.com> Smoke: Gluster Build System <jenkins@build.gluster.org> NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org> CentOS-regression: Gluster Build System <jenkins@build.gluster.org> Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
This commit is contained in:
parent
c822e354e1
commit
2c03c753fe
@ -11028,22 +11028,6 @@ glusterd_enable_default_options (glusterd_volinfo_t *volinfo, char *option)
|
||||
* }
|
||||
* */
|
||||
|
||||
/* readdir-ahead needs to be enabled for new volumes with
|
||||
* >= gluster version 3.7
|
||||
*/
|
||||
if (!option || !strcmp ("performance.readdir-ahead", option)) {
|
||||
ret = dict_set_dynstr_with_alloc (volinfo->dict,
|
||||
"performance.readdir-ahead", "on");
|
||||
if (ret) {
|
||||
gf_msg (this->name, GF_LOG_ERROR, errno,
|
||||
GD_MSG_DICT_SET_FAILED,
|
||||
"Failed to set option "
|
||||
"'performance.readdir-ahead' on volume "
|
||||
"%s", volinfo->volname);
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
|
||||
/* Option 'features.quota-deem-statfs' should not be turned off
|
||||
* with 'gluster volume reset <VOLNAME>', since quota features
|
||||
* can be reset only with 'gluster volume quota <VOLNAME>
|
||||
|
@ -2647,6 +2647,13 @@ perfxl_option_handler (volgen_graph_t *graph, struct volopt_map_entry *vme,
|
||||
(vme->op_version > volinfo->client_op_version))
|
||||
return 0;
|
||||
|
||||
/* if VKEY_READDIR_AHEAD is enabled and parallel readdir is
|
||||
* not enabled then load readdir-ahead here else it will be
|
||||
* loaded as a child of dht */
|
||||
if (!strcmp (vme->key, VKEY_READDIR_AHEAD) &&
|
||||
glusterd_volinfo_get_boolean (volinfo, VKEY_PARALLEL_READDIR))
|
||||
return 0;
|
||||
|
||||
if (volgen_graph_add (graph, vme->voltype, volinfo->volname))
|
||||
return 0;
|
||||
else
|
||||
@ -3390,6 +3397,30 @@ out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int
|
||||
volgen_graph_build_readdir_ahead (volgen_graph_t *graph,
|
||||
glusterd_volinfo_t *volinfo,
|
||||
size_t child_count)
|
||||
{
|
||||
int32_t clusters = 0;
|
||||
|
||||
if (graph->type == GF_REBALANCED ||
|
||||
graph->type == GF_QUOTAD ||
|
||||
graph->type == GF_SNAPD ||
|
||||
!glusterd_volinfo_get_boolean (volinfo, VKEY_PARALLEL_READDIR) ||
|
||||
!glusterd_volinfo_get_boolean (volinfo, VKEY_READDIR_AHEAD))
|
||||
goto out;
|
||||
|
||||
clusters = volgen_link_bricks_from_list_tail (graph,
|
||||
volinfo,
|
||||
"performance/readdir-ahead",
|
||||
"%s-readdir-ahead-%d",
|
||||
child_count,
|
||||
1);
|
||||
out:
|
||||
return clusters;
|
||||
}
|
||||
|
||||
static int
|
||||
volgen_graph_build_dht_cluster (volgen_graph_t *graph,
|
||||
glusterd_volinfo_t *volinfo, size_t child_count,
|
||||
@ -3726,6 +3757,11 @@ build_distribute:
|
||||
else
|
||||
strcat (volinfo->volname, "-cold");
|
||||
}
|
||||
clusters = volgen_graph_build_readdir_ahead (graph, volinfo,
|
||||
dist_count);
|
||||
if (clusters < 0)
|
||||
goto out;
|
||||
|
||||
ret = volgen_graph_build_dht_cluster (graph, volinfo,
|
||||
dist_count, is_quotad);
|
||||
if (volinfo->tier_info.hot_brick_count)
|
||||
@ -4750,6 +4786,8 @@ build_rebalance_volfile (glusterd_volinfo_t *volinfo, char *filepath,
|
||||
|
||||
this = THIS;
|
||||
|
||||
graph.type = GF_REBALANCED;
|
||||
|
||||
if (volinfo->brick_count <= volinfo->dist_leaf_count) {
|
||||
/*
|
||||
* Volume is not a distribute volume or
|
||||
@ -5186,6 +5224,8 @@ build_quotad_graph (volgen_graph_t *graph, dict_t *mod_dict)
|
||||
priv = this->private;
|
||||
GF_ASSERT (priv);
|
||||
|
||||
graph->type = GF_QUOTAD;
|
||||
|
||||
set_dict = dict_new ();
|
||||
if (!set_dict) {
|
||||
ret = -ENOMEM;
|
||||
@ -6050,6 +6090,7 @@ glusterd_snapdsvc_create_volfile (glusterd_volinfo_t *volinfo)
|
||||
int ret = -1;
|
||||
char filename [PATH_MAX] = {0,};
|
||||
|
||||
graph.type = GF_SNAPD;
|
||||
glusterd_svc_build_snapd_volfile (volinfo, filename, PATH_MAX);
|
||||
|
||||
ret = glusterd_snapdsvc_generate_volfile (&graph, volinfo);
|
||||
|
@ -32,6 +32,8 @@
|
||||
#define VKEY_FEATURES_TRASH "features.trash"
|
||||
#define VKEY_FEATURES_BITROT "features.bitrot"
|
||||
#define VKEY_FEATURES_SCRUB "features.scrub"
|
||||
#define VKEY_PARALLEL_READDIR "performance.parallel-readdir"
|
||||
#define VKEY_READDIR_AHEAD "performance.readdir-ahead"
|
||||
|
||||
#define AUTH_ALLOW_MAP_KEY "auth.allow"
|
||||
#define AUTH_REJECT_MAP_KEY "auth.reject"
|
||||
@ -55,9 +57,17 @@ typedef enum {
|
||||
GF_CLIENT_OTHER
|
||||
} glusterd_client_type_t;
|
||||
|
||||
/* It indicates the type of volfile that the graph is built for */
|
||||
typedef enum {
|
||||
GF_REBALANCED = 1,
|
||||
GF_QUOTAD,
|
||||
GF_SNAPD,
|
||||
} glusterd_graph_type_t;
|
||||
|
||||
struct volgen_graph {
|
||||
char **errstr;
|
||||
glusterfs_graph_t graph;
|
||||
glusterd_graph_type_t type;
|
||||
};
|
||||
typedef struct volgen_graph volgen_graph_t;
|
||||
|
||||
|
@ -1867,12 +1867,11 @@ struct volopt_map_entry glusterd_volopt_map[] = {
|
||||
{ .key = "performance.readdir-ahead",
|
||||
.voltype = "performance/readdir-ahead",
|
||||
.option = "!perf",
|
||||
.value = "off",
|
||||
.value = "on",
|
||||
.op_version = 3,
|
||||
.description = "enable/disable readdir-ahead translator in the volume.",
|
||||
.flags = OPT_FLAG_CLIENT_OPT | OPT_FLAG_XLATOR_OPT
|
||||
},
|
||||
|
||||
{ .key = "performance.io-cache",
|
||||
.voltype = "performance/io-cache",
|
||||
.option = "!perf",
|
||||
@ -3092,6 +3091,17 @@ struct volopt_map_entry glusterd_volopt_map[] = {
|
||||
.op_version = GD_OP_VERSION_3_8_4,
|
||||
.flags = OPT_FLAG_CLIENT_OPT
|
||||
},
|
||||
{ .key = "performance.parallel-readdir",
|
||||
.voltype = "performance/readdir-ahead",
|
||||
.option = "parallel-readdir",
|
||||
.value = "off",
|
||||
.type = DOC,
|
||||
.op_version = GD_OP_VERSION_3_10_0,
|
||||
.description = "If this option is enabled, the readdir operation is "
|
||||
"performed parallely on all the bricks, thus improving"
|
||||
" the performance of readdir. Note that the performance"
|
||||
"improvement is higher in large clusters"
|
||||
},
|
||||
{ .key = "performance.rda-request-size",
|
||||
.voltype = "performance/readdir-ahead",
|
||||
.option = "rda-request-size",
|
||||
|
Loading…
x
Reference in New Issue
Block a user