summaryrefslogtreecommitdiffstats
path: root/xlators/cluster/dht/src
diff options
context:
space:
mode:
authorshishir gowda <sgowda@redhat.com>2012-11-27 12:05:28 +0530
committerVijay Bellur <vbellur@redhat.com>2012-11-29 02:26:18 -0800
commitc85a3eee54b4028573c905829d5b46c0b6512c56 (patch)
treeae4c036be1c6cd7e8f223377accba74169e22c6f /xlators/cluster/dht/src
parentf8c19b4c6af34b96747881bcb85cddb87484f08e (diff)
cluster/dht: send ACCESS call on dir to first_up_subvol if cached is downv3.4.0qa3
Change-Id: I4f518a969bbe3a11075e7c9ae10bd21bf059d5f3 BUG: 867253 Signed-off-by: shishir gowda <sgowda@redhat.com> Reviewed-on: http://review.gluster.org/4240 Reviewed-by: Jeff Darcy <jdarcy@redhat.com> Tested-by: Gluster Build System <jenkins@build.gluster.com>
Diffstat (limited to 'xlators/cluster/dht/src')
-rw-r--r--xlators/cluster/dht/src/dht-inode-read.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/xlators/cluster/dht/src/dht-inode-read.c b/xlators/cluster/dht/src/dht-inode-read.c
index 7e29a7a8ce6..f17cb73b97c 100644
--- a/xlators/cluster/dht/src/dht-inode-read.c
+++ b/xlators/cluster/dht/src/dht-inode-read.c
@@ -498,12 +498,23 @@ dht_access_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
{
int ret = -1;
dht_local_t *local = NULL;
+ xlator_t *subvol = NULL;
local = frame->local;
if (local->call_cnt != 1)
goto out;
+ if ((op_ret == -1) && (op_errno == ENOTCONN) &&
+ IA_ISDIR(local->loc.inode->ia_type)) {
+
+ subvol = dht_first_up_subvol (this);
+ if (!subvol)
+ goto out;
+ STACK_WIND (frame, dht_access_cbk, subvol, subvol->fops->access,
+ &local->loc, local->rebalance.flags, NULL);
+ return 0;
+ }
if ((op_ret == -1) && (op_errno == ENOENT)) {
/* File would be migrated to other node */
local->rebalance.target_op_fn = dht_access2;