diff options
| author | Amar Tumballi <amarts@redhat.com> | 2012-03-20 17:22:24 +0530 | 
|---|---|---|
| committer | Anand Avati <avati@redhat.com> | 2012-03-22 16:40:27 -0700 | 
| commit | 9d3af972f516b6ba38d2736ce2016e34a452d569 (patch) | |
| tree | 1dcdc620748a42cdfb5464c3adaae5a4a3a6f869 /xlators/performance/io-threads/src/io-threads.c | |
| parent | afe542eca18888463798747d2a95e5a9d239a4a0 (diff) | |
core: adding extra data for fops
with this change, the xlator APIs will have a dictionary as extra
argument, which is passed between all the layers. This can be
utilized for overloading in some of the operations.
Change-Id: I58a8186b3ef647650280e63f3e5e9b9de7827b40
Signed-off-by: Amar Tumballi <amarts@redhat.com>
BUG: 782265
Reviewed-on: http://review.gluster.com/2960
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Anand Avati <avati@redhat.com>
Diffstat (limited to 'xlators/performance/io-threads/src/io-threads.c')
| -rw-r--r-- | xlators/performance/io-threads/src/io-threads.c | 625 | 
1 files changed, 336 insertions, 289 deletions
diff --git a/xlators/performance/io-threads/src/io-threads.c b/xlators/performance/io-threads/src/io-threads.c index d3196d50b03..c2d660d4fa1 100644 --- a/xlators/performance/io-threads/src/io-threads.c +++ b/xlators/performance/io-threads/src/io-threads.c @@ -279,10 +279,10 @@ out:  int  iot_lookup_cbk (call_frame_t *frame, void * cookie, xlator_t *this,                  int32_t op_ret, int32_t op_errno, -                inode_t *inode, struct iatt *buf, dict_t *xattr, +                inode_t *inode, struct iatt *buf, dict_t *xdata,                  struct iatt *postparent)  { -        STACK_UNWIND_STRICT (lookup, frame, op_ret, op_errno, inode, buf, xattr, +        STACK_UNWIND_STRICT (lookup, frame, op_ret, op_errno, inode, buf, xdata,                               postparent);          return 0;  } @@ -290,23 +290,23 @@ iot_lookup_cbk (call_frame_t *frame, void * cookie, xlator_t *this,  int  iot_lookup_wrapper (call_frame_t *frame, xlator_t *this, loc_t *loc, -                    dict_t *xattr_req) +                    dict_t *xdata)  {          STACK_WIND (frame, iot_lookup_cbk,                      FIRST_CHILD (this),                      FIRST_CHILD (this)->fops->lookup, -                    loc, xattr_req); +                    loc, xdata);          return 0;  }  int -iot_lookup (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *xattr_req) +iot_lookup (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *xdata)  {          call_stub_t     *stub = NULL;          int              ret = -1; -        stub = fop_lookup_stub (frame, iot_lookup_wrapper, loc, xattr_req); +        stub = fop_lookup_stub (frame, iot_lookup_wrapper, loc, xdata);          if (!stub) {                  gf_log (this->name, GF_LOG_ERROR,                          "cannot create lookup stub (out of memory)"); @@ -332,33 +332,35 @@ out:  int  iot_setattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                   int32_t op_ret, int32_t op_errno, -                 struct iatt *preop, struct iatt *postop) +                 struct iatt *preop, struct iatt *postop, dict_t *xdata)  { -        STACK_UNWIND_STRICT (setattr, frame, op_ret, op_errno, preop, postop); +        STACK_UNWIND_STRICT (setattr, frame, op_ret, op_errno, preop, postop, +                             xdata);          return 0;  }  int  iot_setattr_wrapper (call_frame_t *frame, xlator_t *this, loc_t *loc, -                     struct iatt *stbuf, int32_t valid) +                     struct iatt *stbuf, int32_t valid, dict_t *xdata)  {          STACK_WIND (frame, iot_setattr_cbk,                      FIRST_CHILD (this),                      FIRST_CHILD (this)->fops->setattr, -                    loc, stbuf, valid); +                    loc, stbuf, valid, xdata);          return 0;  }  int  iot_setattr (call_frame_t *frame, xlator_t *this, loc_t *loc, -             struct iatt *stbuf, int32_t valid) +             struct iatt *stbuf, int32_t valid, dict_t *xdata)  {          call_stub_t     *stub = NULL;          int              ret = -1; -        stub = fop_setattr_stub (frame, iot_setattr_wrapper, loc, stbuf, valid); +        stub = fop_setattr_stub (frame, iot_setattr_wrapper, loc, stbuf, valid, +                                 xdata);          if (!stub) {                  gf_log (this->name, GF_LOG_ERROR, "Cannot create setattr stub"                          "(Out of memory)"); @@ -374,7 +376,7 @@ out:                          call_stub_destroy (stub);                  } -                STACK_UNWIND_STRICT (setattr, frame, -1, -ret, NULL, NULL); +                STACK_UNWIND_STRICT (setattr, frame, -1, -ret, NULL, NULL, NULL);          }          return 0; @@ -384,32 +386,34 @@ out:  int  iot_fsetattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                    int32_t op_ret, int32_t op_errno, -                  struct iatt *preop, struct iatt *postop) +                  struct iatt *preop, struct iatt *postop, dict_t *xdata)  { -        STACK_UNWIND_STRICT (fsetattr, frame, op_ret, op_errno, preop, postop); +        STACK_UNWIND_STRICT (fsetattr, frame, op_ret, op_errno, preop, postop, +                             xdata);          return 0;  }  int  iot_fsetattr_wrapper (call_frame_t *frame, xlator_t *this, -                      fd_t *fd, struct iatt *stbuf, int32_t valid) +                      fd_t *fd, struct iatt *stbuf, int32_t valid, dict_t *xdata)  {          STACK_WIND (frame, iot_fsetattr_cbk, FIRST_CHILD (this), -                    FIRST_CHILD (this)->fops->fsetattr, fd, stbuf, valid); +                    FIRST_CHILD (this)->fops->fsetattr, fd, stbuf, valid, +                    xdata);          return 0;  }  int  iot_fsetattr (call_frame_t *frame, xlator_t *this, fd_t *fd, -              struct iatt *stbuf, int32_t valid) +              struct iatt *stbuf, int32_t valid, dict_t *xdata)  {          call_stub_t     *stub = NULL;          int              ret = -1;          stub = fop_fsetattr_stub (frame, iot_fsetattr_wrapper, fd, stbuf, -                                  valid); +                                  valid, xdata);          if (!stub) {                  gf_log (this->name, GF_LOG_ERROR, "cannot create fsetattr stub"                          "(out of memory)"); @@ -421,7 +425,8 @@ iot_fsetattr (call_frame_t *frame, xlator_t *this, fd_t *fd,  out:          if (ret < 0) { -                STACK_UNWIND_STRICT (fsetattr, frame, -1, -ret, NULL, NULL); +                STACK_UNWIND_STRICT (fsetattr, frame, -1, -ret, NULL, NULL, +                                     NULL);                  if (stub != NULL) {                          call_stub_destroy (stub);                  } @@ -432,30 +437,31 @@ out:  int  iot_access_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                int32_t op_ret, int32_t op_errno) +                int32_t op_ret, int32_t op_errno, dict_t *xdata)  { -        STACK_UNWIND_STRICT (access, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (access, frame, op_ret, op_errno, xdata);          return 0;  }  int  iot_access_wrapper (call_frame_t *frame, xlator_t *this, loc_t *loc, -                    int32_t mask) +                    int32_t mask, dict_t *xdata)  {          STACK_WIND (frame, iot_access_cbk, FIRST_CHILD (this), -                    FIRST_CHILD (this)->fops->access, loc, mask); +                    FIRST_CHILD (this)->fops->access, loc, mask, xdata);          return 0;  }  int -iot_access (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t mask) +iot_access (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t mask, +            dict_t *xdata)  {          call_stub_t     *stub = NULL;          int             ret = -1; -        stub = fop_access_stub (frame, iot_access_wrapper, loc, mask); +        stub = fop_access_stub (frame, iot_access_wrapper, loc, mask, xdata);          if (!stub) {                  gf_log (this->name, GF_LOG_ERROR, "cannot create access stub"                          "(out of memory)"); @@ -466,7 +472,7 @@ iot_access (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t mask)          ret = iot_schedule (frame, this, stub);  out:          if (ret < 0) { -                STACK_UNWIND_STRICT (access, frame, -1, -ret); +                STACK_UNWIND_STRICT (access, frame, -1, -ret, NULL);                  if (stub != NULL) {                          call_stub_destroy (stub); @@ -479,32 +485,33 @@ out:  int  iot_readlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                    int32_t op_ret, int32_t op_errno, const char *path, -                  struct iatt *stbuf) +                  struct iatt *stbuf, dict_t *xdata)  { -        STACK_UNWIND_STRICT (readlink, frame, op_ret, op_errno, path, stbuf); +        STACK_UNWIND_STRICT (readlink, frame, op_ret, op_errno, path, stbuf, +                             xdata);          return 0;  }  int  iot_readlink_wrapper (call_frame_t *frame, xlator_t *this, loc_t *loc, -                      size_t size) +                      size_t size, dict_t *xdata)  {          STACK_WIND (frame, iot_readlink_cbk,                      FIRST_CHILD (this),                      FIRST_CHILD (this)->fops->readlink, -                    loc, size); +                    loc, size, xdata);          return 0;  }  int -iot_readlink (call_frame_t *frame, xlator_t *this, loc_t *loc, size_t size) +iot_readlink (call_frame_t *frame, xlator_t *this, loc_t *loc, size_t size, dict_t *xdata)  {          call_stub_t     *stub = NULL;          int             ret = -1; -        stub = fop_readlink_stub (frame, iot_readlink_wrapper, loc, size); +        stub = fop_readlink_stub (frame, iot_readlink_wrapper, loc, size, xdata);          if (!stub) {                  gf_log (this->name, GF_LOG_ERROR, "cannot create readlink stub"                          "(out of memory)"); @@ -516,7 +523,7 @@ iot_readlink (call_frame_t *frame, xlator_t *this, loc_t *loc, size_t size)  out:          if (ret < 0) { -                STACK_UNWIND_STRICT (readlink, frame, -1, -ret, NULL, NULL); +                STACK_UNWIND_STRICT (readlink, frame, -1, -ret, NULL, NULL, NULL);                  if (stub != NULL) {                          call_stub_destroy (stub); @@ -531,33 +538,34 @@ int  iot_mknod_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                 int32_t op_ret, int32_t op_errno, inode_t *inode,                 struct iatt *buf, struct iatt *preparent, -               struct iatt *postparent) +               struct iatt *postparent, dict_t *xdata)  {          STACK_UNWIND_STRICT (mknod, frame, op_ret, op_errno, inode, buf, -                             preparent, postparent); +                             preparent, postparent, xdata);          return 0;  }  int  iot_mknod_wrapper (call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode, -                   dev_t rdev, dict_t *params) +                   dev_t rdev, mode_t umask, dict_t *xdata)  {          STACK_WIND (frame, iot_mknod_cbk, FIRST_CHILD (this), -                    FIRST_CHILD (this)->fops->mknod, loc, mode, rdev, params); +                    FIRST_CHILD (this)->fops->mknod, loc, mode, rdev, umask, +                    xdata);          return 0;  }  int  iot_mknod (call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode, -           dev_t rdev, dict_t *params) +           dev_t rdev, mode_t umask, dict_t *xdata)  {          call_stub_t     *stub = NULL;          int             ret = -1;          stub = fop_mknod_stub (frame, iot_mknod_wrapper, loc, mode, rdev, -                               params); +                               umask, xdata);          if (!stub) {                  gf_log (this->name, GF_LOG_ERROR, "cannot create mknod stub"                          "(out of memory)"); @@ -570,7 +578,7 @@ iot_mknod (call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode,  out:          if (ret < 0) {                  STACK_UNWIND_STRICT (mknod, frame, -1, -ret, NULL, NULL, NULL, -                                     NULL); +                                     NULL, NULL);                  if (stub != NULL) {                          call_stub_destroy (stub); @@ -584,32 +592,33 @@ int  iot_mkdir_cbk (call_frame_t *frame, void * cookie, xlator_t *this,                 int32_t op_ret, int32_t op_errno, inode_t *inode,                 struct iatt *buf, struct iatt *preparent, -               struct iatt *postparent) +               struct iatt *postparent, dict_t *xdata)  {          STACK_UNWIND_STRICT (mkdir, frame, op_ret, op_errno, inode, buf, -                             preparent, postparent); +                             preparent, postparent, xdata);          return 0;  }  int  iot_mkdir_wrapper (call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode, -                   dict_t *params) +                   mode_t umask, dict_t *xdata)  {          STACK_WIND (frame, iot_mkdir_cbk, FIRST_CHILD (this), -                    FIRST_CHILD (this)->fops->mkdir, loc, mode, params); +                    FIRST_CHILD (this)->fops->mkdir, loc, mode, umask, xdata);          return 0;  }  int  iot_mkdir (call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode, -           dict_t *params) +           mode_t umask, dict_t *xdata)  {          call_stub_t     *stub = NULL;          int             ret = -1; -        stub = fop_mkdir_stub (frame, iot_mkdir_wrapper, loc, mode, params); +        stub = fop_mkdir_stub (frame, iot_mkdir_wrapper, loc, mode, umask, +                               xdata);          if (!stub) {                  gf_log (this->name, GF_LOG_ERROR, "cannot create mkdir stub"                          "(out of memory)"); @@ -622,7 +631,7 @@ iot_mkdir (call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode,  out:          if (ret < 0) {                  STACK_UNWIND_STRICT (mkdir, frame, -1, -ret, NULL, NULL, NULL, -                                     NULL); +                                     NULL, NULL);                  if (stub != NULL) {                          call_stub_destroy (stub); @@ -635,30 +644,30 @@ out:  int  iot_rmdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                 int32_t op_ret, int32_t op_errno, struct iatt *preparent, -               struct iatt *postparent) +               struct iatt *postparent, dict_t *xdata)  {          STACK_UNWIND_STRICT (rmdir, frame, op_ret, op_errno, preparent, -                             postparent); +                             postparent, xdata);          return 0;  }  int -iot_rmdir_wrapper (call_frame_t *frame, xlator_t *this, loc_t *loc, int flags) +iot_rmdir_wrapper (call_frame_t *frame, xlator_t *this, loc_t *loc, int flags, dict_t *xdata)  {          STACK_WIND (frame, iot_rmdir_cbk, FIRST_CHILD (this), -                    FIRST_CHILD (this)->fops->rmdir, loc, flags); +                    FIRST_CHILD (this)->fops->rmdir, loc, flags, xdata);          return 0;  }  int -iot_rmdir (call_frame_t *frame, xlator_t *this, loc_t *loc, int flags) +iot_rmdir (call_frame_t *frame, xlator_t *this, loc_t *loc, int flags, dict_t *xdata)  {          call_stub_t     *stub = NULL;          int             ret = -1; -        stub = fop_rmdir_stub (frame, iot_rmdir_wrapper, loc, flags); +        stub = fop_rmdir_stub (frame, iot_rmdir_wrapper, loc, flags, xdata);          if (!stub) {                  gf_log (this->name, GF_LOG_ERROR, "cannot create rmdir stub"                          "(out of memory)"); @@ -669,7 +678,7 @@ iot_rmdir (call_frame_t *frame, xlator_t *this, loc_t *loc, int flags)          ret = iot_schedule (frame, this, stub);  out:          if (ret < 0) { -                STACK_UNWIND_STRICT (rmdir, frame, -1, -ret, NULL, NULL); +                STACK_UNWIND_STRICT (rmdir, frame, -1, -ret, NULL, NULL, NULL);                  if (stub != NULL) {                          call_stub_destroy (stub); @@ -683,33 +692,34 @@ int  iot_symlink_cbk (call_frame_t *frame, void * cookie, xlator_t *this,                   int32_t op_ret, int32_t op_errno, inode_t *inode,                   struct iatt *buf, struct iatt *preparent, -                 struct iatt *postparent) +                 struct iatt *postparent, dict_t *xdata)  {          STACK_UNWIND_STRICT (symlink, frame, op_ret, op_errno, inode, buf, -                             preparent, postparent); +                             preparent, postparent, xdata);          return 0;  }  int  iot_symlink_wrapper (call_frame_t *frame, xlator_t *this, const char *linkname, -                     loc_t *loc, dict_t *params) +                     loc_t *loc, mode_t umask, dict_t *xdata)  {          STACK_WIND (frame, iot_symlink_cbk, FIRST_CHILD (this), -                    FIRST_CHILD (this)->fops->symlink, linkname, loc, params); +                    FIRST_CHILD (this)->fops->symlink, linkname, loc, umask, +                    xdata);          return 0;  }  int  iot_symlink (call_frame_t *frame, xlator_t *this, const char *linkname, -             loc_t *loc, dict_t *params) +             loc_t *loc, mode_t umask, dict_t *xdata)  {          call_stub_t     *stub = NULL;          int             ret = -1;          stub = fop_symlink_stub (frame, iot_symlink_wrapper, linkname, loc, -                                 params); +                                 umask, xdata);          if (!stub) {                  gf_log (this->name, GF_LOG_ERROR, "cannot create symlink stub"                          "(out of memory)"); @@ -722,7 +732,7 @@ iot_symlink (call_frame_t *frame, xlator_t *this, const char *linkname,  out:          if (ret < 0) {                  STACK_UNWIND_STRICT (symlink, frame, -1, -ret, NULL, NULL, NULL, -                                     NULL); +                                     NULL, NULL);                  if (stub != NULL) {                          call_stub_destroy (stub);                  } @@ -736,31 +746,33 @@ int  iot_rename_cbk (call_frame_t *frame, void * cookie, xlator_t *this,                  int32_t op_ret, int32_t op_errno, struct iatt *buf,                  struct iatt *preoldparent, struct iatt *postoldparent, -                struct iatt *prenewparent, struct iatt *postnewparent) +                struct iatt *prenewparent, struct iatt *postnewparent, +                dict_t *xdata)  {          STACK_UNWIND_STRICT (rename, frame, op_ret, op_errno, buf, preoldparent, -                             postoldparent, prenewparent, postnewparent); +                             postoldparent, prenewparent, postnewparent, xdata);          return 0;  }  int  iot_rename_wrapper (call_frame_t *frame, xlator_t *this, loc_t *oldloc, -                    loc_t *newloc) +                    loc_t *newloc, dict_t *xdata)  {          STACK_WIND (frame, iot_rename_cbk, FIRST_CHILD (this), -                    FIRST_CHILD (this)->fops->rename, oldloc, newloc); +                    FIRST_CHILD (this)->fops->rename, oldloc, newloc, xdata);          return 0;  }  int -iot_rename (call_frame_t *frame, xlator_t *this, loc_t *oldloc, loc_t *newloc) +iot_rename (call_frame_t *frame, xlator_t *this, loc_t *oldloc, loc_t *newloc, +            dict_t *xdata)  {          call_stub_t     *stub = NULL;          int             ret = -1; -        stub = fop_rename_stub (frame, iot_rename_wrapper, oldloc, newloc); +        stub = fop_rename_stub (frame, iot_rename_wrapper, oldloc, newloc, xdata);          if (!stub) {                  gf_log (this->name, GF_LOG_DEBUG, "cannot create rename stub"                          "(out of memory)"); @@ -773,7 +785,7 @@ iot_rename (call_frame_t *frame, xlator_t *this, loc_t *oldloc, loc_t *newloc)  out:          if (ret < 0) {                  STACK_UNWIND_STRICT (rename, frame, -1, -ret, NULL, NULL, NULL, -                                     NULL, NULL); +                                     NULL, NULL, NULL);                  if (stub != NULL) {                          call_stub_destroy (stub);                  } @@ -785,31 +797,33 @@ out:  int  iot_open_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret, -              int32_t op_errno, fd_t *fd) +              int32_t op_errno, fd_t *fd, dict_t *xdata)  { -	STACK_UNWIND_STRICT (open, frame, op_ret, op_errno, fd); +	STACK_UNWIND_STRICT (open, frame, op_ret, op_errno, fd, xdata);  	return 0;  }  int  iot_open_wrapper (call_frame_t * frame, xlator_t * this, loc_t *loc, -                  int32_t flags, fd_t * fd, int32_t wbflags) +                  int32_t flags, fd_t * fd, dict_t *xdata)  {  	STACK_WIND (frame, iot_open_cbk, FIRST_CHILD (this), -                    FIRST_CHILD (this)->fops->open, loc, flags, fd, wbflags); +                    FIRST_CHILD (this)->fops->open, loc, flags, fd, +                    xdata);  	return 0;  }  int  iot_open (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t flags, -          fd_t *fd, int32_t wbflags) +          fd_t *fd, dict_t *xdata)  {          call_stub_t	*stub = NULL;          int             ret = -1; -        stub = fop_open_stub (frame, iot_open_wrapper, loc, flags, fd, wbflags); +        stub = fop_open_stub (frame, iot_open_wrapper, loc, flags, fd, +                              xdata);          if (!stub) {                  gf_log (this->name, GF_LOG_ERROR,                          "cannot create open call stub" @@ -822,7 +836,7 @@ iot_open (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t flags,  out:          if (ret < 0) { -                STACK_UNWIND_STRICT (open, frame, -1, -ret, NULL); +                STACK_UNWIND_STRICT (open, frame, -1, -ret, NULL, NULL);                  if (stub != NULL) {                          call_stub_destroy (stub); @@ -837,35 +851,36 @@ int  iot_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  int32_t op_ret, int32_t op_errno, fd_t *fd, inode_t *inode,                  struct iatt *stbuf, struct iatt *preparent, -                struct iatt *postparent) +                struct iatt *postparent, dict_t *xdata)  {  	STACK_UNWIND_STRICT (create, frame, op_ret, op_errno, fd, inode, stbuf, -                             preparent, postparent); +                             preparent, postparent, xdata);  	return 0;  }  int  iot_create_wrapper (call_frame_t *frame, xlator_t *this, loc_t *loc, -                    int32_t flags, mode_t mode, fd_t *fd, dict_t *params) +                    int32_t flags, mode_t mode, mode_t umask, fd_t *fd, +                    dict_t *xdata)  {  	STACK_WIND (frame, iot_create_cbk,  		    FIRST_CHILD(this),  		    FIRST_CHILD(this)->fops->create, -		    loc, flags, mode, fd, params); +		    loc, flags, mode, umask, fd, xdata);  	return 0;  }  int  iot_create (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t flags, -            mode_t mode, fd_t *fd, dict_t *params) +            mode_t mode, mode_t umask, fd_t *fd, dict_t *xdata)  {          call_stub_t     *stub = NULL;          int             ret = -1;          stub = fop_create_stub (frame, iot_create_wrapper, loc, flags, mode, -                                fd, params); +                                umask, fd, xdata);          if (!stub) {                  gf_log (this->name, GF_LOG_ERROR,                          "cannot create \"create\" call stub" @@ -879,7 +894,7 @@ iot_create (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t flags,  out:          if (ret < 0) {                  STACK_UNWIND_STRICT (create, frame, -1, -ret, NULL, NULL, NULL, -                                     NULL, NULL); +                                     NULL, NULL, NULL);                  if (stub != NULL) {                          call_stub_destroy (stub); @@ -893,10 +908,11 @@ out:  int  iot_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 iatt *stbuf, struct iobref *iobref) +               int32_t count, struct iatt *stbuf, struct iobref *iobref, +               dict_t *xdata)  {  	STACK_UNWIND_STRICT (readv, frame, op_ret, op_errno, vector, count, -                             stbuf, iobref); +                             stbuf, iobref, xdata);  	return 0;  } @@ -904,24 +920,25 @@ iot_readv_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  iot_readv_wrapper (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size, -                   off_t offset, uint32_t flags) +                   off_t offset, uint32_t flags, dict_t *xdata)  {  	STACK_WIND (frame, iot_readv_cbk,  		    FIRST_CHILD(this),  		    FIRST_CHILD(this)->fops->readv, -		    fd, size, offset, flags); +		    fd, size, offset, flags, xdata);  	return 0;  }  int  iot_readv (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size, -           off_t offset, uint32_t flags) +           off_t offset, uint32_t flags, dict_t *xdata)  {  	call_stub_t *stub = NULL;          int         ret = -1; -	stub = fop_readv_stub (frame, iot_readv_wrapper, fd, size, offset, flags); +	stub = fop_readv_stub (frame, iot_readv_wrapper, fd, size, offset, +                               flags, xdata);  	if (!stub) {  		gf_log (this->name, GF_LOG_ERROR,  			"cannot create readv call stub" @@ -935,7 +952,7 @@ iot_readv (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size,  out:          if (ret < 0) {  		STACK_UNWIND_STRICT (readv, frame, -1, -ret, NULL, -1, NULL, -                                     NULL); +                                     NULL, NULL);                  if (stub != NULL) {                          call_stub_destroy (stub);                  } @@ -946,31 +963,31 @@ out:  int  iot_flush_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -               int32_t op_ret, int32_t op_errno) +               int32_t op_ret, int32_t op_errno, dict_t *xdata)  { -	STACK_UNWIND_STRICT (flush, frame, op_ret, op_errno); +	STACK_UNWIND_STRICT (flush, frame, op_ret, op_errno, xdata);  	return 0;  }  int -iot_flush_wrapper (call_frame_t *frame, xlator_t *this, fd_t *fd) +iot_flush_wrapper (call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *xdata)  {  	STACK_WIND (frame, iot_flush_cbk,  		    FIRST_CHILD(this),  		    FIRST_CHILD(this)->fops->flush, -		    fd); +		    fd, xdata);  	return 0;  }  int -iot_flush (call_frame_t *frame, xlator_t *this, fd_t *fd) +iot_flush (call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *xdata)  {  	call_stub_t *stub = NULL;          int         ret = -1; -	stub = fop_flush_stub (frame, iot_flush_wrapper, fd); +	stub = fop_flush_stub (frame, iot_flush_wrapper, fd, xdata);  	if (!stub) {  		gf_log (this->name, GF_LOG_ERROR,                          "cannot create flush_cbk call stub" @@ -982,7 +999,7 @@ iot_flush (call_frame_t *frame, xlator_t *this, fd_t *fd)          ret = iot_schedule (frame, this, stub);  out:          if (ret < 0) { -		STACK_UNWIND_STRICT (flush, frame, -1, -ret); +		STACK_UNWIND_STRICT (flush, frame, -1, -ret, NULL);                  if (stub != NULL) {                          call_stub_destroy (stub); @@ -995,32 +1012,34 @@ out:  int  iot_fsync_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                 int32_t op_ret, int32_t op_errno, struct iatt *prebuf, -               struct iatt *postbuf) +               struct iatt *postbuf, dict_t *xdata)  { -	STACK_UNWIND_STRICT (fsync, frame, op_ret, op_errno, prebuf, postbuf); +	STACK_UNWIND_STRICT (fsync, frame, op_ret, op_errno, prebuf, postbuf, +                             xdata);  	return 0;  }  int  iot_fsync_wrapper (call_frame_t *frame, xlator_t *this, fd_t *fd, -                   int32_t datasync) +                   int32_t datasync, dict_t *xdata)  {  	STACK_WIND (frame, iot_fsync_cbk,  		    FIRST_CHILD (this),  		    FIRST_CHILD (this)->fops->fsync, -		    fd, datasync); +		    fd, datasync, xdata);  	return 0;  }  int -iot_fsync (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t datasync) +iot_fsync (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t datasync, +           dict_t *xdata)  {  	call_stub_t *stub = NULL;          int         ret = -1; -	stub = fop_fsync_stub (frame, iot_fsync_wrapper, fd, datasync); +	stub = fop_fsync_stub (frame, iot_fsync_wrapper, fd, datasync, xdata);  	if (!stub) {  		gf_log (this->name, GF_LOG_ERROR,                          "cannot create fsync_cbk call stub" @@ -1033,7 +1052,7 @@ iot_fsync (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t datasync)  out:          if (ret < 0) { -		STACK_UNWIND_STRICT (fsync, frame, -1, -ret, NULL, NULL); +		STACK_UNWIND_STRICT (fsync, frame, -1, -ret, NULL, NULL, NULL);                  if (stub != NULL) {                          call_stub_destroy (stub); @@ -1046,9 +1065,10 @@ out:  int  iot_writev_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  int32_t op_ret, int32_t op_errno, struct iatt *prebuf, -                struct iatt *postbuf) +                struct iatt *postbuf, dict_t *xdata)  { -	STACK_UNWIND_STRICT (writev, frame, op_ret, op_errno, prebuf, postbuf); +	STACK_UNWIND_STRICT (writev, frame, op_ret, op_errno, prebuf, postbuf, +                             xdata);  	return 0;  } @@ -1056,12 +1076,13 @@ iot_writev_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  iot_writev_wrapper (call_frame_t *frame, xlator_t *this, fd_t *fd,                      struct iovec *vector, int32_t count, -                    off_t offset, uint32_t flags, struct iobref *iobref) +                    off_t offset, uint32_t flags, struct iobref *iobref, +                    dict_t *xdata)  {  	STACK_WIND (frame, iot_writev_cbk,  		    FIRST_CHILD(this),  		    FIRST_CHILD(this)->fops->writev, -		    fd, vector, count, offset, flags, iobref); +		    fd, vector, count, offset, flags, iobref, xdata);  	return 0;  } @@ -1069,13 +1090,13 @@ iot_writev_wrapper (call_frame_t *frame, xlator_t *this, fd_t *fd,  int  iot_writev (call_frame_t *frame, xlator_t *this, fd_t *fd,              struct iovec *vector, int32_t count, off_t offset, -            uint32_t flags, struct iobref *iobref) +            uint32_t flags, struct iobref *iobref, dict_t *xdata)  {  	call_stub_t *stub = NULL;          int         ret = -1; -	stub = fop_writev_stub (frame, iot_writev_wrapper, -				fd, vector, count, offset, flags, iobref); +	stub = fop_writev_stub (frame, iot_writev_wrapper, fd, vector, +                                count, offset, flags, iobref, xdata);  	if (!stub) {  		gf_log (this->name, GF_LOG_ERROR, @@ -1088,7 +1109,7 @@ iot_writev (call_frame_t *frame, xlator_t *this, fd_t *fd,          ret = iot_schedule (frame, this, stub);  out:          if (ret < 0) { -		STACK_UNWIND_STRICT (writev, frame, -1, -ret, NULL, NULL); +		STACK_UNWIND_STRICT (writev, frame, -1, -ret, NULL, NULL, NULL);                  if (stub != NULL) {                          call_stub_destroy (stub); @@ -1101,33 +1122,34 @@ out:  int32_t  iot_lk_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -            int32_t op_ret, int32_t op_errno, struct gf_flock *flock) +            int32_t op_ret, int32_t op_errno, struct gf_flock *flock, +            dict_t *xdata)  { -	STACK_UNWIND_STRICT (lk, frame, op_ret, op_errno, flock); +	STACK_UNWIND_STRICT (lk, frame, op_ret, op_errno, flock, xdata);  	return 0;  }  int  iot_lk_wrapper (call_frame_t *frame, xlator_t *this, fd_t *fd, -                int32_t cmd, struct gf_flock *flock) +                int32_t cmd, struct gf_flock *flock, dict_t *xdata)  {  	STACK_WIND (frame, iot_lk_cbk,  		    FIRST_CHILD(this),  		    FIRST_CHILD(this)->fops->lk, -		    fd, cmd, flock); +		    fd, cmd, flock, xdata);  	return 0;  }  int  iot_lk (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t cmd, -	struct gf_flock *flock) +	struct gf_flock *flock, dict_t *xdata)  {  	call_stub_t *stub = NULL;          int         ret = -1; -	stub = fop_lk_stub (frame, iot_lk_wrapper, fd, cmd, flock); +	stub = fop_lk_stub (frame, iot_lk_wrapper, fd, cmd, flock, xdata);  	if (!stub) {  		gf_log (this->name, GF_LOG_ERROR, @@ -1140,7 +1162,7 @@ iot_lk (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t cmd,          ret = iot_schedule (frame, this, stub);  out:          if (ret < 0) { -		STACK_UNWIND_STRICT (lk, frame, -1, -ret, NULL); +		STACK_UNWIND_STRICT (lk, frame, -1, -ret, NULL, NULL);                  if (stub != NULL) {                          call_stub_destroy (stub); @@ -1152,31 +1174,31 @@ out:  int  iot_stat_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -              int32_t op_ret, int32_t op_errno, struct iatt *buf) +              int32_t op_ret, int32_t op_errno, struct iatt *buf, dict_t *xdata)  { -	STACK_UNWIND_STRICT (stat, frame, op_ret, op_errno, buf); +	STACK_UNWIND_STRICT (stat, frame, op_ret, op_errno, buf, xdata);  	return 0;  }  int -iot_stat_wrapper (call_frame_t *frame, xlator_t *this, loc_t *loc) +iot_stat_wrapper (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *xdata)  {  	STACK_WIND (frame, iot_stat_cbk,  		    FIRST_CHILD(this),  		    FIRST_CHILD(this)->fops->stat, -		    loc); +		    loc, xdata);  	return 0;  }  int -iot_stat (call_frame_t *frame, xlator_t *this, loc_t *loc) +iot_stat (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *xdata)  {  	call_stub_t *stub = NULL;          int         ret = -1; -        stub = fop_stat_stub (frame, iot_stat_wrapper, loc); +        stub = fop_stat_stub (frame, iot_stat_wrapper, loc, xdata);  	if (!stub) {  		gf_log (this->name, GF_LOG_ERROR,                          "cannot create fop_stat call stub" @@ -1189,7 +1211,7 @@ iot_stat (call_frame_t *frame, xlator_t *this, loc_t *loc)  out:          if (ret < 0) { -		STACK_UNWIND_STRICT (stat, frame, -1, -ret, NULL); +		STACK_UNWIND_STRICT (stat, frame, -1, -ret, NULL, NULL);                  if (stub != NULL) {                          call_stub_destroy (stub); @@ -1201,31 +1223,31 @@ out:  int  iot_fstat_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -               int32_t op_ret, int32_t op_errno, struct iatt *buf) +               int32_t op_ret, int32_t op_errno, struct iatt *buf, dict_t *xdata)  { -	STACK_UNWIND_STRICT (fstat, frame, op_ret, op_errno, buf); +	STACK_UNWIND_STRICT (fstat, frame, op_ret, op_errno, buf, xdata);  	return 0;  }  int -iot_fstat_wrapper (call_frame_t *frame, xlator_t *this, fd_t *fd) +iot_fstat_wrapper (call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *xdata)  {  	STACK_WIND (frame, iot_fstat_cbk,  		    FIRST_CHILD(this),  		    FIRST_CHILD(this)->fops->fstat, -		    fd); +		    fd, xdata);  	return 0;  }  int -iot_fstat (call_frame_t *frame, xlator_t *this, fd_t *fd) +iot_fstat (call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *xdata)  {  	call_stub_t *stub = NULL;          int         ret = -1; -	stub = fop_fstat_stub (frame, iot_fstat_wrapper, fd); +	stub = fop_fstat_stub (frame, iot_fstat_wrapper, fd, xdata);  	if (!stub) {  		gf_log (this->name, GF_LOG_ERROR,                          "cannot create fop_fstat call stub" @@ -1237,7 +1259,7 @@ iot_fstat (call_frame_t *frame, xlator_t *this, fd_t *fd)          ret = iot_schedule (frame, this, stub);  out:          if (ret < 0) { -		STACK_UNWIND_STRICT (fstat, frame, -1, -ret, NULL); +		STACK_UNWIND_STRICT (fstat, frame, -1, -ret, NULL, NULL);                  if (stub != NULL) {                          call_stub_destroy (stub); @@ -1250,34 +1272,35 @@ out:  int  iot_truncate_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                    int32_t op_ret, int32_t op_errno, struct iatt *prebuf, -                  struct iatt *postbuf) +                  struct iatt *postbuf, dict_t *xdata)  {  	STACK_UNWIND_STRICT (truncate, frame, op_ret, op_errno, prebuf, -                             postbuf); +                             postbuf, xdata);  	return 0;  }  int  iot_truncate_wrapper (call_frame_t *frame, xlator_t *this, loc_t *loc, -                      off_t offset) +                      off_t offset, dict_t *xdata)  {  	STACK_WIND (frame, iot_truncate_cbk,  		    FIRST_CHILD(this),  		    FIRST_CHILD(this)->fops->truncate, -		    loc, offset); +		    loc, offset, xdata);  	return 0;  }  int -iot_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, off_t offset) +iot_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, off_t offset, +              dict_t *xdata)  {  	call_stub_t *stub;          int         ret = -1; -        stub = fop_truncate_stub (frame, iot_truncate_wrapper, loc, offset); - +        stub = fop_truncate_stub (frame, iot_truncate_wrapper, loc, offset, +                                  xdata);  	if (!stub) {  		gf_log (this->name, GF_LOG_ERROR,                          "cannot create fop_stat call stub" @@ -1290,7 +1313,8 @@ iot_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, off_t offset)  out:          if (ret < 0) { -		STACK_UNWIND_STRICT (truncate, frame, -1, -ret, NULL, NULL); +		STACK_UNWIND_STRICT (truncate, frame, -1, -ret, NULL, NULL, +                                     NULL);                  if (stub != NULL) {                          call_stub_destroy (stub); @@ -1304,33 +1328,35 @@ out:  int  iot_ftruncate_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                     int32_t op_ret, int32_t op_errno, struct iatt *prebuf, -                   struct iatt *postbuf) +                   struct iatt *postbuf, dict_t *xdata)  {  	STACK_UNWIND_STRICT (ftruncate, frame, op_ret, op_errno, prebuf, -                             postbuf); +                             postbuf, xdata);  	return 0;  }  int  iot_ftruncate_wrapper (call_frame_t *frame, xlator_t *this, fd_t *fd, -                       off_t offset) +                       off_t offset, dict_t *xdata)  {  	STACK_WIND (frame, iot_ftruncate_cbk,  		    FIRST_CHILD(this),  		    FIRST_CHILD(this)->fops->ftruncate, -		    fd, offset); +		    fd, offset, xdata);  	return 0;  }  int -iot_ftruncate (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset) +iot_ftruncate (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset, +               dict_t *xdata)  {  	call_stub_t *stub = NULL;          int         ret = -1; -	stub = fop_ftruncate_stub (frame, iot_ftruncate_wrapper, fd, offset); +	stub = fop_ftruncate_stub (frame, iot_ftruncate_wrapper, fd, offset, +                                   xdata);  	if (!stub) {  		gf_log (this->name, GF_LOG_ERROR,                          "cannot create fop_ftruncate call stub" @@ -1342,7 +1368,7 @@ iot_ftruncate (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset)          ret = iot_schedule (frame, this, stub);  out:          if (ret < 0) { -		STACK_UNWIND_STRICT (ftruncate, frame, -1, -ret, NULL, NULL); +		STACK_UNWIND_STRICT (ftruncate, frame, -1, -ret, NULL, NULL, NULL);                  if (stub != NULL) {                          call_stub_destroy (stub); @@ -1356,32 +1382,34 @@ out:  int  iot_unlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  		int32_t op_ret, int32_t op_errno, struct iatt *preparent, -                struct iatt *postparent) +                struct iatt *postparent, dict_t *xdata)  {  	STACK_UNWIND_STRICT (unlink, frame, op_ret, op_errno, preparent, -                             postparent); +                             postparent, xdata);  	return 0;  }  int -iot_unlink_wrapper (call_frame_t *frame, xlator_t *this, loc_t *loc) +iot_unlink_wrapper (call_frame_t *frame, xlator_t *this, loc_t *loc, +                    int32_t xflag, dict_t *xdata)  {  	STACK_WIND (frame, iot_unlink_cbk,  		    FIRST_CHILD(this),  		    FIRST_CHILD(this)->fops->unlink, -		    loc); +		    loc, xflag, xdata);  	return 0;  }  int -iot_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc) +iot_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t xflag, +            dict_t *xdata)  {  	call_stub_t *stub = NULL;          int         ret = -1; -	stub = fop_unlink_stub (frame, iot_unlink_wrapper, loc); +	stub = fop_unlink_stub (frame, iot_unlink_wrapper, loc, xflag, xdata);  	if (!stub) {  		gf_log (this->name, GF_LOG_ERROR,                          "cannot create fop_unlink call stub" @@ -1394,7 +1422,7 @@ iot_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc)  out:          if (ret < 0) { -		STACK_UNWIND_STRICT (unlink, frame, -1, -ret, NULL, NULL); +		STACK_UNWIND_STRICT (unlink, frame, -1, -ret, NULL, NULL, NULL);                  if (stub != NULL) {                          call_stub_destroy (stub); @@ -1408,31 +1436,34 @@ out:  int  iot_link_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                int32_t op_ret, int32_t op_errno, inode_t *inode, -              struct iatt *buf, struct iatt *preparent, struct iatt *postparent) +              struct iatt *buf, struct iatt *preparent, struct iatt *postparent, +              dict_t *xdata)  {          STACK_UNWIND_STRICT (link, frame, op_ret, op_errno, inode, buf, -                             preparent, postparent); +                             preparent, postparent, xdata);          return 0;  }  int -iot_link_wrapper (call_frame_t *frame, xlator_t *this, loc_t *old, loc_t *new) +iot_link_wrapper (call_frame_t *frame, xlator_t *this, loc_t *old, loc_t *new, +                  dict_t *xdata)  {          STACK_WIND (frame, iot_link_cbk, FIRST_CHILD (this), -                    FIRST_CHILD (this)->fops->link, old, new); +                    FIRST_CHILD (this)->fops->link, old, new, xdata);          return 0;  }  int -iot_link (call_frame_t *frame, xlator_t *this, loc_t *oldloc, loc_t *newloc) +iot_link (call_frame_t *frame, xlator_t *this, loc_t *oldloc, loc_t *newloc, +          dict_t *xdata)  {          call_stub_t     *stub = NULL;          int             ret = -1; -        stub = fop_link_stub (frame, iot_link_wrapper, oldloc, newloc); +        stub = fop_link_stub (frame, iot_link_wrapper, oldloc, newloc, xdata);          if (!stub) {                  gf_log (this->name, GF_LOG_ERROR, "cannot create link stub"                          "(out of memory)"); @@ -1444,7 +1475,7 @@ iot_link (call_frame_t *frame, xlator_t *this, loc_t *oldloc, loc_t *newloc)  out:          if (ret < 0) {                  STACK_UNWIND_STRICT (link, frame, -1, -ret, NULL, NULL, NULL, -                                     NULL); +                                     NULL, NULL);                  if (stub != NULL) {                          call_stub_destroy (stub); @@ -1456,29 +1487,31 @@ out:  int  iot_opendir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                 int32_t op_ret, int32_t op_errno, fd_t *fd) +                 int32_t op_ret, int32_t op_errno, fd_t *fd, dict_t *xdata)  { -        STACK_UNWIND_STRICT (opendir, frame, op_ret, op_errno, fd); +        STACK_UNWIND_STRICT (opendir, frame, op_ret, op_errno, fd, xdata);          return 0;  }  int -iot_opendir_wrapper (call_frame_t *frame, xlator_t *this, loc_t *loc, fd_t *fd) +iot_opendir_wrapper (call_frame_t *frame, xlator_t *this, loc_t *loc, fd_t *fd, +                     dict_t *xdata)  {          STACK_WIND (frame, iot_opendir_cbk, FIRST_CHILD (this), -                    FIRST_CHILD (this)->fops->opendir, loc, fd); +                    FIRST_CHILD (this)->fops->opendir, loc, fd, xdata);          return 0;  }  int -iot_opendir (call_frame_t *frame, xlator_t *this, loc_t *loc, fd_t *fd) +iot_opendir (call_frame_t *frame, xlator_t *this, loc_t *loc, fd_t *fd, +             dict_t *xdata)  {          call_stub_t     *stub  = NULL;          int             ret = -1; -        stub = fop_opendir_stub (frame, iot_opendir_wrapper, loc, fd); +        stub = fop_opendir_stub (frame, iot_opendir_wrapper, loc, fd, xdata);          if (!stub) {                  gf_log (this->name, GF_LOG_ERROR, "cannot create opendir stub"                          "(out of memory)"); @@ -1489,7 +1522,7 @@ iot_opendir (call_frame_t *frame, xlator_t *this, loc_t *loc, fd_t *fd)          ret = iot_schedule (frame, this, stub);  out:          if (ret < 0) { -                STACK_UNWIND_STRICT (opendir, frame, -1, -ret, NULL); +                STACK_UNWIND_STRICT (opendir, frame, -1, -ret, NULL, NULL);                  if (stub != NULL) {                          call_stub_destroy (stub); @@ -1501,30 +1534,32 @@ out:  int  iot_fsyncdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                  int32_t op_ret, int32_t op_errno) +                  int32_t op_ret, int32_t op_errno, dict_t *xdata)  { -        STACK_UNWIND_STRICT (fsyncdir, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (fsyncdir, frame, op_ret, op_errno, xdata);          return 0;  }  int  iot_fsyncdir_wrapper (call_frame_t *frame, xlator_t *this, fd_t *fd, -                      int datasync) +                      int datasync, dict_t *xdata)  {          STACK_WIND (frame, iot_fsyncdir_cbk, FIRST_CHILD (this), -                    FIRST_CHILD (this)->fops->fsyncdir, fd, datasync); +                    FIRST_CHILD (this)->fops->fsyncdir, fd, datasync, xdata);          return 0;  }  int -iot_fsyncdir (call_frame_t *frame, xlator_t *this, fd_t *fd, int datasync) +iot_fsyncdir (call_frame_t *frame, xlator_t *this, fd_t *fd, int datasync, +              dict_t *xdata)  {          call_stub_t     *stub = NULL;          int             ret = -1; -        stub = fop_fsyncdir_stub (frame, iot_fsyncdir_wrapper, fd, datasync); +        stub = fop_fsyncdir_stub (frame, iot_fsyncdir_wrapper, fd, datasync, +                                  xdata);          if (!stub) {                  gf_log (this->name, GF_LOG_ERROR, "cannot create fsyncdir stub"                          "(out of memory)"); @@ -1535,7 +1570,7 @@ iot_fsyncdir (call_frame_t *frame, xlator_t *this, fd_t *fd, int datasync)          ret = iot_schedule (frame, this, stub);  out:          if (ret < 0) { -                STACK_UNWIND_STRICT (fsyncdir, frame, -1, -ret); +                STACK_UNWIND_STRICT (fsyncdir, frame, -1, -ret, NULL);                  if (stub != NULL) {                          call_stub_destroy (stub); @@ -1547,29 +1582,31 @@ out:  int  iot_statfs_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                int32_t op_ret, int32_t op_errno, struct statvfs *buf) +                int32_t op_ret, int32_t op_errno, struct statvfs *buf, +                dict_t *xdata)  { -        STACK_UNWIND_STRICT (statfs, frame, op_ret, op_errno, buf); +        STACK_UNWIND_STRICT (statfs, frame, op_ret, op_errno, buf, xdata);          return 0;  }  int -iot_statfs_wrapper (call_frame_t *frame, xlator_t *this, loc_t *loc) +iot_statfs_wrapper (call_frame_t *frame, xlator_t *this, loc_t *loc, +                    dict_t *xdata)  {          STACK_WIND (frame, iot_statfs_cbk, FIRST_CHILD (this), -                    FIRST_CHILD (this)->fops->statfs, loc); +                    FIRST_CHILD (this)->fops->statfs, loc, xdata);          return 0;  }  int -iot_statfs (call_frame_t *frame, xlator_t *this, loc_t *loc) +iot_statfs (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *xdata)  {          call_stub_t     *stub = NULL;          int              ret = -1; -        stub = fop_statfs_stub (frame, iot_statfs_wrapper, loc); +        stub = fop_statfs_stub (frame, iot_statfs_wrapper, loc, xdata);          if (!stub) {                  gf_log (this->name, GF_LOG_ERROR, "cannot create statfs stub"                          "(out of memory)"); @@ -1580,7 +1617,7 @@ iot_statfs (call_frame_t *frame, xlator_t *this, loc_t *loc)          ret = iot_schedule (frame, this, stub);  out:          if (ret < 0) { -                STACK_UNWIND_STRICT (statfs, frame, -1, -ret, NULL); +                STACK_UNWIND_STRICT (statfs, frame, -1, -ret, NULL, NULL);                  if (stub != NULL) {                          call_stub_destroy (stub); @@ -1592,32 +1629,32 @@ out:  int  iot_setxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                  int32_t op_ret, int32_t op_errno) +                  int32_t op_ret, int32_t op_errno, dict_t *xdata)  { -        STACK_UNWIND_STRICT (setxattr, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (setxattr, frame, op_ret, op_errno, xdata);          return 0;  }  int  iot_setxattr_wrapper (call_frame_t *frame, xlator_t *this, loc_t *loc, -                      dict_t *dict, int32_t flags) +                      dict_t *dict, int32_t flags, dict_t *xdata)  {          STACK_WIND (frame, iot_setxattr_cbk, FIRST_CHILD (this), -                    FIRST_CHILD (this)->fops->setxattr, loc, dict, flags); +                    FIRST_CHILD (this)->fops->setxattr, loc, dict, flags, xdata);          return 0;  }  int  iot_setxattr (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *dict, -              int32_t flags) +              int32_t flags, dict_t *xdata)  {          call_stub_t     *stub = NULL;          int              ret = -1;          stub = fop_setxattr_stub (frame, iot_setxattr_wrapper, loc, dict, -                                  flags); +                                  flags, xdata);          if (!stub) {                  gf_log (this->name, GF_LOG_ERROR, "cannot create setxattr stub"                          "(out of memory)"); @@ -1629,7 +1666,7 @@ iot_setxattr (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *dict,  out:          if (ret < 0) { -                STACK_UNWIND_STRICT (setxattr, frame, -1, -ret); +                STACK_UNWIND_STRICT (setxattr, frame, -1, -ret, NULL);                  if (stub != NULL) {                          call_stub_destroy (stub); @@ -1641,31 +1678,31 @@ out:  int  iot_getxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                  int32_t op_ret, int32_t op_errno, dict_t *dict) +                  int32_t op_ret, int32_t op_errno, dict_t *dict, dict_t *xdata)  { -        STACK_UNWIND_STRICT (getxattr, frame, op_ret, op_errno, dict); +        STACK_UNWIND_STRICT (getxattr, frame, op_ret, op_errno, dict, xdata);          return 0;  }  int  iot_getxattr_wrapper (call_frame_t *frame, xlator_t *this, loc_t *loc, -                      const char *name) +                      const char *name, dict_t *xdata)  {          STACK_WIND (frame, iot_getxattr_cbk, FIRST_CHILD (this), -                    FIRST_CHILD (this)->fops->getxattr, loc, name); +                    FIRST_CHILD (this)->fops->getxattr, loc, name, xdata);          return 0;  }  int  iot_getxattr (call_frame_t *frame, xlator_t *this, loc_t *loc, -              const char *name) +              const char *name, dict_t *xdata)  {          call_stub_t     *stub = NULL;          int              ret = -1; -        stub = fop_getxattr_stub (frame, iot_getxattr_wrapper, loc, name); +        stub = fop_getxattr_stub (frame, iot_getxattr_wrapper, loc, name, xdata);          if (!stub) {                  gf_log (this->name, GF_LOG_ERROR, "cannot create getxattr stub"                          "(out of memory)"); @@ -1677,7 +1714,7 @@ iot_getxattr (call_frame_t *frame, xlator_t *this, loc_t *loc,  out:          if (ret < 0) { -                STACK_UNWIND_STRICT (getxattr, frame, -1, -ret, NULL); +                STACK_UNWIND_STRICT (getxattr, frame, -1, -ret, NULL, NULL);                  if (stub != NULL) {                          call_stub_destroy (stub); @@ -1689,31 +1726,32 @@ out:  int  iot_fgetxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                   int32_t op_ret, int32_t op_errno, dict_t *dict) +                   int32_t op_ret, int32_t op_errno, dict_t *dict, +                   dict_t *xdata)  { -        STACK_UNWIND_STRICT (fgetxattr, frame, op_ret, op_errno, dict); +        STACK_UNWIND_STRICT (fgetxattr, frame, op_ret, op_errno, dict, xdata);          return 0;  }  int  iot_fgetxattr_wrapper (call_frame_t *frame, xlator_t *this, fd_t *fd, -                       const char *name) +                       const char *name, dict_t *xdata)  {          STACK_WIND (frame, iot_fgetxattr_cbk, FIRST_CHILD (this), -                    FIRST_CHILD (this)->fops->fgetxattr, fd, name); +                    FIRST_CHILD (this)->fops->fgetxattr, fd, name, xdata);          return 0;  }  int  iot_fgetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd, -               const char *name) +               const char *name, dict_t *xdata)  {          call_stub_t     *stub = NULL;          int             ret = -1; -        stub = fop_fgetxattr_stub (frame, iot_fgetxattr_wrapper, fd, name); +        stub = fop_fgetxattr_stub (frame, iot_fgetxattr_wrapper, fd, name, xdata);          if (!stub) {                  gf_log (this->name, GF_LOG_ERROR, "cannot create fgetxattr stub"                          "(out of memory)"); @@ -1724,7 +1762,7 @@ iot_fgetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd,          ret = iot_schedule (frame, this, stub);  out:          if (ret < 0) { -                STACK_UNWIND_STRICT (fgetxattr, frame, -1, -ret, NULL); +                STACK_UNWIND_STRICT (fgetxattr, frame, -1, -ret, NULL, NULL);                  if (stub != NULL) {                          call_stub_destroy (stub); @@ -1736,32 +1774,33 @@ out:  int  iot_fsetxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                   int32_t op_ret, int32_t op_errno) +                   int32_t op_ret, int32_t op_errno, dict_t *xdata)  { -        STACK_UNWIND_STRICT (fsetxattr, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (fsetxattr, frame, op_ret, op_errno, xdata);          return 0;  }  int  iot_fsetxattr_wrapper (call_frame_t *frame, xlator_t *this, fd_t *fd, -                       dict_t *dict, int32_t flags) +                       dict_t *dict, int32_t flags, dict_t *xdata)  {          STACK_WIND (frame, iot_fsetxattr_cbk, FIRST_CHILD (this), -                    FIRST_CHILD (this)->fops->fsetxattr, fd, dict, flags); +                    FIRST_CHILD (this)->fops->fsetxattr, fd, dict, flags, +                    xdata);          return 0;  }  int  iot_fsetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *dict, -               int32_t flags) +               int32_t flags, dict_t *xdata)  {          call_stub_t     *stub = NULL;          int             ret = -1;          stub = fop_fsetxattr_stub (frame, iot_fsetxattr_wrapper, fd, dict, -                                        flags); +                                   flags, xdata);          if (!stub) {                  gf_log (this->name, GF_LOG_ERROR, "cannot create fsetxattr stub"                          "(out of memory)"); @@ -1772,7 +1811,7 @@ iot_fsetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *dict,          ret = iot_schedule (frame, this, stub);  out:          if (ret < 0) { -                STACK_UNWIND_STRICT (fsetxattr, frame, -1, -ret); +                STACK_UNWIND_STRICT (fsetxattr, frame, -1, -ret, NULL);                  if (stub != NULL) {                          call_stub_destroy (stub); @@ -1784,32 +1823,32 @@ out:  int  iot_removexattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                     int32_t op_ret, int32_t op_errno) +                     int32_t op_ret, int32_t op_errno, dict_t *xdata)  { -        STACK_UNWIND_STRICT (removexattr, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (removexattr, frame, op_ret, op_errno, xdata);          return 0;  }  int  iot_removexattr_wrapper (call_frame_t *frame, xlator_t *this, loc_t *loc, -                         const char *name) +                         const char *name, dict_t *xdata)  {          STACK_WIND (frame, iot_removexattr_cbk, FIRST_CHILD (this), -                    FIRST_CHILD (this)->fops->removexattr, loc, name); +                    FIRST_CHILD (this)->fops->removexattr, loc, name, xdata);          return 0;  }  int  iot_removexattr (call_frame_t *frame, xlator_t *this, loc_t *loc, -                 const char *name) +                 const char *name, dict_t *xdata)  {          call_stub_t     *stub = NULL;          int             ret = -1;          stub = fop_removexattr_stub (frame, iot_removexattr_wrapper, loc, -                                     name); +                                     name, xdata);          if (!stub) {                  gf_log (this->name, GF_LOG_ERROR,"cannot get removexattr fop"                          "(out of memory)"); @@ -1820,7 +1859,7 @@ iot_removexattr (call_frame_t *frame, xlator_t *this, loc_t *loc,          ret = iot_schedule (frame, this, stub);  out:          if (ret < 0) { -                STACK_UNWIND_STRICT (removexattr, frame, -1, -ret); +                STACK_UNWIND_STRICT (removexattr, frame, -1, -ret, NULL);                  if (stub != NULL) {                          call_stub_destroy (stub); @@ -1831,32 +1870,32 @@ out:  int  iot_fremovexattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                      int32_t op_ret, int32_t op_errno) +                      int32_t op_ret, int32_t op_errno, dict_t *xdata)  { -        STACK_UNWIND_STRICT (fremovexattr, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (fremovexattr, frame, op_ret, op_errno, xdata);          return 0;  }  int  iot_fremovexattr_wrapper (call_frame_t *frame, xlator_t *this, fd_t *fd, -                          const char *name) +                          const char *name, dict_t *xdata)  {          STACK_WIND (frame, iot_fremovexattr_cbk, FIRST_CHILD (this), -                    FIRST_CHILD (this)->fops->fremovexattr, fd, name); +                    FIRST_CHILD (this)->fops->fremovexattr, fd, name, xdata);          return 0;  }  int  iot_fremovexattr (call_frame_t *frame, xlator_t *this, fd_t *fd, -                 const char *name) +                 const char *name, dict_t *xdata)  {          call_stub_t     *stub = NULL;          int             ret = -1;          stub = fop_fremovexattr_stub (frame, iot_fremovexattr_wrapper, fd, -                                      name); +                                      name, xdata);          if (!stub) {                  gf_log (this->name, GF_LOG_ERROR,"cannot get fremovexattr fop"                          "(out of memory)"); @@ -1867,7 +1906,7 @@ iot_fremovexattr (call_frame_t *frame, xlator_t *this, fd_t *fd,          ret = iot_schedule (frame, this, stub);  out:          if (ret < 0) { -                STACK_UNWIND_STRICT (fremovexattr, frame, -1, -ret); +                STACK_UNWIND_STRICT (fremovexattr, frame, -1, -ret, NULL);                  if (stub != NULL) {                          call_stub_destroy (stub); @@ -1879,32 +1918,33 @@ out:  int  iot_readdirp_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                  int32_t op_ret, int32_t op_errno, gf_dirent_t *entries) +                  int32_t op_ret, int32_t op_errno, gf_dirent_t *entries, +                  dict_t *xdata)  { -        STACK_UNWIND_STRICT (readdirp, frame, op_ret, op_errno, entries); +        STACK_UNWIND_STRICT (readdirp, frame, op_ret, op_errno, entries, xdata);          return 0;  }  int  iot_readdirp_wrapper (call_frame_t *frame, xlator_t *this, fd_t *fd, -                      size_t size, off_t offset, dict_t *dict) +                      size_t size, off_t offset, dict_t *xdata)  {          STACK_WIND (frame, iot_readdirp_cbk, FIRST_CHILD (this), -                    FIRST_CHILD (this)->fops->readdirp, fd, size, offset, dict); +                    FIRST_CHILD (this)->fops->readdirp, fd, size, offset, xdata);          return 0;  }  int  iot_readdirp (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size, -              off_t offset, dict_t *dict) +              off_t offset, dict_t *xdata)  {          call_stub_t     *stub = NULL;          int             ret = -1;          stub = fop_readdirp_stub (frame, iot_readdirp_wrapper, fd, size, -                                  offset, dict); +                                  offset, xdata);          if (!stub) {                  gf_log (this->private, GF_LOG_ERROR,"cannot get readdir stub"                          "(out of memory)"); @@ -1915,7 +1955,7 @@ iot_readdirp (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size,          ret = iot_schedule (frame, this, stub);  out:          if (ret < 0) { -                STACK_UNWIND_STRICT (readdirp, frame, -1, -ret, NULL); +                STACK_UNWIND_STRICT (readdirp, frame, -1, -ret, NULL, NULL);                  if (stub != NULL) {                          call_stub_destroy (stub); @@ -1927,31 +1967,33 @@ out:  int  iot_readdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                 int32_t op_ret, int32_t op_errno, gf_dirent_t *entries) +                 int32_t op_ret, int32_t op_errno, gf_dirent_t *entries, +                 dict_t *xdata)  { -        STACK_UNWIND_STRICT (readdir, frame, op_ret, op_errno, entries); +        STACK_UNWIND_STRICT (readdir, frame, op_ret, op_errno, entries, xdata);          return 0;  }  int  iot_readdir_wrapper (call_frame_t *frame, xlator_t *this, fd_t *fd, -                     size_t size, off_t offset) +                     size_t size, off_t offset, dict_t *xdata)  {          STACK_WIND (frame, iot_readdir_cbk, FIRST_CHILD (this), -                    FIRST_CHILD (this)->fops->readdir, fd, size, offset); +                    FIRST_CHILD (this)->fops->readdir, fd, size, offset, xdata);          return 0;  }  int  iot_readdir (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size, -             off_t offset) +             off_t offset, dict_t *xdata)  {          call_stub_t     *stub = NULL;          int             ret = -1; -        stub = fop_readdir_stub (frame, iot_readdir_wrapper, fd, size, offset); +        stub = fop_readdir_stub (frame, iot_readdir_wrapper, fd, size, offset, +                                 xdata);          if (!stub) {                  gf_log (this->private, GF_LOG_ERROR,"cannot get readdir stub"                          "(out of memory)"); @@ -1962,7 +2004,7 @@ iot_readdir (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size,          ret = iot_schedule (frame, this, stub);  out:          if (ret < 0) { -                STACK_UNWIND_STRICT (readdir, frame, -1, -ret, NULL); +                STACK_UNWIND_STRICT (readdir, frame, -1, -ret, NULL, NULL);                  if (stub != NULL) {                          call_stub_destroy (stub); @@ -1972,33 +2014,36 @@ out:  }  int -iot_inodelk_cbk (call_frame_t *frame, void *cookie, -                 xlator_t *this, int32_t op_ret, int32_t op_errno) +iot_inodelk_cbk (call_frame_t *frame, void *cookie, xlator_t *this, +                 int32_t op_ret, int32_t op_errno, dict_t *xdata)  { -        STACK_UNWIND_STRICT (inodelk, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (inodelk, frame, op_ret, op_errno, xdata);          return 0;  }  int  iot_inodelk_wrapper (call_frame_t *frame, xlator_t *this, const char *volume, -                     loc_t *loc, int32_t cmd, struct gf_flock *lock) +                     loc_t *loc, int32_t cmd, struct gf_flock *lock, +                     dict_t *xdata)  {          STACK_WIND (frame, iot_inodelk_cbk, FIRST_CHILD (this), -                    FIRST_CHILD (this)->fops->inodelk, volume, loc, cmd, lock); +                    FIRST_CHILD (this)->fops->inodelk, volume, loc, cmd, lock, +                    xdata);          return 0;  }  int  iot_inodelk (call_frame_t *frame, xlator_t *this, -             const char *volume, loc_t *loc, int32_t cmd, struct gf_flock *lock) +             const char *volume, loc_t *loc, int32_t cmd, struct gf_flock *lock, +             dict_t *xdata)  {          call_stub_t     *stub = NULL;          int             ret = -1;          stub = fop_inodelk_stub (frame, iot_inodelk_wrapper, -                                 volume, loc, cmd, lock); +                                 volume, loc, cmd, lock, xdata);          if (!stub) {                  ret = -ENOMEM;                  goto out; @@ -2007,7 +2052,7 @@ iot_inodelk (call_frame_t *frame, xlator_t *this,          ret = iot_schedule (frame, this, stub);  out:          if (ret < 0) { -                STACK_UNWIND_STRICT (inodelk, frame, -1, -ret); +                STACK_UNWIND_STRICT (inodelk, frame, -1, -ret, NULL);                  if (stub != NULL) {                          call_stub_destroy (stub); @@ -2018,9 +2063,9 @@ out:  int  iot_finodelk_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                  int32_t op_ret, int32_t op_errno) +                  int32_t op_ret, int32_t op_errno, dict_t *xdata)  { -        STACK_UNWIND_STRICT (finodelk, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (finodelk, frame, op_ret, op_errno, xdata);          return 0;  } @@ -2028,23 +2073,25 @@ iot_finodelk_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  iot_finodelk_wrapper (call_frame_t *frame, xlator_t *this,                        const char *volume, fd_t *fd, int32_t cmd, -                      struct gf_flock *lock) +                      struct gf_flock *lock, dict_t *xdata)  {          STACK_WIND (frame, iot_finodelk_cbk, FIRST_CHILD (this), -                    FIRST_CHILD (this)->fops->finodelk, volume, fd, cmd, lock); +                    FIRST_CHILD (this)->fops->finodelk, volume, fd, cmd, lock, +                    xdata);          return 0;  }  int  iot_finodelk (call_frame_t *frame, xlator_t *this, -              const char *volume, fd_t *fd, int32_t cmd, struct gf_flock *lock) +              const char *volume, fd_t *fd, int32_t cmd, struct gf_flock *lock, +              dict_t *xdata)  {          call_stub_t     *stub = NULL;          int             ret = -1;          stub = fop_finodelk_stub (frame, iot_finodelk_wrapper, -                                  volume, fd, cmd, lock); +                                  volume, fd, cmd, lock, xdata);          if (!stub) {                  gf_log (this->private, GF_LOG_ERROR,"cannot get finodelk stub"                          "(out of memory)"); @@ -2055,7 +2102,7 @@ iot_finodelk (call_frame_t *frame, xlator_t *this,          ret = iot_schedule (frame, this, stub);  out:          if (ret < 0) { -                STACK_UNWIND_STRICT (finodelk, frame, -1, -ret); +                STACK_UNWIND_STRICT (finodelk, frame, -1, -ret, NULL);                  if (stub != NULL) {                          call_stub_destroy (stub); @@ -2066,9 +2113,9 @@ out:  int  iot_entrylk_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                 int32_t op_ret, int32_t op_errno) +                 int32_t op_ret, int32_t op_errno, dict_t *xdata)  { -        STACK_UNWIND_STRICT (entrylk, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (entrylk, frame, op_ret, op_errno, xdata);          return 0;  } @@ -2076,11 +2123,11 @@ iot_entrylk_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  iot_entrylk_wrapper (call_frame_t *frame, xlator_t *this,                       const char *volume, loc_t *loc, const char *basename, -                     entrylk_cmd cmd, entrylk_type type) +                     entrylk_cmd cmd, entrylk_type type, dict_t *xdata)  {          STACK_WIND (frame, iot_entrylk_cbk, FIRST_CHILD (this),                      FIRST_CHILD (this)->fops->entrylk, -                    volume, loc, basename, cmd, type); +                    volume, loc, basename, cmd, type, xdata);          return 0;  } @@ -2088,13 +2135,13 @@ iot_entrylk_wrapper (call_frame_t *frame, xlator_t *this,  int  iot_entrylk (call_frame_t *frame, xlator_t *this,               const char *volume, loc_t *loc, const char *basename, -             entrylk_cmd cmd, entrylk_type type) +             entrylk_cmd cmd, entrylk_type type, dict_t *xdata)  {          call_stub_t     *stub = NULL;          int             ret = -1;          stub = fop_entrylk_stub (frame, iot_entrylk_wrapper, -                                 volume, loc, basename, cmd, type); +                                 volume, loc, basename, cmd, type, xdata);          if (!stub) {                  gf_log (this->private, GF_LOG_ERROR,"cannot get entrylk stub"                          "(out of memory)"); @@ -2105,7 +2152,7 @@ iot_entrylk (call_frame_t *frame, xlator_t *this,          ret = iot_schedule (frame, this, stub);  out:          if (ret < 0) { -                STACK_UNWIND_STRICT (entrylk, frame, -1, -ret); +                STACK_UNWIND_STRICT (entrylk, frame, -1, -ret, NULL);                  if (stub != NULL) {                          call_stub_destroy (stub); @@ -2116,9 +2163,9 @@ out:  int  iot_fentrylk_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                  int32_t op_ret, int32_t op_errno) +                  int32_t op_ret, int32_t op_errno, dict_t *xdata)  { -        STACK_UNWIND_STRICT (fentrylk, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (fentrylk, frame, op_ret, op_errno, xdata);          return 0;  } @@ -2126,11 +2173,11 @@ iot_fentrylk_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  iot_fentrylk_wrapper (call_frame_t *frame, xlator_t *this,                        const char *volume, fd_t *fd, const char *basename, -                      entrylk_cmd cmd, entrylk_type type) +                      entrylk_cmd cmd, entrylk_type type, dict_t *xdata)  {          STACK_WIND (frame, iot_fentrylk_cbk, FIRST_CHILD (this),                      FIRST_CHILD (this)->fops->fentrylk, -                    volume, fd, basename, cmd, type); +                    volume, fd, basename, cmd, type, xdata);          return 0;  } @@ -2138,13 +2185,13 @@ iot_fentrylk_wrapper (call_frame_t *frame, xlator_t *this,  int  iot_fentrylk (call_frame_t *frame, xlator_t *this,                const char *volume, fd_t *fd, const char *basename, -              entrylk_cmd cmd, entrylk_type type) +              entrylk_cmd cmd, entrylk_type type, dict_t *xdata)  {          call_stub_t     *stub = NULL;          int             ret = -1;          stub = fop_fentrylk_stub (frame, iot_fentrylk_wrapper, -                                  volume, fd, basename, cmd, type); +                                  volume, fd, basename, cmd, type, xdata);          if (!stub) {                  gf_log (this->private, GF_LOG_ERROR,"cannot get fentrylk stub"                          "(out of memory)"); @@ -2155,7 +2202,7 @@ iot_fentrylk (call_frame_t *frame, xlator_t *this,          ret = iot_schedule (frame, this, stub);  out:          if (ret < 0) { -                STACK_UNWIND_STRICT (fentrylk, frame, -1, -ret); +                STACK_UNWIND_STRICT (fentrylk, frame, -1, -ret, NULL);                  if (stub != NULL) {                          call_stub_destroy (stub); @@ -2167,32 +2214,32 @@ out:  int  iot_xattrop_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                 int32_t op_ret, int32_t op_errno, dict_t *xattr) +                 int32_t op_ret, int32_t op_errno, dict_t *xattr, dict_t *xdata)  { -        STACK_UNWIND_STRICT (xattrop, frame, op_ret, op_errno, xattr); +        STACK_UNWIND_STRICT (xattrop, frame, op_ret, op_errno, xattr, xdata);          return 0;  }  int  iot_xattrop_wrapper (call_frame_t *frame, xlator_t *this, loc_t *loc, -                     gf_xattrop_flags_t optype, dict_t *xattr) +                     gf_xattrop_flags_t optype, dict_t *xattr, dict_t *xdata)  {          STACK_WIND (frame, iot_xattrop_cbk, FIRST_CHILD (this), -                    FIRST_CHILD (this)->fops->xattrop, loc, optype, xattr); +                    FIRST_CHILD (this)->fops->xattrop, loc, optype, xattr, xdata);          return 0;  }  int  iot_xattrop (call_frame_t *frame, xlator_t *this, loc_t *loc, -             gf_xattrop_flags_t optype, dict_t *xattr) +             gf_xattrop_flags_t optype, dict_t *xattr, dict_t *xdata)  {          call_stub_t     *stub = NULL;          int             ret = -1;          stub = fop_xattrop_stub (frame, iot_xattrop_wrapper, loc, optype, -                                        xattr); +                                        xattr, xdata);          if (!stub) {                  gf_log (this->name, GF_LOG_ERROR, "cannot create xattrop stub"                          "(out of memory)"); @@ -2203,7 +2250,7 @@ iot_xattrop (call_frame_t *frame, xlator_t *this, loc_t *loc,          ret = iot_schedule (frame, this, stub);  out:          if (ret < 0) { -                STACK_UNWIND_STRICT (xattrop, frame, -1, -ret, NULL); +                STACK_UNWIND_STRICT (xattrop, frame, -1, -ret, NULL, NULL);                  if (stub != NULL) {                          call_stub_destroy (stub); @@ -2215,31 +2262,31 @@ out:  int  iot_fxattrop_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                  int32_t op_ret, int32_t op_errno, dict_t *xattr) +                  int32_t op_ret, int32_t op_errno, dict_t *xattr, dict_t *xdata)  { -        STACK_UNWIND_STRICT (fxattrop, frame, op_ret, op_errno, xattr); +        STACK_UNWIND_STRICT (fxattrop, frame, op_ret, op_errno, xattr, xdata);          return 0;  }  int  iot_fxattrop_wrapper (call_frame_t *frame, xlator_t *this, fd_t *fd, -                      gf_xattrop_flags_t optype, dict_t *xattr) +                      gf_xattrop_flags_t optype, dict_t *xattr, dict_t *xdata)  {          STACK_WIND (frame, iot_fxattrop_cbk, FIRST_CHILD (this), -                    FIRST_CHILD (this)->fops->fxattrop, fd, optype, xattr); +                    FIRST_CHILD (this)->fops->fxattrop, fd, optype, xattr, xdata);          return 0;  }  int  iot_fxattrop (call_frame_t *frame, xlator_t *this, fd_t *fd, -              gf_xattrop_flags_t optype, dict_t *xattr) +              gf_xattrop_flags_t optype, dict_t *xattr, dict_t *xdata)  {          call_stub_t     *stub = NULL;          int             ret = -1;          stub = fop_fxattrop_stub (frame, iot_fxattrop_wrapper, fd, optype, -                                        xattr); +                                  xattr, xdata);          if (!stub) {                  gf_log (this->name, GF_LOG_ERROR, "cannot create fxattrop stub"                          "(out of memory)"); @@ -2250,7 +2297,7 @@ iot_fxattrop (call_frame_t *frame, xlator_t *this, fd_t *fd,          ret = iot_schedule (frame, this, stub);  out:          if (ret < 0) { -                STACK_UNWIND_STRICT (fxattrop, frame, -1, -ret, NULL); +                STACK_UNWIND_STRICT (fxattrop, frame, -1, -ret, NULL, NULL);                  if (stub != NULL) {                          call_stub_destroy (stub);                  } @@ -2262,33 +2309,33 @@ out:  int32_t  iot_rchecksum_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                     int32_t op_ret, int32_t op_errno, uint32_t weak_checksum, -                   uint8_t *strong_checksum) +                   uint8_t *strong_checksum, dict_t *xdata)  {          STACK_UNWIND_STRICT (rchecksum, frame, op_ret, op_errno, weak_checksum, -                             strong_checksum); +                             strong_checksum, xdata);          return 0;  }  int32_t  iot_rchecksum_wrapper (call_frame_t *frame, xlator_t *this, fd_t *fd, -                       off_t offset, int32_t len) +                       off_t offset, int32_t len, dict_t *xdata)  {          STACK_WIND (frame, iot_rchecksum_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->rchecksum, fd, offset, len); +                    FIRST_CHILD(this)->fops->rchecksum, fd, offset, len, xdata);          return 0;  }  int32_t  iot_rchecksum (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset, -               int32_t len) +               int32_t len, dict_t *xdata)  {          call_stub_t     *stub = NULL;          int             ret = -1;          stub = fop_rchecksum_stub (frame, iot_rchecksum_wrapper, fd, offset, -                                   len); +                                   len, xdata);          if (!stub) {                  gf_log (this->name, GF_LOG_ERROR, "cannot create rchecksum stub"                          "(out of memory)"); @@ -2299,7 +2346,7 @@ iot_rchecksum (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset,          ret = iot_schedule (frame, this, stub);  out:          if (ret < 0) { -                STACK_UNWIND_STRICT (rchecksum, frame, -1, -ret, -1, NULL); +                STACK_UNWIND_STRICT (rchecksum, frame, -1, -ret, -1, NULL, NULL);                  if (stub != NULL) {                          call_stub_destroy (stub);                  }  | 
