diff options
Diffstat (limited to 'xlators/cluster/ec/src/ec-dir-read.c')
-rw-r--r-- | xlators/cluster/ec/src/ec-dir-read.c | 11 |
1 files changed, 3 insertions, 8 deletions
diff --git a/xlators/cluster/ec/src/ec-dir-read.c b/xlators/cluster/ec/src/ec-dir-read.c index 5469d62bc3f..09010d5d108 100644 --- a/xlators/cluster/ec/src/ec-dir-read.c +++ b/xlators/cluster/ec/src/ec-dir-read.c @@ -438,14 +438,9 @@ int32_t ec_manager_readdir(ec_fop_data_t * fop, int32_t state) case EC_STATE_PREPARE_ANSWER: cbk = fop->answer; if (cbk) { - if ((cbk->op_ret < 0) && - ec_is_recoverable_error (cbk->op_errno)) { - GF_ASSERT (fop->mask & (1ULL<<cbk->idx)); - fop->mask ^= (1ULL << cbk->idx); - if (fop->mask == 0) - return EC_STATE_REPORT; - return EC_STATE_DISPATCH; - } + if (ec_dispatch_one_retry (fop, cbk)) + return EC_STATE_DISPATCH; + if ((cbk->op_ret > 0) && (fop->id == GF_FOP_READDIRP)) { ec_adjust_readdirp (fop->xl->private, cbk->idx, &cbk->entries); |