summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--xlators/cluster/dht/src/dht-common.c17
-rw-r--r--xlators/mount/fuse/src/fuse-bridge.c5
2 files changed, 17 insertions, 5 deletions
diff --git a/xlators/cluster/dht/src/dht-common.c b/xlators/cluster/dht/src/dht-common.c
index f0bac240b..1cfeae690 100644
--- a/xlators/cluster/dht/src/dht-common.c
+++ b/xlators/cluster/dht/src/dht-common.c
@@ -2201,7 +2201,7 @@ dht_readdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
subvol = dht_layout_search (this, layout, orig_entry->d_name);
- if (!subvol || (subvol != prev->this)) {
+ if (!subvol || (subvol == prev->this)) {
entry = gf_dirent_for_name (orig_entry->d_name);
if (!entry) {
gf_log (this->name, GF_LOG_ERROR,
@@ -2317,7 +2317,20 @@ int
dht_readdir (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size,
off_t yoff)
{
- dht_do_readdir (frame, this, fd, size, yoff, GF_FOP_READDIR);
+ int op = GF_FOP_READDIR;
+ dht_conf_t *conf = NULL;
+ int i = 0;
+
+ conf = this->private;
+
+ for (i = 0; i < conf->subvolume_cnt; i++) {
+ if (!conf->subvolume_status[i]) {
+ op = GF_FOP_READDIRP;
+ break;
+ }
+ }
+
+ dht_do_readdir (frame, this, fd, size, yoff, op);
return 0;
}
diff --git a/xlators/mount/fuse/src/fuse-bridge.c b/xlators/mount/fuse/src/fuse-bridge.c
index 1adbddadf..22973ac5d 100644
--- a/xlators/mount/fuse/src/fuse-bridge.c
+++ b/xlators/mount/fuse/src/fuse-bridge.c
@@ -2165,7 +2165,6 @@ fuse_readdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
fde = (struct fuse_dirent *)(buf + size);
fde->ino = entry->d_ino;
fde->off = entry->d_off;
- fde->type = d_type_from_stat (&entry->d_stat);
fde->namelen = strlen (entry->d_name);
strncpy (fde->name, entry->d_name, fde->namelen);
size += FUSE_DIRENT_SIZE (fde);
@@ -2201,8 +2200,8 @@ fuse_readdir (xlator_t *this, fuse_in_header_t *finh, void *msg)
"%"PRIu64": READDIR (%p, size=%"PRIu32", offset=%"PRId64")",
finh->unique, fd, fri->size, fri->offset);
- FUSE_FOP (state, fuse_readdir_cbk, GF_FOP_READDIRP,
- readdirp, fd, fri->size, fri->offset);
+ FUSE_FOP (state, fuse_readdir_cbk, GF_FOP_READDIR,
+ readdir, fd, fri->size, fri->offset);
}