diff options
Diffstat (limited to 'xlators')
| -rw-r--r-- | xlators/cluster/afr/src/afr-transaction.c | 8 | 
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;          }  | 
