summaryrefslogtreecommitdiffstats
path: root/xlators/performance/decompounder/src
diff options
context:
space:
mode:
authorAnuradha Talur <atalur@redhat.com>2016-08-29 16:41:09 +0530
committerRaghavendra G <rgowdapp@redhat.com>2016-08-30 23:50:40 -0700
commit7cbc10037ecc873d60c3a970d00faf2819019525 (patch)
tree35026d258fa4bb9aad89f7a504954bb566ffa4fc /xlators/performance/decompounder/src
parentfe929224c47d5c82da5650e9e1041645a8d7f244 (diff)
compound fops: Some fixes to compound fops framework
Change-Id: I808fd5f9f002a35bff94d310c5d61a781e49570b BUG: 1360169 Signed-off-by: Anuradha Talur <atalur@redhat.com> Reviewed-on: http://review.gluster.org/15010 Smoke: Gluster Build System <jenkins@build.gluster.org> NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org> CentOS-regression: Gluster Build System <jenkins@build.gluster.org> Reviewed-by: Raghavendra G <rgowdapp@redhat.com>
Diffstat (limited to 'xlators/performance/decompounder/src')
-rw-r--r--xlators/performance/decompounder/src/decompounder.c179
-rw-r--r--xlators/performance/decompounder/src/decompounder.h1
2 files changed, 90 insertions, 90 deletions
diff --git a/xlators/performance/decompounder/src/decompounder.c b/xlators/performance/decompounder/src/decompounder.c
index 3009fcdd4b1..cd353b78ec3 100644
--- a/xlators/performance/decompounder/src/decompounder.c
+++ b/xlators/performance/decompounder/src/decompounder.c
@@ -10,17 +10,14 @@
#include "decompounder.h"
#include "mem-types.h"
+#include "compound-fop-utils.h"
void
dc_local_cleanup (dc_local_t *local)
{
int i = 0;
- for (i = 0; i < local->length; i++)
- args_cbk_wipe (&local->compound_rsp->rsp_list[i]);
-
- GF_FREE (local->compound_rsp->rsp_list);
- GF_FREE (local->compound_rsp);
+ compound_args_cbk_cleanup (local->compound_rsp);
return;
}
@@ -551,290 +548,292 @@ dc_compound_fop_wind (call_frame_t *frame, xlator_t *this)
compound_args_t *c_req = local->compound_req;
compound_args_cbk_t *c_rsp = local->compound_rsp;
int counter = local->counter;
- default_args_t curr_fop = c_req->req_list[counter];
+ default_args_t *curr_fop = &c_req->req_list[counter];
int op_ret = 0;
int op_errno = ENOMEM;
if (local->counter == local->length)
goto done;
+ c_rsp->enum_list[counter] = c_req->enum_list[counter];
+
switch (c_req->enum_list[counter]) {
case GF_FOP_STAT:
STACK_WIND (frame, dc_stat_cbk,
FIRST_CHILD(this), FIRST_CHILD(this)->fops->stat,
- &curr_fop.loc, curr_fop.xdata);
+ &curr_fop->loc, curr_fop->xdata);
break;
case GF_FOP_READLINK:
STACK_WIND (frame, dc_readlink_cbk,
FIRST_CHILD(this),
FIRST_CHILD(this)->fops->readlink,
- &curr_fop.loc, curr_fop.size,
- curr_fop.xdata);
+ &curr_fop->loc, curr_fop->size,
+ curr_fop->xdata);
break;
case GF_FOP_MKNOD:
STACK_WIND (frame, dc_mknod_cbk,
FIRST_CHILD(this), FIRST_CHILD(this)->fops->mknod,
- &curr_fop.loc, curr_fop.mode, curr_fop.rdev,
- curr_fop.umask, curr_fop.xdata);
+ &curr_fop->loc, curr_fop->mode, curr_fop->rdev,
+ curr_fop->umask, curr_fop->xdata);
break;
case GF_FOP_MKDIR:
STACK_WIND (frame, dc_mkdir_cbk,
FIRST_CHILD(this), FIRST_CHILD(this)->fops->mkdir,
- &curr_fop.loc, curr_fop.mode,
- curr_fop.umask, curr_fop.xdata);
+ &curr_fop->loc, curr_fop->mode,
+ curr_fop->umask, curr_fop->xdata);
break;
case GF_FOP_UNLINK:
STACK_WIND (frame, dc_unlink_cbk,
FIRST_CHILD(this), FIRST_CHILD(this)->fops->unlink,
- &curr_fop.loc, curr_fop.xflag, curr_fop.xdata);
+ &curr_fop->loc, curr_fop->xflag, curr_fop->xdata);
break;
case GF_FOP_RMDIR:
STACK_WIND (frame, dc_rmdir_cbk,
FIRST_CHILD(this), FIRST_CHILD(this)->fops->rmdir,
- &curr_fop.loc, curr_fop.flags, curr_fop.xdata);
+ &curr_fop->loc, curr_fop->flags, curr_fop->xdata);
break;
case GF_FOP_SYMLINK:
STACK_WIND (frame, dc_symlink_cbk,
FIRST_CHILD(this), FIRST_CHILD(this)->fops->symlink,
- curr_fop.linkname, &curr_fop.loc,
- curr_fop.umask, curr_fop.xdata);
+ curr_fop->linkname, &curr_fop->loc,
+ curr_fop->umask, curr_fop->xdata);
break;
case GF_FOP_RENAME:
STACK_WIND (frame, dc_rename_cbk,
FIRST_CHILD(this), FIRST_CHILD(this)->fops->rename,
- &curr_fop.loc, &curr_fop.loc2, curr_fop.xdata);
+ &curr_fop->loc, &curr_fop->loc2, curr_fop->xdata);
break;
case GF_FOP_LINK:
STACK_WIND (frame, dc_link_cbk,
FIRST_CHILD(this), FIRST_CHILD(this)->fops->link,
- &curr_fop.loc, &curr_fop.loc2, curr_fop.xdata);
+ &curr_fop->loc, &curr_fop->loc2, curr_fop->xdata);
break;
case GF_FOP_TRUNCATE:
STACK_WIND (frame, dc_truncate_cbk,
FIRST_CHILD(this),
FIRST_CHILD(this)->fops->truncate,
- &curr_fop.loc, curr_fop.offset, curr_fop.xdata);
+ &curr_fop->loc, curr_fop->offset, curr_fop->xdata);
break;
case GF_FOP_OPEN:
STACK_WIND (frame, dc_open_cbk,
FIRST_CHILD(this), FIRST_CHILD(this)->fops->open,
- &curr_fop.loc, curr_fop.flags, curr_fop.fd,
- curr_fop.xdata);
+ &curr_fop->loc, curr_fop->flags, curr_fop->fd,
+ curr_fop->xdata);
break;
case GF_FOP_READ:
STACK_WIND (frame, dc_readv_cbk,
FIRST_CHILD(this), FIRST_CHILD(this)->fops->readv,
- curr_fop.fd, curr_fop.size, curr_fop.offset,
- curr_fop.flags, curr_fop.xdata);
+ curr_fop->fd, curr_fop->size, curr_fop->offset,
+ curr_fop->flags, curr_fop->xdata);
break;
case GF_FOP_WRITE:
STACK_WIND (frame, dc_writev_cbk,
FIRST_CHILD(this), FIRST_CHILD(this)->fops->writev,
- curr_fop.fd, curr_fop.vector, curr_fop.count,
- curr_fop.offset, curr_fop.flags, curr_fop.iobref,
- curr_fop.xdata);
+ curr_fop->fd, curr_fop->vector, curr_fop->count,
+ curr_fop->offset, curr_fop->flags, curr_fop->iobref,
+ curr_fop->xdata);
break;
case GF_FOP_STATFS:
STACK_WIND (frame, dc_statfs_cbk,
FIRST_CHILD(this), FIRST_CHILD(this)->fops->statfs,
- &curr_fop.loc, curr_fop.xdata);
+ &curr_fop->loc, curr_fop->xdata);
break;
case GF_FOP_FLUSH:
STACK_WIND (frame, dc_flush_cbk,
FIRST_CHILD(this), FIRST_CHILD(this)->fops->flush,
- curr_fop.fd, curr_fop.xdata);
+ curr_fop->fd, curr_fop->xdata);
break;
case GF_FOP_FSYNC:
STACK_WIND (frame, dc_fsync_cbk,
FIRST_CHILD(this), FIRST_CHILD(this)->fops->fsync,
- curr_fop.fd, curr_fop.datasync, curr_fop.xdata);
+ curr_fop->fd, curr_fop->datasync, curr_fop->xdata);
break;
case GF_FOP_SETXATTR:
STACK_WIND (frame, dc_setxattr_cbk,
FIRST_CHILD(this),
FIRST_CHILD(this)->fops->setxattr,
- &curr_fop.loc, curr_fop.xattr, curr_fop.flags,
- curr_fop.xdata);
+ &curr_fop->loc, curr_fop->xattr, curr_fop->flags,
+ curr_fop->xdata);
break;
case GF_FOP_GETXATTR:
STACK_WIND (frame, dc_getxattr_cbk,
FIRST_CHILD(this),
FIRST_CHILD(this)->fops->getxattr,
- &curr_fop.loc, curr_fop.name, curr_fop.xdata);
+ &curr_fop->loc, curr_fop->name, curr_fop->xdata);
break;
case GF_FOP_REMOVEXATTR:
STACK_WIND (frame, dc_removexattr_cbk,
FIRST_CHILD(this),
FIRST_CHILD(this)->fops->removexattr,
- &curr_fop.loc, curr_fop.name, curr_fop.xdata);
+ &curr_fop->loc, curr_fop->name, curr_fop->xdata);
break;
case GF_FOP_OPENDIR:
STACK_WIND (frame, dc_opendir_cbk,
FIRST_CHILD(this),
FIRST_CHILD(this)->fops->opendir,
- &curr_fop.loc, curr_fop.fd, curr_fop.xdata);
+ &curr_fop->loc, curr_fop->fd, curr_fop->xdata);
break;
case GF_FOP_FSYNCDIR:
STACK_WIND (frame, dc_fsyncdir_cbk,
FIRST_CHILD(this),
FIRST_CHILD(this)->fops->fsyncdir,
- curr_fop.fd, curr_fop.datasync, curr_fop.xdata);
+ curr_fop->fd, curr_fop->datasync, curr_fop->xdata);
break;
case GF_FOP_ACCESS:
STACK_WIND (frame, dc_access_cbk,
FIRST_CHILD(this), FIRST_CHILD(this)->fops->access,
- &curr_fop.loc, curr_fop.mask, curr_fop.xdata);
+ &curr_fop->loc, curr_fop->mask, curr_fop->xdata);
break;
case GF_FOP_CREATE:
STACK_WIND (frame, dc_create_cbk,
FIRST_CHILD(this), FIRST_CHILD(this)->fops->create,
- &curr_fop.loc, curr_fop.flags, curr_fop.mode,
- curr_fop.umask, curr_fop.fd, curr_fop.xdata);
+ &curr_fop->loc, curr_fop->flags, curr_fop->mode,
+ curr_fop->umask, curr_fop->fd, curr_fop->xdata);
break;
case GF_FOP_FTRUNCATE:
STACK_WIND (frame, dc_ftruncate_cbk,
FIRST_CHILD(this),
FIRST_CHILD(this)->fops->ftruncate,
- curr_fop.fd, curr_fop.offset, curr_fop.xdata);
+ curr_fop->fd, curr_fop->offset, curr_fop->xdata);
break;
case GF_FOP_FSTAT:
STACK_WIND (frame, dc_fstat_cbk,
FIRST_CHILD(this), FIRST_CHILD(this)->fops->fstat,
- curr_fop.fd, curr_fop.xdata);
+ curr_fop->fd, curr_fop->xdata);
break;
case GF_FOP_LK:
STACK_WIND (frame, dc_lk_cbk,
FIRST_CHILD(this), FIRST_CHILD(this)->fops->lk,
- curr_fop.fd,
- curr_fop.cmd, &curr_fop.lock, curr_fop.xdata);
+ curr_fop->fd,
+ curr_fop->cmd, &curr_fop->lock, curr_fop->xdata);
break;
case GF_FOP_LOOKUP:
STACK_WIND (frame, dc_lookup_cbk,
FIRST_CHILD(this), FIRST_CHILD(this)->fops->lookup,
- &curr_fop.loc, curr_fop.xdata);
+ &curr_fop->loc, curr_fop->xdata);
break;
case GF_FOP_READDIR:
STACK_WIND (frame, dc_readdir_cbk,
FIRST_CHILD(this), FIRST_CHILD(this)->fops->readdir,
- curr_fop.fd, curr_fop.size, curr_fop.offset,
- curr_fop.xdata);
+ curr_fop->fd, curr_fop->size, curr_fop->offset,
+ curr_fop->xdata);
break;
case GF_FOP_INODELK:
STACK_WIND (frame, dc_inodelk_cbk,
FIRST_CHILD(this), FIRST_CHILD(this)->fops->inodelk,
- curr_fop.volume, &curr_fop.loc,
- curr_fop.cmd, &curr_fop.lock, curr_fop.xdata);
+ curr_fop->volume, &curr_fop->loc,
+ curr_fop->cmd, &curr_fop->lock, curr_fop->xdata);
break;
case GF_FOP_FINODELK:
STACK_WIND (frame, dc_finodelk_cbk,
FIRST_CHILD(this),
FIRST_CHILD(this)->fops->finodelk,
- curr_fop.volume, curr_fop.fd,
- curr_fop.cmd, &curr_fop.lock, curr_fop.xdata);
+ curr_fop->volume, curr_fop->fd,
+ curr_fop->cmd, &curr_fop->lock, curr_fop->xdata);
break;
case GF_FOP_ENTRYLK:
STACK_WIND (frame, dc_entrylk_cbk,
FIRST_CHILD(this), FIRST_CHILD(this)->fops->entrylk,
- curr_fop.volume, &curr_fop.loc,
- curr_fop.name, curr_fop.entrylkcmd,
- curr_fop.entrylktype, curr_fop.xdata);
+ curr_fop->volume, &curr_fop->loc,
+ curr_fop->name, curr_fop->entrylkcmd,
+ curr_fop->entrylktype, curr_fop->xdata);
break;
case GF_FOP_FENTRYLK:
STACK_WIND (frame, dc_fentrylk_cbk,
FIRST_CHILD(this),
FIRST_CHILD(this)->fops->fentrylk,
- curr_fop.volume, curr_fop.fd,
- curr_fop.name, curr_fop.entrylkcmd,
- curr_fop.entrylktype, curr_fop.xdata);
+ curr_fop->volume, curr_fop->fd,
+ curr_fop->name, curr_fop->entrylkcmd,
+ curr_fop->entrylktype, curr_fop->xdata);
break;
case GF_FOP_XATTROP:
STACK_WIND (frame, dc_xattrop_cbk,
FIRST_CHILD(this),
FIRST_CHILD(this)->fops->xattrop,
- &curr_fop.loc, curr_fop.optype, curr_fop.xattr,
- curr_fop.xdata);
+ &curr_fop->loc, curr_fop->optype, curr_fop->xattr,
+ curr_fop->xdata);
break;
case GF_FOP_FXATTROP:
STACK_WIND (frame, dc_fxattrop_cbk,
FIRST_CHILD(this),
FIRST_CHILD(this)->fops->fxattrop,
- curr_fop.fd, curr_fop.optype, curr_fop.xattr,
- curr_fop.xdata);
+ curr_fop->fd, curr_fop->optype, curr_fop->xattr,
+ curr_fop->xdata);
break;
case GF_FOP_FGETXATTR:
STACK_WIND (frame, dc_fgetxattr_cbk,
FIRST_CHILD(this),
FIRST_CHILD(this)->fops->fgetxattr,
- curr_fop.fd, curr_fop.name, curr_fop.xdata);
+ curr_fop->fd, curr_fop->name, curr_fop->xdata);
break;
case GF_FOP_FSETXATTR:
STACK_WIND (frame, dc_fsetxattr_cbk,
FIRST_CHILD(this),
FIRST_CHILD(this)->fops->fsetxattr,
- curr_fop.fd, curr_fop.xattr, curr_fop.flags,
- curr_fop.xdata);
+ curr_fop->fd, curr_fop->xattr, curr_fop->flags,
+ curr_fop->xdata);
break;
case GF_FOP_RCHECKSUM:
STACK_WIND (frame, dc_rchecksum_cbk,
FIRST_CHILD(this),
FIRST_CHILD(this)->fops->rchecksum,
- curr_fop.fd, curr_fop.offset, curr_fop.size,
- curr_fop.xdata);
+ curr_fop->fd, curr_fop->offset, curr_fop->size,
+ curr_fop->xdata);
break;
case GF_FOP_SETATTR:
STACK_WIND (frame, dc_setattr_cbk,
FIRST_CHILD(this), FIRST_CHILD(this)->fops->setattr,
- &curr_fop.loc, &curr_fop.stat, curr_fop.valid,
- curr_fop.xdata);
+ &curr_fop->loc, &curr_fop->stat, curr_fop->valid,
+ curr_fop->xdata);
break;
case GF_FOP_FSETATTR:
STACK_WIND (frame, dc_fsetattr_cbk,
FIRST_CHILD(this),
FIRST_CHILD(this)->fops->fsetattr,
- curr_fop.fd, &curr_fop.stat, curr_fop.valid,
- curr_fop.xdata);
+ curr_fop->fd, &curr_fop->stat, curr_fop->valid,
+ curr_fop->xdata);
break;
case GF_FOP_READDIRP:
STACK_WIND (frame, dc_readdirp_cbk,
FIRST_CHILD(this),
FIRST_CHILD(this)->fops->readdirp,
- curr_fop.fd, curr_fop.size, curr_fop.offset,
- curr_fop.xdata);
+ curr_fop->fd, curr_fop->size, curr_fop->offset,
+ curr_fop->xdata);
break;
case GF_FOP_FREMOVEXATTR:
STACK_WIND (frame, dc_fremovexattr_cbk,
FIRST_CHILD(this),
FIRST_CHILD(this)->fops->fremovexattr,
- curr_fop.fd, curr_fop.name, curr_fop.xdata);
+ curr_fop->fd, curr_fop->name, curr_fop->xdata);
break;
case GF_FOP_FALLOCATE:
STACK_WIND (frame, dc_fallocate_cbk,
FIRST_CHILD(this), FIRST_CHILD(this)->fops->fallocate,
- curr_fop.fd, curr_fop.flags, curr_fop.offset,
- curr_fop.size, curr_fop.xdata);
+ curr_fop->fd, curr_fop->flags, curr_fop->offset,
+ curr_fop->size, curr_fop->xdata);
break;
case GF_FOP_DISCARD:
STACK_WIND (frame, dc_discard_cbk,
FIRST_CHILD(this), FIRST_CHILD(this)->fops->discard,
- curr_fop.fd, curr_fop.offset, curr_fop.size,
- curr_fop.xdata);
+ curr_fop->fd, curr_fop->offset, curr_fop->size,
+ curr_fop->xdata);
break;
case GF_FOP_ZEROFILL:
STACK_WIND (frame, dc_zerofill_cbk,
FIRST_CHILD(this), FIRST_CHILD(this)->fops->zerofill,
- curr_fop.fd, curr_fop.offset, curr_fop.size,
- curr_fop.xdata);
+ curr_fop->fd, curr_fop->offset, curr_fop->size,
+ curr_fop->xdata);
break;
case GF_FOP_IPC:
STACK_WIND (frame, dc_ipc_cbk,
FIRST_CHILD(this), FIRST_CHILD(this)->fops->ipc,
- curr_fop.cmd, curr_fop.xdata);
+ curr_fop->cmd, curr_fop->xdata);
break;
case GF_FOP_SEEK:
STACK_WIND (frame, dc_seek_cbk,
FIRST_CHILD(this), FIRST_CHILD(this)->fops->seek,
- curr_fop.fd, curr_fop.offset, curr_fop.what,
- curr_fop.xdata);
+ curr_fop->fd, curr_fop->offset, curr_fop->what,
+ curr_fop->xdata);
break;
default:
return -ENOTSUP;
@@ -865,20 +864,13 @@ dc_compound (call_frame_t *frame, xlator_t *this, void *data, dict_t *xdata)
frame->local = local;
- local->compound_rsp = GF_CALLOC (1, sizeof (local->compound_rsp),
- gf_dc_mt_rsp_t);
+ local->compound_rsp = compound_args_cbk_alloc (compound_req->fop_length,
+ NULL);
if (!local->compound_rsp)
goto out;
compound_rsp = local->compound_rsp;
- compound_rsp->fop_length = compound_req->fop_length;
- compound_rsp->rsp_list = GF_CALLOC (compound_rsp->fop_length,
- sizeof (default_args_cbk_t),
- gf_mt_default_args_cbk_t);
- if (!compound_rsp->rsp_list)
- goto out;
-
local->length = compound_req->fop_length;
local->counter = 0;
local->compound_req = compound_req;
@@ -941,6 +933,13 @@ init (xlator_t *this)
ret = -1;
goto out;
}
+
+ this->local_pool = mem_pool_new (dc_local_t, 128);
+ if (!this->local_pool) {
+ ret = -1;
+ goto out;
+ }
+
out:
return ret;
}
diff --git a/xlators/performance/decompounder/src/decompounder.h b/xlators/performance/decompounder/src/decompounder.h
index 1b8c1d6d00f..59fb908ed06 100644
--- a/xlators/performance/decompounder/src/decompounder.h
+++ b/xlators/performance/decompounder/src/decompounder.h
@@ -26,6 +26,7 @@ typedef struct {
#define DC_STACK_UNWIND(frame, op_ret, op_errno, rsp, xdata) do {\
dc_local_t *__local = NULL; \
+ \
if (frame) { \
__local = frame->local; \
frame->local = NULL; \