diff options
Diffstat (limited to 'xlators/cluster')
-rw-r--r-- | xlators/cluster/afr/src/afr-inode-read.c | 9 | ||||
-rw-r--r-- | xlators/cluster/afr/src/afr-inode-write.c | 15 | ||||
-rw-r--r-- | xlators/cluster/afr/src/afr-inode-write.h | 3 | ||||
-rw-r--r-- | xlators/cluster/afr/src/afr-self-heal-data.c | 8 | ||||
-rw-r--r-- | xlators/cluster/afr/src/afr.h | 2 |
5 files changed, 20 insertions, 17 deletions
diff --git a/xlators/cluster/afr/src/afr-inode-read.c b/xlators/cluster/afr/src/afr-inode-read.c index c7a7e9987..2fa8f9e36 100644 --- a/xlators/cluster/afr/src/afr-inode-read.c +++ b/xlators/cluster/afr/src/afr-inode-read.c @@ -679,7 +679,8 @@ out: int32_t afr_readv_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret, int32_t op_errno, - struct iovec *vector, int32_t count, struct stat *buf) + struct iovec *vector, int32_t count, struct stat *buf, + struct iobref *iobref) { afr_private_t * priv = NULL; afr_local_t * local = NULL; @@ -732,7 +733,8 @@ afr_readv_cbk (call_frame_t *frame, void *cookie, out: if (unwind) { - AFR_STACK_UNWIND (frame, op_ret, op_errno, vector, count, buf); + AFR_STACK_UNWIND (frame, op_ret, op_errno, vector, count, buf, + iobref); } return 0; @@ -802,7 +804,8 @@ afr_readv (call_frame_t *frame, xlator_t *this, op_ret = 0; out: if (op_ret == -1) { - AFR_STACK_UNWIND (frame, op_ret, op_errno, NULL, 0, NULL); + AFR_STACK_UNWIND (frame, op_ret, op_errno, NULL, 0, NULL, + NULL); } return 0; } diff --git a/xlators/cluster/afr/src/afr-inode-write.c b/xlators/cluster/afr/src/afr-inode-write.c index 8d33d5f62..e8d843b3c 100644 --- a/xlators/cluster/afr/src/afr-inode-write.c +++ b/xlators/cluster/afr/src/afr-inode-write.c @@ -939,7 +939,8 @@ afr_writev_wind (call_frame_t *frame, xlator_t *this) local->fd, local->cont.writev.vector, local->cont.writev.count, - local->cont.writev.offset); + local->cont.writev.offset, + local->cont.writev.iobref); if (!--call_count) break; @@ -957,9 +958,8 @@ afr_writev_done (call_frame_t *frame, xlator_t *this) local = frame->local; - if (local->cont.writev.refs) - dict_unref (local->cont.writev.refs); - local->cont.writev.refs = NULL; + iobref_unref (local->cont.writev.iobref); + local->cont.writev.iobref = NULL; local->transaction.unwind (frame, this); @@ -971,7 +971,8 @@ afr_writev_done (call_frame_t *frame, xlator_t *this) int afr_writev (call_frame_t *frame, xlator_t *this, fd_t *fd, - struct iovec *vector, int32_t count, off_t offset) + struct iovec *vector, int32_t count, off_t offset, + struct iobref *iobref) { afr_private_t * priv = NULL; afr_local_t * local = NULL; @@ -1010,9 +1011,7 @@ afr_writev (call_frame_t *frame, xlator_t *this, fd_t *fd, local->cont.writev.count = count; local->cont.writev.offset = offset; local->cont.writev.ino = fd->inode->ino; - - if (frame->root->req_refs) - local->cont.writev.refs = dict_ref (frame->root->req_refs); + local->cont.writev.iobref = iobref_ref (iobref); local->transaction.fop = afr_writev_wind; local->transaction.done = afr_writev_done; diff --git a/xlators/cluster/afr/src/afr-inode-write.h b/xlators/cluster/afr/src/afr-inode-write.h index 1f1a3a35a..358d25b52 100644 --- a/xlators/cluster/afr/src/afr-inode-write.h +++ b/xlators/cluster/afr/src/afr-inode-write.h @@ -38,7 +38,8 @@ afr_fchmod (call_frame_t *frame, xlator_t *this, int32_t afr_writev (call_frame_t *frame, xlator_t *this, fd_t *fd, - struct iovec *vector, int32_t count, off_t offset); + struct iovec *vector, int32_t count, off_t offset, + struct iobref *iobref); int32_t afr_truncate (call_frame_t *frame, xlator_t *this, diff --git a/xlators/cluster/afr/src/afr-self-heal-data.c b/xlators/cluster/afr/src/afr-self-heal-data.c index 2c1ceafff..0f06e4558 100644 --- a/xlators/cluster/afr/src/afr-self-heal-data.c +++ b/xlators/cluster/afr/src/afr-self-heal-data.c @@ -478,7 +478,8 @@ afr_sh_data_write_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int afr_sh_data_read_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret, int32_t op_errno, - struct iovec *vector, int32_t count, struct stat *buf) + struct iovec *vector, int32_t count, struct stat *buf, + struct iobref *iobref) { afr_private_t * priv = NULL; afr_local_t * local = NULL; @@ -511,8 +512,6 @@ afr_sh_data_read_cbk (call_frame_t *frame, void *cookie, offset = sh->offset; sh->offset += op_ret; - frame->root->req_refs = frame->root->rsp_refs; - if (sh->file_has_holes) { if (iov_0filled (vector, count) == 0) { /* the iter function depends on the @@ -533,7 +532,8 @@ afr_sh_data_read_cbk (call_frame_t *frame, void *cookie, (void *) (long) i, priv->children[i], priv->children[i]->fops->writev, - sh->healing_fd, vector, count, offset); + sh->healing_fd, vector, count, offset, + iobref); if (!--call_count) break; diff --git a/xlators/cluster/afr/src/afr.h b/xlators/cluster/afr/src/afr.h index 10e50c967..c15ed85f9 100644 --- a/xlators/cluster/afr/src/afr.h +++ b/xlators/cluster/afr/src/afr.h @@ -263,7 +263,7 @@ typedef struct _afr_local { int32_t op_ret; struct iovec *vector; - dict_t *refs; + struct iobref *iobref; int32_t count; off_t offset; } writev; |