diff options
Diffstat (limited to 'xlators/cluster/dht/src/dht-inode-read.c')
| -rw-r--r-- | xlators/cluster/dht/src/dht-inode-read.c | 6 | 
1 files changed, 5 insertions, 1 deletions
diff --git a/xlators/cluster/dht/src/dht-inode-read.c b/xlators/cluster/dht/src/dht-inode-read.c index 1b05f18a4af..86b064d6e89 100644 --- a/xlators/cluster/dht/src/dht-inode-read.c +++ b/xlators/cluster/dht/src/dht-inode-read.c @@ -154,6 +154,7 @@ dht_file_attr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          if (local->call_cnt != 1)                  goto out; +        local->op_errno = op_errno;          /* Check if the rebalance phase2 is true */          if ((op_ret == -1) || IS_DHT_MIGRATION_PHASE2 (stbuf)) {                  if (local->fd) @@ -396,6 +397,7 @@ dht_readv_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          if ((op_ret == -1) && !dht_inode_missing(op_errno))                  goto out; +        local->op_errno = op_errno;          if ((op_ret == -1) || IS_DHT_MIGRATION_PHASE2 (stbuf)) {                  /* File would be migrated to other node */                  ret = fd_ctx_get (local->fd, this, NULL); @@ -515,8 +517,9 @@ dht_access_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                              &local->loc, local->rebalance.flags, NULL);                  return 0;          } -        if ((op_ret == -1) && (op_errno == ENOENT)) { +        if ((op_ret == -1) && dht_inode_missing(op_errno)) {                  /* File would be migrated to other node */ +                local->op_errno = op_errno;                  local->rebalance.target_op_fn = dht_access2;                  ret = dht_rebalance_complete_check (frame->this, frame);                  if (!ret) @@ -722,6 +725,7 @@ dht_fsync_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int op_ret,                  goto out;          } +        local->op_errno = op_errno;          ret = fd_ctx_get (local->fd, this, NULL);          if (ret) {                  local->rebalance.target_op_fn = dht_fsync2;  | 
