summaryrefslogtreecommitdiffstats
path: root/xlators/cluster/afr
diff options
context:
space:
mode:
Diffstat (limited to 'xlators/cluster/afr')
-rw-r--r--xlators/cluster/afr/src/afr-transaction.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/xlators/cluster/afr/src/afr-transaction.c b/xlators/cluster/afr/src/afr-transaction.c
index 908c6bea0b7..2bb4e827c76 100644
--- a/xlators/cluster/afr/src/afr-transaction.c
+++ b/xlators/cluster/afr/src/afr-transaction.c
@@ -537,10 +537,14 @@ afr_handle_symmetric_errors (call_frame_t *frame, xlator_t *this)
}
i_errno = local->replies[i].op_errno;
- if (i_errno == ENOTCONN) {
+ if (i_errno == ENOTCONN || i_errno == EDQUOT ||
+ i_errno == ENOSPC) {
/* ENOTCONN is not a symmetric error. We do not
know if the operation was performed on the
backend or not.
+ * Before reaching EDQUOT and ENOSPC, each brick would
+ * have written some amount of data, hence this is not
+ * symmetric error.
*/
matching_errors = _gf_false;
break;
@@ -719,7 +723,7 @@ afr_changelog_post_op_now (call_frame_t *frame, xlator_t *this)
else
need_undirty = _gf_true;
- if (local->op_ret < 0) {
+ if (local->op_ret < 0 && !nothing_failed) {
afr_changelog_post_op_done (frame, this);
goto out;
}