summaryrefslogtreecommitdiffstats
path: root/xlators/cluster
diff options
context:
space:
mode:
authorAmar Tumballi <amar@gluster.com>2010-09-02 07:26:54 +0000
committerVijay Bellur <vijay@dev.gluster.com>2010-09-02 06:31:50 -0700
commitfed472201fdf17ef57ea9b823b9215a0b3f558ec (patch)
treee5c238dc0b2dd6291956728d51410eab566047b4 /xlators/cluster
parentee7f340f73eb2b61d5d1f6b881eede3b39432c9f (diff)
cluster/distribute: add option 'use-readdirp' to force readdirp
Signed-off-by: Amar Tumballi <amar@gluster.com> Signed-off-by: Vijay Bellur <vijay@dev.gluster.com> BUG: 1508 (add-brick works but files are not distributed to newly added server) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=1508
Diffstat (limited to 'xlators/cluster')
-rw-r--r--xlators/cluster/dht/src/dht-common.c3
-rw-r--r--xlators/cluster/dht/src/dht-common.h1
-rw-r--r--xlators/cluster/dht/src/dht.c12
3 files changed, 15 insertions, 1 deletions
diff --git a/xlators/cluster/dht/src/dht-common.c b/xlators/cluster/dht/src/dht-common.c
index 3b4fe36185d..a1b48649417 100644
--- a/xlators/cluster/dht/src/dht-common.c
+++ b/xlators/cluster/dht/src/dht-common.c
@@ -2644,6 +2644,9 @@ dht_readdir (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size,
}
}
+ if (conf->use_readdirp)
+ op = GF_FOP_READDIRP;
+
dht_do_readdir (frame, this, fd, size, yoff, op);
return 0;
}
diff --git a/xlators/cluster/dht/src/dht-common.h b/xlators/cluster/dht/src/dht-common.h
index dfdaf7e861c..464832c4125 100644
--- a/xlators/cluster/dht/src/dht-common.h
+++ b/xlators/cluster/dht/src/dht-common.h
@@ -155,6 +155,7 @@ struct dht_conf {
gf_lock_t layout_lock;
void *private; /* Can be used by wrapper xlators over
dht */
+ gf_boolean_t use_readdirp;
};
typedef struct dht_conf dht_conf_t;
diff --git a/xlators/cluster/dht/src/dht.c b/xlators/cluster/dht/src/dht.c
index 13f382af1b2..c926a1cf400 100644
--- a/xlators/cluster/dht/src/dht.c
+++ b/xlators/cluster/dht/src/dht.c
@@ -294,7 +294,14 @@ init (xlator_t *this)
&temp_str) == 0) {
gf_string2boolean (temp_str, &conf->unhashed_sticky_bit);
}
-
+
+ conf->use_readdirp = 0;
+
+ if (dict_get_str (this->options, "use-readdirp",
+ &temp_str) == 0) {
+ gf_string2boolean (temp_str, &conf->use_readdirp);
+ }
+
conf->disk_unit = 'p';
conf->min_free_disk = 10;
@@ -435,5 +442,8 @@ struct volume_options options[] = {
{ .key = {"unhashed-sticky-bit"},
.type = GF_OPTION_TYPE_BOOL
},
+ { .key = {"use-readdirp"},
+ .type = GF_OPTION_TYPE_BOOL
+ },
{ .key = {NULL} },
};