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; |