diff options
| -rw-r--r-- | xlators/cluster/afr/src/afr-common.c | 2 | ||||
| -rw-r--r-- | xlators/cluster/afr/src/afr-inode-write.c | 13 | ||||
| -rw-r--r-- | xlators/cluster/afr/src/afr-transaction.c | 3 | ||||
| -rw-r--r-- | xlators/cluster/afr/src/afr.h | 4 | 
4 files changed, 12 insertions, 10 deletions
diff --git a/xlators/cluster/afr/src/afr-common.c b/xlators/cluster/afr/src/afr-common.c index c20c53218f9..e59f160db0c 100644 --- a/xlators/cluster/afr/src/afr-common.c +++ b/xlators/cluster/afr/src/afr-common.c @@ -1640,7 +1640,7 @@ afr_read_subvol_decide (inode_t *inode, xlator_t *this,          data_subvol = afr_data_subvol_get (inode, this, NULL, NULL, NULL, args);          mdata_subvol = afr_metadata_subvol_get (inode, this, -                                                0, 0, args); +                                                NULL, NULL, NULL, args);          if (data_subvol == -1 || mdata_subvol == -1)                  return -1; diff --git a/xlators/cluster/afr/src/afr-inode-write.c b/xlators/cluster/afr/src/afr-inode-write.c index 47320ce9412..76526bcf177 100644 --- a/xlators/cluster/afr/src/afr-inode-write.c +++ b/xlators/cluster/afr/src/afr-inode-write.c @@ -79,16 +79,17 @@ __afr_inode_write_finalize (call_frame_t *frame, xlator_t *this)  	if (local->inode) {  		if (local->transaction.type == AFR_METADATA_TRANSACTION) -			read_subvol = afr_metadata_subvol_get (local->inode, this, -							       NULL, NULL, -                                                               &args); +                        read_subvol = afr_metadata_subvol_get (local->inode, +                                      this, NULL, local->readable, NULL, &args);  		else  			read_subvol = afr_data_subvol_get (local->inode, this, -                                                       NULL, NULL, NULL, &args); +                                            NULL, local->readable, NULL, &args);  	}  	local->op_ret = -1;  	local->op_errno = afr_final_errno (local, priv); +        afr_pick_error_xdata (local, priv, local->inode, local->readable, NULL, +                              NULL);  	for (i = 0; i < priv->child_count; i++) {  		if (!local->replies[i].valid) @@ -156,6 +157,8 @@ __afr_inode_write_fill (call_frame_t *frame, xlator_t *this, int child_index,  	local->replies[child_index].op_ret = op_ret;  	local->replies[child_index].op_errno = op_errno; +        if (xdata) +                local->replies[child_index].xdata = dict_ref (xdata);  	if (op_ret >= 0) {  		if (prebuf) @@ -164,8 +167,6 @@ __afr_inode_write_fill (call_frame_t *frame, xlator_t *this, int child_index,  			local->replies[child_index].poststat = *postbuf;  		if (xattr)  			local->replies[child_index].xattr = dict_ref (xattr); -                if (xdata) -                        local->replies[child_index].xdata = dict_ref (xdata);  	} else {  		afr_transaction_fop_failed (frame, this, child_index);  	} diff --git a/xlators/cluster/afr/src/afr-transaction.c b/xlators/cluster/afr/src/afr-transaction.c index 2760563e0ae..41418137ff0 100644 --- a/xlators/cluster/afr/src/afr-transaction.c +++ b/xlators/cluster/afr/src/afr-transaction.c @@ -815,7 +815,8 @@ afr_handle_quorum (call_frame_t *frame)                                        local->readable2);                  break;          default: -                /*TBD*/ +                afr_pick_error_xdata (local, priv, local->inode, +                                      local->readable, NULL, NULL);                  break;          }  } diff --git a/xlators/cluster/afr/src/afr.h b/xlators/cluster/afr/src/afr.h index c6afbbe20e0..31d761f638d 100644 --- a/xlators/cluster/afr/src/afr.h +++ b/xlators/cluster/afr/src/afr.h @@ -868,8 +868,8 @@ afr_read_subvol_get (inode_t *inode, xlator_t *this, int *subvol_p,  #define afr_data_subvol_get(i, t, s, r, e, a) \  	afr_read_subvol_get(i, t, s, r, e, AFR_DATA_TRANSACTION, a) -#define afr_metadata_subvol_get(i, t, s, e, a) \ -	afr_read_subvol_get(i, t, s, NULL, e, AFR_METADATA_TRANSACTION, a) +#define afr_metadata_subvol_get(i, t, s, r, e, a) \ +	afr_read_subvol_get(i, t, s, r, e, AFR_METADATA_TRANSACTION, a)  int  afr_inode_refresh (call_frame_t *frame, xlator_t *this, inode_t *inode,  | 
