diff options
Diffstat (limited to 'xlators/performance')
| -rw-r--r-- | xlators/performance/io-cache/src/io-cache.c | 114 | ||||
| -rw-r--r-- | xlators/performance/io-cache/src/io-cache.h | 3 | ||||
| -rw-r--r-- | xlators/performance/io-cache/src/page.c | 7 | ||||
| -rw-r--r-- | xlators/performance/io-threads/src/io-threads.c | 625 | ||||
| -rw-r--r-- | xlators/performance/md-cache/src/md-cache.c | 243 | ||||
| -rw-r--r-- | xlators/performance/quick-read/src/quick-read.c | 328 | ||||
| -rw-r--r-- | xlators/performance/read-ahead/src/page.c | 7 | ||||
| -rw-r--r-- | xlators/performance/read-ahead/src/read-ahead.c | 105 | ||||
| -rw-r--r-- | xlators/performance/symlink-cache/src/symlink-cache.c | 34 | ||||
| -rw-r--r-- | xlators/performance/write-behind/src/write-behind.c | 207 | 
10 files changed, 887 insertions, 786 deletions
diff --git a/xlators/performance/io-cache/src/io-cache.c b/xlators/performance/io-cache/src/io-cache.c index a50fa872e71..42ec584badd 100644 --- a/xlators/performance/io-cache/src/io-cache.c +++ b/xlators/performance/io-cache/src/io-cache.c @@ -157,15 +157,16 @@ ioc_inode_flush (ioc_inode_t *ioc_inode)  int32_t  ioc_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;  }  int32_t  ioc_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)  {          uint64_t ioc_inode = 0; @@ -177,7 +178,7 @@ ioc_setattr (call_frame_t *frame, xlator_t *this, loc_t *loc,                  ioc_inode_flush ((ioc_inode_t *)(long)ioc_inode);          STACK_WIND (frame, ioc_setattr_cbk, FIRST_CHILD (this), -                    FIRST_CHILD (this)->fops->setattr, loc, stbuf, valid); +                    FIRST_CHILD (this)->fops->setattr, loc, stbuf, valid, xdata);          return 0;  } @@ -185,7 +186,7 @@ ioc_setattr (call_frame_t *frame, xlator_t *this, loc_t *loc,  int32_t  ioc_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  int32_t op_ret,	int32_t op_errno, inode_t *inode, -                struct iatt *stbuf, dict_t *dict, struct iatt *postparent) +                struct iatt *stbuf, dict_t *xdata, struct iatt *postparent)  {          ioc_inode_t *ioc_inode         = NULL;          ioc_table_t *table             = NULL; @@ -264,13 +265,13 @@ out:          }          STACK_UNWIND_STRICT (lookup, frame, op_ret, op_errno, inode, stbuf, -                             dict, postparent); +                             xdata, postparent);          return 0;  }  int32_t  ioc_lookup (call_frame_t *frame, xlator_t *this, loc_t *loc, -            dict_t *xattr_req) +            dict_t *xdata)  {          ioc_local_t *local    = NULL;          int32_t      op_errno = -1, ret = -1; @@ -292,7 +293,7 @@ ioc_lookup (call_frame_t *frame, xlator_t *this, loc_t *loc,          frame->local = local;          STACK_WIND (frame, ioc_lookup_cbk, FIRST_CHILD (this), -                    FIRST_CHILD (this)->fops->lookup, loc, xattr_req); +                    FIRST_CHILD (this)->fops->lookup, loc, xdata);          return 0; @@ -338,7 +339,8 @@ ioc_forget (xlator_t *this, inode_t *inode)   */  int32_t  ioc_cache_validate_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                        int32_t op_ret, int32_t op_errno, struct iatt *stbuf) +                        int32_t op_ret, int32_t op_errno, struct iatt *stbuf, +                        dict_t *xdata)  {          ioc_local_t *local        = NULL;          ioc_inode_t *ioc_inode    = NULL; @@ -481,7 +483,7 @@ ioc_cache_validate (call_frame_t *frame, ioc_inode_t *ioc_inode, fd_t *fd,          STACK_WIND (validate_frame, ioc_cache_validate_cbk,                      FIRST_CHILD (frame->this), -                    FIRST_CHILD (frame->this)->fops->fstat, fd); +                    FIRST_CHILD (frame->this)->fops->fstat, fd, NULL);  out:          return ret; @@ -528,7 +530,7 @@ ioc_get_priority (ioc_table_t *table, const char *path)   */  int32_t  ioc_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)  {          uint64_t     tmp_ioc_inode = 0;          ioc_local_t *local         = NULL; @@ -573,10 +575,6 @@ ioc_open_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret,                           */                          fd_ctx_set (fd, this, 1);                  } -                if ((local->wbflags & GF_OPEN_NOWB) != 0) { -                        /* disable caching as asked by NFS */ -                        fd_ctx_set (fd, this, 1); -                }                  /* weight = 0, we disable caching on it */                  if (weight == 0) { @@ -590,7 +588,7 @@ out:          mem_put (local);          frame->local = NULL; -        STACK_UNWIND_STRICT (open, frame, op_ret, op_errno, fd); +        STACK_UNWIND_STRICT (open, frame, op_ret, op_errno, fd, xdata);          return 0;  } @@ -612,7 +610,7 @@ int32_t  ioc_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 *buf, struct iatt *preparent, -                struct iatt *postparent) +                struct iatt *postparent, dict_t *xdata)  {          ioc_local_t *local     = NULL;          ioc_table_t *table     = NULL; @@ -687,7 +685,7 @@ out:          mem_put (local);          STACK_UNWIND_STRICT (create, frame, op_ret, op_errno, fd, inode, buf, -                             preparent, postparent); +                             preparent, postparent, xdata);          return 0;  } @@ -697,7 +695,7 @@ int32_t  ioc_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)  {          ioc_local_t *local     = NULL;          ioc_table_t *table     = NULL; @@ -740,14 +738,14 @@ out:          mem_put (local);          STACK_UNWIND_STRICT (mknod, frame, op_ret, op_errno, inode, buf, -                             preparent, postparent); +                             preparent, postparent, xdata);          return 0;  }  int  ioc_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)  {          ioc_local_t *local    = NULL;          int32_t      op_errno = -1, ret = -1; @@ -771,7 +769,7 @@ ioc_mknod (call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode,          STACK_WIND (frame, ioc_mknod_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->mknod, -                    loc, mode, rdev, params); +                    loc, mode, rdev, umask, xdata);          return 0;  unwind: @@ -781,7 +779,7 @@ unwind:          }          STACK_UNWIND_STRICT (mknod, frame, -1, op_errno, NULL, NULL, -                             NULL, NULL); +                             NULL, NULL, NULL);          return 0;  } @@ -797,7 +795,7 @@ unwind:   */  int32_t  ioc_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)  {          ioc_local_t *local = NULL; @@ -805,19 +803,19 @@ ioc_open (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t flags,          local = mem_get0 (this->local_pool);          if (local == NULL) {                  gf_log (this->name, GF_LOG_ERROR, "out of memory"); -                STACK_UNWIND_STRICT (open, frame, -1, ENOMEM, NULL); +                STACK_UNWIND_STRICT (open, frame, -1, ENOMEM, NULL, NULL);                  return 0;          }          local->flags = flags;          local->file_loc.path = loc->path;          local->file_loc.inode = loc->inode; -        local->wbflags = wbflags;          frame->local = local;          STACK_WIND (frame, ioc_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;  } @@ -834,7 +832,7 @@ ioc_open (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t flags,   */  int32_t  ioc_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)  {          ioc_local_t *local = NULL; @@ -842,7 +840,7 @@ ioc_create (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t flags,          if (local == NULL) {                  gf_log (this->name, GF_LOG_ERROR, "out of memory");                  STACK_UNWIND_STRICT (create, frame, -1, ENOMEM, NULL, NULL, -                                     NULL, NULL, NULL); +                                     NULL, NULL, NULL, NULL);                  return 0;          } @@ -852,7 +850,7 @@ ioc_create (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t flags,          STACK_WIND (frame, ioc_create_cbk, FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->create, loc, flags, mode, -                    fd, params); +                    umask, fd, xdata);          return 0;  } @@ -889,10 +887,10 @@ int32_t  ioc_readv_disabled_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) +                        struct iobref *iobref, dict_t *xdata)  {          STACK_UNWIND_STRICT (readv, frame, op_ret, op_errno, vector, count, -                             stbuf, iobref); +                             stbuf, iobref, xdata);          return 0;  } @@ -1087,7 +1085,7 @@ out:   */  int32_t  ioc_readv (call_frame_t *frame, xlator_t *this, fd_t *fd, -           size_t size, off_t offset, uint32_t flags) +           size_t size, off_t offset, uint32_t flags, dict_t *xdata)  {          uint64_t     tmp_ioc_inode = 0;          ioc_inode_t *ioc_inode     = NULL; @@ -1107,7 +1105,7 @@ ioc_readv (call_frame_t *frame, xlator_t *this, fd_t *fd,                  STACK_WIND (frame, ioc_readv_disabled_cbk,                              FIRST_CHILD (frame->this),                              FIRST_CHILD (frame->this)->fops->readv, fd, size, -                            offset, flags); +                            offset, flags, xdata);                  return 0;          } @@ -1143,7 +1141,7 @@ ioc_readv (call_frame_t *frame, xlator_t *this, fd_t *fd,                  STACK_WIND (frame, ioc_readv_disabled_cbk,                              FIRST_CHILD (frame->this),                              FIRST_CHILD (frame->this)->fops->readv, fd, size, -                            offset, flags); +                            offset, flags, xdata);                  return 0;          } @@ -1180,7 +1178,8 @@ ioc_readv (call_frame_t *frame, xlator_t *this, fd_t *fd,          return 0;  out: -        STACK_UNWIND_STRICT (readv, frame, -1, op_errno, NULL, 0, NULL, NULL); +        STACK_UNWIND_STRICT (readv, frame, -1, op_errno, NULL, 0, NULL, NULL, +                             NULL);          return 0;  } @@ -1197,7 +1196,7 @@ out:  int32_t  ioc_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)  {          ioc_local_t *local     = NULL;          uint64_t     ioc_inode = 0; @@ -1208,7 +1207,8 @@ ioc_writev_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          if (ioc_inode)                  ioc_inode_flush ((ioc_inode_t *)(long)ioc_inode); -        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;  } @@ -1226,7 +1226,7 @@ ioc_writev_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int32_t  ioc_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)  {          ioc_local_t *local     = NULL;          uint64_t     ioc_inode = 0; @@ -1235,7 +1235,7 @@ ioc_writev (call_frame_t *frame, xlator_t *this, fd_t *fd,          if (local == NULL) {                  gf_log (this->name, GF_LOG_ERROR, "out of memory"); -                STACK_UNWIND_STRICT (writev, frame, -1, ENOMEM, NULL, NULL); +                STACK_UNWIND_STRICT (writev, frame, -1, ENOMEM, NULL, NULL, NULL);                  return 0;          } @@ -1249,7 +1249,7 @@ ioc_writev (call_frame_t *frame, xlator_t *this, fd_t *fd,          STACK_WIND (frame, ioc_writev_cbk, FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->writev, fd, vector, count, offset, -                    flags, iobref); +                    flags, iobref, xdata);          return 0;  } @@ -1268,11 +1268,11 @@ ioc_writev (call_frame_t *frame, xlator_t *this, fd_t *fd,  int32_t  ioc_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;  } @@ -1291,11 +1291,11 @@ ioc_truncate_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int32_t  ioc_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;  } @@ -1310,7 +1310,8 @@ ioc_ftruncate_cbk (call_frame_t *frame, void *cookie, xlator_t *this,   *   */  int32_t -ioc_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, off_t offset) +ioc_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, off_t offset, +              dict_t *xdata)  {          uint64_t ioc_inode = 0; @@ -1320,7 +1321,7 @@ ioc_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, off_t offset)                  ioc_inode_flush ((ioc_inode_t *)(long)ioc_inode);          STACK_WIND (frame, ioc_truncate_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->truncate, loc, offset); +                    FIRST_CHILD(this)->fops->truncate, loc, offset, xdata);          return 0;  } @@ -1334,7 +1335,8 @@ ioc_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, off_t offset)   *   */  int32_t -ioc_ftruncate (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset) +ioc_ftruncate (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset, +               dict_t *xdata)  {          uint64_t ioc_inode = 0; @@ -1344,21 +1346,21 @@ ioc_ftruncate (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset)                  ioc_inode_flush ((ioc_inode_t *)(long)ioc_inode);          STACK_WIND (frame, ioc_ftruncate_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->ftruncate, fd, offset); +                    FIRST_CHILD(this)->fops->ftruncate, fd, offset, xdata);          return 0;  }  int32_t  ioc_lk_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret, -            int32_t op_errno, struct gf_flock *lock) +            int32_t op_errno, struct gf_flock *lock, dict_t *xdata)  { -        STACK_UNWIND_STRICT (lk, frame, op_ret, op_errno, lock); +        STACK_UNWIND_STRICT (lk, frame, op_ret, op_errno, lock, xdata);          return 0;  }  int32_t  ioc_lk (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t cmd, -        struct gf_flock *lock) +        struct gf_flock *lock, dict_t *xdata)  {          ioc_inode_t *ioc_inode = NULL;          uint64_t     tmp_inode = 0; @@ -1368,7 +1370,7 @@ ioc_lk (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t cmd,          if (!ioc_inode) {                  gf_log (this->name, GF_LOG_DEBUG,                          "inode context is NULL: returning EBADFD"); -                STACK_UNWIND_STRICT (lk, frame, -1, EBADFD, NULL); +                STACK_UNWIND_STRICT (lk, frame, -1, EBADFD, NULL, NULL);                  return 0;          } @@ -1379,14 +1381,14 @@ ioc_lk (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t cmd,          ioc_inode_unlock (ioc_inode);          STACK_WIND (frame, ioc_lk_cbk, FIRST_CHILD (this), -                    FIRST_CHILD (this)->fops->lk, fd, cmd, lock); +                    FIRST_CHILD (this)->fops->lk, fd, cmd, lock, xdata);          return 0;  }  int  ioc_readdirp_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                  int op_ret, int op_errno, gf_dirent_t *entries) +                  int op_ret, int op_errno, gf_dirent_t *entries, dict_t *xdata)  {          gf_dirent_t *entry = NULL; @@ -1398,7 +1400,7 @@ ioc_readdirp_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          }  unwind: -        STACK_UNWIND_STRICT (readdirp, frame, op_ret, op_errno, entries); +        STACK_UNWIND_STRICT (readdirp, frame, op_ret, op_errno, entries, xdata);          return 0;  } diff --git a/xlators/performance/io-cache/src/io-cache.h b/xlators/performance/io-cache/src/io-cache.h index c3c631dbace..cfc12ed0fb6 100644 --- a/xlators/performance/io-cache/src/io-cache.h +++ b/xlators/performance/io-cache/src/io-cache.h @@ -84,7 +84,6 @@ struct ioc_fill {  struct ioc_local {          mode_t           mode;          int32_t          flags; -        int32_t          wbflags;          loc_t            file_loc;          off_t            offset;          size_t           size; @@ -198,7 +197,7 @@ int32_t  ioc_readv_disabled_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); +                        struct iobref *iobref, dict_t *xdata);  ioc_page_t *  __ioc_page_get (ioc_inode_t *ioc_inode, off_t offset); diff --git a/xlators/performance/io-cache/src/page.c b/xlators/performance/io-cache/src/page.c index 50357199f44..115242c089e 100644 --- a/xlators/performance/io-cache/src/page.c +++ b/xlators/performance/io-cache/src/page.c @@ -417,7 +417,8 @@ ioc_waitq_return (ioc_waitq_t *waitq)  int  ioc_fault_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)  {          ioc_local_t *local            = NULL;          off_t        offset           = 0; @@ -632,7 +633,7 @@ ioc_page_fault (ioc_inode_t *ioc_inode, call_frame_t *frame, fd_t *fd,          STACK_WIND (fault_frame, ioc_fault_cbk, FIRST_CHILD(fault_frame->this),                      FIRST_CHILD(fault_frame->this)->fops->readv, fd, -                    table->page_size, offset, 0); +                    table->page_size, offset, 0, NULL);          return;  err: @@ -878,7 +879,7 @@ unwind:          //  ioc_local_unlock (local);          STACK_UNWIND_STRICT (readv, frame, op_ret, local->op_errno, vector, -                             count, &stbuf, iobref); +                             count, &stbuf, iobref, NULL);          if (iobref != NULL) {                  iobref_unref (iobref); 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);                  } diff --git a/xlators/performance/md-cache/src/md-cache.c b/xlators/performance/md-cache/src/md-cache.c index 5fa6e214bf8..13396a44e8a 100644 --- a/xlators/performance/md-cache/src/md-cache.c +++ b/xlators/performance/md-cache/src/md-cache.c @@ -632,7 +632,7 @@ out:  int  mdc_lookup (call_frame_t *frame, xlator_t *this, loc_t *loc, -            dict_t *xattr_req) +            dict_t *xdata)  {          int          ret = 0;          struct iatt  stbuf = {0, }; @@ -651,12 +651,12 @@ mdc_lookup (call_frame_t *frame, xlator_t *this, loc_t *loc,          if (ret != 0)                  goto uncached; -        if (xattr_req) { +        if (xdata) {                  ret = mdc_inode_xatt_get (this, loc->inode, &xattr_rsp);                  if (ret != 0)                          goto uncached; -                if (!mdc_xattr_satisfied (this, xattr_req, xattr_rsp)) +                if (!mdc_xattr_satisfied (this, xdata, xattr_rsp))                          goto uncached;          } @@ -669,11 +669,11 @@ mdc_lookup (call_frame_t *frame, xlator_t *this, loc_t *loc,          return 0;  uncached: -	if (xattr_req) -		mdc_load_reqs (this, xattr_req); +	if (xdata) +		mdc_load_reqs (this, xdata);          STACK_WIND (frame, mdc_lookup_cbk, FIRST_CHILD (this), -                    FIRST_CHILD (this)->fops->lookup, loc, xattr_req); +                    FIRST_CHILD (this)->fops->lookup, loc, xdata);          if (xattr_rsp)                  dict_unref (xattr_rsp); @@ -684,7 +684,7 @@ uncached:  int  mdc_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)  {          mdc_local_t  *local = NULL; @@ -698,14 +698,14 @@ mdc_stat_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          mdc_inode_iatt_set (this, local->loc.inode, buf);  out: -        MDC_STACK_UNWIND (stat, frame, op_ret, op_errno, buf); +        MDC_STACK_UNWIND (stat, frame, op_ret, op_errno, buf, xdata);          return 0;  }  int -mdc_stat (call_frame_t *frame, xlator_t *this, loc_t *loc) +mdc_stat (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *xdata)  {          int           ret;          struct iatt   stbuf; @@ -721,21 +721,22 @@ mdc_stat (call_frame_t *frame, xlator_t *this, loc_t *loc)          if (ret != 0)                  goto uncached; -        MDC_STACK_UNWIND (stat, frame, 0, 0, &stbuf); +        MDC_STACK_UNWIND (stat, frame, 0, 0, &stbuf, xdata);          return 0;  uncached:          STACK_WIND (frame, mdc_stat_cbk,                      FIRST_CHILD(this), FIRST_CHILD(this)->fops->stat, -                    loc); +                    loc, xdata);          return 0;  }  int  mdc_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)  {          mdc_local_t  *local = NULL; @@ -749,14 +750,14 @@ mdc_fstat_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          mdc_inode_iatt_set (this, local->fd->inode, buf);  out: -        MDC_STACK_UNWIND (fstat, frame, op_ret, op_errno, buf); +        MDC_STACK_UNWIND (fstat, frame, op_ret, op_errno, buf, xdata);          return 0;  }  int -mdc_fstat (call_frame_t *frame, xlator_t *this, fd_t *fd) +mdc_fstat (call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *xdata)  {          int           ret;          struct iatt   stbuf; @@ -772,14 +773,14 @@ mdc_fstat (call_frame_t *frame, xlator_t *this, fd_t *fd)          if (ret != 0)                  goto uncached; -        MDC_STACK_UNWIND (fstat, frame, 0, 0, &stbuf); +        MDC_STACK_UNWIND (fstat, frame, 0, 0, &stbuf, xdata);          return 0;  uncached:          STACK_WIND (frame, mdc_fstat_cbk,                      FIRST_CHILD(this), FIRST_CHILD(this)->fops->fstat, -                    fd); +                    fd, xdata);          return 0;  } @@ -787,7 +788,7 @@ uncached:  int  mdc_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 *prebuf, struct iatt *postbuf, dict_t *xdata)  {          mdc_local_t  *local = NULL; @@ -802,7 +803,8 @@ mdc_truncate_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          mdc_inode_iatt_set (this, local->loc.inode, postbuf);  out: -        MDC_STACK_UNWIND (truncate, frame, op_ret, op_errno, prebuf, postbuf); +        MDC_STACK_UNWIND (truncate, frame, op_ret, op_errno, prebuf, postbuf, +                          xdata);          return 0;  } @@ -810,7 +812,7 @@ out:  int  mdc_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, -              off_t offset) +              off_t offset, dict_t *xdata)  {          mdc_local_t  *local = NULL; @@ -820,7 +822,7 @@ mdc_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc,          STACK_WIND (frame, mdc_truncate_cbk,                      FIRST_CHILD(this), FIRST_CHILD(this)->fops->truncate, -                    loc, offset); +                    loc, offset, xdata);          return 0;  } @@ -828,7 +830,7 @@ mdc_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc,  int  mdc_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 *prebuf, struct iatt *postbuf, dict_t *xdata)  {          mdc_local_t  *local = NULL; @@ -843,7 +845,8 @@ mdc_ftruncate_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          mdc_inode_iatt_set (this, local->fd->inode, postbuf);  out: -        MDC_STACK_UNWIND (ftruncate, frame, op_ret, op_errno, prebuf, postbuf); +        MDC_STACK_UNWIND (ftruncate, frame, op_ret, op_errno, prebuf, postbuf, +                          xdata);          return 0;  } @@ -851,7 +854,7 @@ out:  int  mdc_ftruncate (call_frame_t *frame, xlator_t *this, fd_t *fd, -               off_t offset) +               off_t offset, dict_t *xdata)  {          mdc_local_t  *local = NULL; @@ -861,7 +864,7 @@ mdc_ftruncate (call_frame_t *frame, xlator_t *this, fd_t *fd,          STACK_WIND (frame, mdc_ftruncate_cbk,                      FIRST_CHILD(this), FIRST_CHILD(this)->fops->ftruncate, -                    fd, offset); +                    fd, offset, xdata);          return 0;  } @@ -869,7 +872,8 @@ mdc_ftruncate (call_frame_t *frame, xlator_t *this, fd_t *fd,  int  mdc_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 *buf, struct iatt *preparent, +               struct iatt *postparent, dict_t *xdata)  {          mdc_local_t *local = NULL; @@ -891,25 +895,25 @@ mdc_mknod_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          }  out:          MDC_STACK_UNWIND (mknod, frame, op_ret, op_errno, inode, buf, -                          preparent, postparent); +                          preparent, postparent, xdata);          return 0;  }  int  mdc_mknod (call_frame_t *frame, xlator_t *this, loc_t *loc, -           mode_t mode, dev_t rdev, dict_t *params) +           mode_t mode, dev_t rdev, mode_t umask, dict_t *xdata)  {          mdc_local_t  *local = NULL;          local = mdc_local_get (frame);          loc_copy (&local->loc, loc); -        local->xattr = dict_ref (params); +        local->xattr = dict_ref (xdata);          STACK_WIND (frame, mdc_mknod_cbk,                      FIRST_CHILD(this), FIRST_CHILD(this)->fops->mknod, -                    loc, mode, rdev, params); +                    loc, mode, rdev, umask, xdata);          return 0;  } @@ -917,7 +921,8 @@ mdc_mknod (call_frame_t *frame, xlator_t *this, loc_t *loc,  int  mdc_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 *buf, struct iatt *preparent, +               struct iatt *postparent, dict_t *xdata)  {          mdc_local_t *local = NULL; @@ -939,25 +944,25 @@ mdc_mkdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          }  out:          MDC_STACK_UNWIND (mkdir, frame, op_ret, op_errno, inode, buf, -                          preparent, postparent); +                          preparent, postparent, xdata);          return 0;  }  int  mdc_mkdir (call_frame_t *frame, xlator_t *this, loc_t *loc, -           mode_t mode, dict_t *params) +           mode_t mode, mode_t umask, dict_t *xdata)  {          mdc_local_t  *local = NULL;          local = mdc_local_get (frame);          loc_copy (&local->loc, loc); -        local->xattr = dict_ref (params); +        local->xattr = dict_ref (xdata);          STACK_WIND (frame, mdc_mkdir_cbk,                      FIRST_CHILD(this), FIRST_CHILD(this)->fops->mkdir, -                    loc, mode, params); +                    loc, mode, umask, xdata);          return 0;  } @@ -965,7 +970,7 @@ mdc_mkdir (call_frame_t *frame, xlator_t *this, loc_t *loc,  int  mdc_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 *preparent, struct iatt *postparent, dict_t *xdata)  {          mdc_local_t *local = NULL; @@ -987,13 +992,14 @@ mdc_unlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  out:          MDC_STACK_UNWIND (unlink, frame, op_ret, op_errno, -                          preparent, postparent); +                          preparent, postparent, xdata);          return 0;  }  int -mdc_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc) +mdc_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t xflag, +            dict_t *xdata)  {          mdc_local_t  *local = NULL; @@ -1003,7 +1009,7 @@ mdc_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc)          STACK_WIND (frame, mdc_unlink_cbk,                      FIRST_CHILD(this), FIRST_CHILD(this)->fops->unlink, -                    loc); +                    loc, xflag, xdata);          return 0;  } @@ -1011,7 +1017,7 @@ mdc_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc)  int  mdc_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 *preparent, struct iatt *postparent, dict_t *xdata)  {          mdc_local_t *local = NULL; @@ -1029,13 +1035,14 @@ mdc_rmdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  out:          MDC_STACK_UNWIND (rmdir, frame, op_ret, op_errno, -                          preparent, postparent); +                          preparent, postparent, xdata);          return 0;  }  int -mdc_rmdir (call_frame_t *frame, xlator_t *this, loc_t *loc, int flag) +mdc_rmdir (call_frame_t *frame, xlator_t *this, loc_t *loc, int flag, +           dict_t *xdata)  {          mdc_local_t  *local = NULL; @@ -1045,7 +1052,7 @@ mdc_rmdir (call_frame_t *frame, xlator_t *this, loc_t *loc, int flag)          STACK_WIND (frame, mdc_rmdir_cbk,                      FIRST_CHILD(this), FIRST_CHILD(this)->fops->rmdir, -                    loc, flag); +                    loc, flag, xdata);          return 0;  } @@ -1053,7 +1060,8 @@ mdc_rmdir (call_frame_t *frame, xlator_t *this, loc_t *loc, int flag)  int  mdc_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 *buf, struct iatt *preparent, +                 struct iatt *postparent, dict_t *xdata)  {          mdc_local_t *local = NULL; @@ -1074,14 +1082,14 @@ mdc_symlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          }  out:          MDC_STACK_UNWIND (symlink, frame, op_ret, op_errno, inode, buf, -                          preparent, postparent); +                          preparent, postparent, xdata);          return 0;  }  int  mdc_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)  {          mdc_local_t  *local = NULL; @@ -1093,7 +1101,7 @@ mdc_symlink (call_frame_t *frame, xlator_t *this, const char *linkname,          STACK_WIND (frame, mdc_symlink_cbk,                      FIRST_CHILD(this), FIRST_CHILD(this)->fops->symlink, -                    linkname, loc, params); +                    linkname, loc, umask, xdata);          return 0;  } @@ -1102,7 +1110,8 @@ int  mdc_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)  {          mdc_local_t *local = NULL; @@ -1131,14 +1140,15 @@ mdc_rename_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          }  out:          MDC_STACK_UNWIND (rename, frame, op_ret, op_errno, buf, -                          preoldparent, postoldparent, prenewparent, postnewparent); +                          preoldparent, postoldparent, prenewparent, +                          postnewparent, xdata);          return 0;  }  int  mdc_rename (call_frame_t *frame, xlator_t *this, -            loc_t *oldloc, loc_t *newloc) +            loc_t *oldloc, loc_t *newloc, dict_t *xdata)  {          mdc_local_t  *local = NULL; @@ -1149,7 +1159,7 @@ mdc_rename (call_frame_t *frame, xlator_t *this,          STACK_WIND (frame, mdc_rename_cbk,                      FIRST_CHILD(this), FIRST_CHILD(this)->fops->rename, -                    oldloc, newloc); +                    oldloc, newloc, xdata);          return 0;  } @@ -1157,7 +1167,7 @@ mdc_rename (call_frame_t *frame, xlator_t *this,  int  mdc_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 *preparent, struct iatt *postparent, dict_t *xdata)  {          mdc_local_t *local = NULL; @@ -1178,14 +1188,14 @@ mdc_link_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          }  out:          MDC_STACK_UNWIND (link, frame, op_ret, op_errno, inode, buf, -                          preparent, postparent); +                          preparent, postparent, xdata);          return 0;  }  int  mdc_link (call_frame_t *frame, xlator_t *this, -          loc_t *oldloc, loc_t *newloc) +          loc_t *oldloc, loc_t *newloc, dict_t *xdata)  {          mdc_local_t  *local = NULL; @@ -1196,7 +1206,7 @@ mdc_link (call_frame_t *frame, xlator_t *this,          STACK_WIND (frame, mdc_link_cbk,                      FIRST_CHILD(this), FIRST_CHILD(this)->fops->link, -                    oldloc, newloc); +                    oldloc, newloc, xdata);          return 0;  } @@ -1204,7 +1214,8 @@ mdc_link (call_frame_t *frame, xlator_t *this,  int  mdc_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 *buf, struct iatt *preparent, struct iatt *postparent) +                struct iatt *buf, struct iatt *preparent, +                struct iatt *postparent, dict_t *xdata)  {          mdc_local_t *local = NULL; @@ -1226,25 +1237,25 @@ mdc_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          }  out:          MDC_STACK_UNWIND (create, frame, op_ret, op_errno, fd, inode, buf, -                          preparent, postparent); +                          preparent, postparent, xdata);          return 0;  }  int  mdc_create (call_frame_t *frame, xlator_t *this, loc_t *loc, int flags, -            mode_t mode, fd_t *fd, dict_t *params) +            mode_t mode, mode_t umask, fd_t *fd, dict_t *xdata)  {          mdc_local_t  *local = NULL;          local = mdc_local_get (frame);          loc_copy (&local->loc, loc); -        local->xattr = dict_ref (params); +        local->xattr = dict_ref (xdata);          STACK_WIND (frame, mdc_create_cbk,                      FIRST_CHILD(this), FIRST_CHILD(this)->fops->create, -                    loc, flags, mode, fd, params); +                    loc, flags, mode, umask, fd, xdata);          return 0;  } @@ -1253,7 +1264,7 @@ int  mdc_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) +               struct iatt *stbuf, struct iobref *iobref, dict_t *xdata)  {          mdc_local_t  *local = NULL; @@ -1269,7 +1280,7 @@ mdc_readv_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  out:          MDC_STACK_UNWIND (readv, frame, op_ret, op_errno, vector, count, -                          stbuf, iobref); +                          stbuf, iobref, xdata);          return 0;  } @@ -1277,7 +1288,7 @@ out:  int  mdc_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)  {          mdc_local_t  *local = NULL; @@ -1287,7 +1298,7 @@ mdc_readv (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size,          STACK_WIND (frame, mdc_readv_cbk,                      FIRST_CHILD(this), FIRST_CHILD(this)->fops->readv, -                    fd, size, offset, flags); +                    fd, size, offset, flags, xdata);          return 0;  } @@ -1295,7 +1306,7 @@ mdc_readv (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size,  int  mdc_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 *prebuf, struct iatt *postbuf, dict_t *xdata)  {          mdc_local_t  *local = NULL; @@ -1310,7 +1321,8 @@ mdc_writev_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          mdc_inode_iatt_set (this, local->fd->inode, postbuf);  out: -        MDC_STACK_UNWIND (writev, frame, op_ret, op_errno, prebuf, postbuf); +        MDC_STACK_UNWIND (writev, frame, op_ret, op_errno, prebuf, postbuf, +                          xdata);          return 0;  } @@ -1318,7 +1330,8 @@ out:  int  mdc_writev (call_frame_t *frame, xlator_t *this, fd_t *fd, struct iovec *vector, -            int count, off_t offset, uint32_t flags, struct iobref *iobref) +            int count, off_t offset, uint32_t flags, struct iobref *iobref, +            dict_t *xdata)  {          mdc_local_t  *local = NULL; @@ -1328,7 +1341,7 @@ mdc_writev (call_frame_t *frame, xlator_t *this, fd_t *fd, struct iovec *vector,          STACK_WIND (frame, mdc_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;  } @@ -1336,7 +1349,7 @@ mdc_writev (call_frame_t *frame, xlator_t *this, fd_t *fd, struct iovec *vector,  int  mdc_setattr_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 *prebuf, struct iatt *postbuf, dict_t *xdata)  {          mdc_local_t  *local = NULL; @@ -1353,7 +1366,8 @@ mdc_setattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          mdc_inode_iatt_set (this, local->loc.inode, postbuf);  out: -        MDC_STACK_UNWIND (setattr, frame, op_ret, op_errno, prebuf, postbuf); +        MDC_STACK_UNWIND (setattr, frame, op_ret, op_errno, prebuf, postbuf, +                          xdata);          return 0;  } @@ -1361,7 +1375,7 @@ out:  int  mdc_setattr (call_frame_t *frame, xlator_t *this, loc_t *loc, -             struct iatt *stbuf, int valid) +             struct iatt *stbuf, int valid, dict_t *xdata)  {          mdc_local_t  *local = NULL; @@ -1371,7 +1385,7 @@ mdc_setattr (call_frame_t *frame, xlator_t *this, loc_t *loc,          STACK_WIND (frame, mdc_setattr_cbk,                      FIRST_CHILD(this), FIRST_CHILD(this)->fops->setattr, -                    loc, stbuf, valid); +                    loc, stbuf, valid, xdata);          return 0;  } @@ -1379,7 +1393,7 @@ mdc_setattr (call_frame_t *frame, xlator_t *this, loc_t *loc,  int  mdc_fsetattr_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 *prebuf, struct iatt *postbuf, dict_t *xdata)  {          mdc_local_t  *local = NULL; @@ -1394,7 +1408,8 @@ mdc_fsetattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          mdc_inode_iatt_set (this, local->fd->inode, postbuf);  out: -        MDC_STACK_UNWIND (fsetattr, frame, op_ret, op_errno, prebuf, postbuf); +        MDC_STACK_UNWIND (fsetattr, frame, op_ret, op_errno, prebuf, postbuf, +                          xdata);          return 0;  } @@ -1402,7 +1417,7 @@ out:  int  mdc_fsetattr (call_frame_t *frame, xlator_t *this, fd_t *fd, -              struct iatt *stbuf, int valid) +              struct iatt *stbuf, int valid, dict_t *xdata)  {          mdc_local_t  *local = NULL; @@ -1412,7 +1427,7 @@ mdc_fsetattr (call_frame_t *frame, xlator_t *this, fd_t *fd,          STACK_WIND (frame, mdc_setattr_cbk,                      FIRST_CHILD(this), FIRST_CHILD(this)->fops->fsetattr, -                    fd, stbuf, valid); +                    fd, stbuf, valid, xdata);          return 0;  } @@ -1420,7 +1435,7 @@ mdc_fsetattr (call_frame_t *frame, xlator_t *this, fd_t *fd,  int  mdc_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 *prebuf, struct iatt *postbuf, dict_t *xdata)  {          mdc_local_t  *local = NULL; @@ -1435,14 +1450,16 @@ mdc_fsync_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          mdc_inode_iatt_set (this, local->fd->inode, postbuf);  out: -        MDC_STACK_UNWIND (fsync, frame, op_ret, op_errno, prebuf, postbuf); +        MDC_STACK_UNWIND (fsync, frame, op_ret, op_errno, prebuf, postbuf, +                          xdata);          return 0;  }  int -mdc_fsync (call_frame_t *frame, xlator_t *this, fd_t *fd, int datasync) +mdc_fsync (call_frame_t *frame, xlator_t *this, fd_t *fd, int datasync, +           dict_t *xdata)  {          mdc_local_t  *local = NULL; @@ -1452,14 +1469,14 @@ mdc_fsync (call_frame_t *frame, xlator_t *this, fd_t *fd, int datasync)          STACK_WIND (frame, mdc_fsync_cbk,                      FIRST_CHILD(this), FIRST_CHILD(this)->fops->fsync, -                    fd, datasync); +                    fd, datasync, xdata);          return 0;  }  int  mdc_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)  {          mdc_local_t  *local = NULL; @@ -1474,7 +1491,7 @@ mdc_setxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          mdc_inode_xatt_update (this, local->loc.inode, local->xattr);  out: -        MDC_STACK_UNWIND (setxattr, frame, op_ret, op_errno); +        MDC_STACK_UNWIND (setxattr, frame, op_ret, op_errno, xdata);          return 0;  } @@ -1482,7 +1499,7 @@ out:  int  mdc_setxattr (call_frame_t *frame, xlator_t *this, loc_t *loc, -              dict_t *xattr, int flags) +              dict_t *xattr, int flags, dict_t *xdata)  {          mdc_local_t  *local = NULL; @@ -1493,14 +1510,14 @@ mdc_setxattr (call_frame_t *frame, xlator_t *this, loc_t *loc,          STACK_WIND (frame, mdc_setxattr_cbk,                      FIRST_CHILD(this), FIRST_CHILD(this)->fops->setxattr, -                    loc, xattr, flags); +                    loc, xattr, flags, xdata);          return 0;  }  int  mdc_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)  {          mdc_local_t  *local = NULL; @@ -1515,7 +1532,7 @@ mdc_fsetxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          mdc_inode_xatt_update (this, local->fd->inode, local->xattr);  out: -        MDC_STACK_UNWIND (fsetxattr, frame, op_ret, op_errno); +        MDC_STACK_UNWIND (fsetxattr, frame, op_ret, op_errno, xdata);          return 0;  } @@ -1523,7 +1540,7 @@ out:  int  mdc_fsetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd, -	       dict_t *xattr, int flags) +	       dict_t *xattr, int flags, dict_t *xdata)  {          mdc_local_t  *local = NULL; @@ -1534,13 +1551,14 @@ mdc_fsetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd,          STACK_WIND (frame, mdc_fsetxattr_cbk,                      FIRST_CHILD(this), FIRST_CHILD(this)->fops->fsetxattr, -                    fd, xattr, flags); +                    fd, xattr, flags, xdata);          return 0;  }  int  mdc_getxattr_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)  {          mdc_local_t  *local = NULL; @@ -1554,14 +1572,15 @@ mdc_getxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          mdc_inode_xatt_update (this, local->loc.inode, xattr);  out: -        MDC_STACK_UNWIND (getxattr, frame, op_ret, op_errno, xattr); +        MDC_STACK_UNWIND (getxattr, frame, op_ret, op_errno, xattr, xdata);          return 0;  }  int -mdc_getxattr (call_frame_t *frame, xlator_t *this, loc_t *loc, const char *key) +mdc_getxattr (call_frame_t *frame, xlator_t *this, loc_t *loc, const char *key, +              dict_t *xdata)  {          int           ret;          mdc_local_t  *local = NULL; @@ -1583,21 +1602,22 @@ mdc_getxattr (call_frame_t *frame, xlator_t *this, loc_t *loc, const char *key)  	if (!dict_get (xattr, (char *)key))  		goto uncached; -        MDC_STACK_UNWIND (getxattr, frame, 0, 0, xattr); +        MDC_STACK_UNWIND (getxattr, frame, 0, 0, xattr, xdata);          return 0;  uncached:          STACK_WIND (frame, mdc_getxattr_cbk,                      FIRST_CHILD(this), FIRST_CHILD(this)->fops->getxattr, -                    loc, key); +                    loc, key, xdata);          return 0;  }  int  mdc_fgetxattr_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)  {          mdc_local_t  *local = NULL; @@ -1611,14 +1631,15 @@ mdc_fgetxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          mdc_inode_xatt_update (this, local->fd->inode, xattr);  out: -        MDC_STACK_UNWIND (fgetxattr, frame, op_ret, op_errno, xattr); +        MDC_STACK_UNWIND (fgetxattr, frame, op_ret, op_errno, xattr, xdata);          return 0;  }  int -mdc_fgetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd, const char *key) +mdc_fgetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd, const char *key, +               dict_t *xdata)  {          int           ret;          mdc_local_t  *local = NULL; @@ -1640,21 +1661,21 @@ mdc_fgetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd, const char *key)  	if (!dict_get (xattr, (char *)key))  		goto uncached; -        MDC_STACK_UNWIND (fgetxattr, frame, 0, 0, xattr); +        MDC_STACK_UNWIND (fgetxattr, frame, 0, 0, xattr, xdata);          return 0;  uncached:          STACK_WIND (frame, mdc_fgetxattr_cbk,                      FIRST_CHILD(this), FIRST_CHILD(this)->fops->fgetxattr, -                    fd, key); +                    fd, key, xdata);          return 0;  }  int  mdc_readdirp_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -		  int op_ret, int op_errno, gf_dirent_t *entries) +		  int op_ret, int op_errno, gf_dirent_t *entries, dict_t *xdata)  {          gf_dirent_t *entry      = NULL; @@ -1669,39 +1690,43 @@ mdc_readdirp_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          }  unwind: -	STACK_UNWIND_STRICT (readdirp, frame, op_ret, op_errno, entries); +	STACK_UNWIND_STRICT (readdirp, frame, op_ret, op_errno, entries, xdata);  	return 0;  }  int  mdc_readdirp (call_frame_t *frame, xlator_t *this, fd_t *fd, -	      size_t size, off_t offset, dict_t *xattr_req) +	      size_t size, off_t offset, dict_t *xdata)  {  	STACK_WIND (frame, mdc_readdirp_cbk,  		    FIRST_CHILD (this), FIRST_CHILD (this)->fops->readdirp, -		    fd, size, offset, xattr_req); +		    fd, size, offset, xdata);  	return 0;  }  int  mdc_readdir (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)  { -	dict_t *xattr_req = NULL; +        int need_unref = 0; -	xattr_req = dict_new (); +	if (!xdata) { +                xdata = dict_new (); +                need_unref = 1; +        } -	if (xattr_req) { -		mdc_load_reqs (this, xattr_req); -	} +        if (xdata) +		mdc_load_reqs (this, xdata);  	STACK_WIND (frame, mdc_readdirp_cbk,  		    FIRST_CHILD (this), FIRST_CHILD (this)->fops->readdirp, -		    fd, size, offset, xattr_req); +		    fd, size, offset, xdata); + +        if (need_unref && xdata) +                dict_unref (xdata); -        dict_unref (xattr_req);  	return 0;  } diff --git a/xlators/performance/quick-read/src/quick-read.c b/xlators/performance/quick-read/src/quick-read.c index 56f665f675b..fed81446029 100644 --- a/xlators/performance/quick-read/src/quick-read.c +++ b/xlators/performance/quick-read/src/quick-read.c @@ -48,7 +48,7 @@ out:  int32_t  qr_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);  static void @@ -301,7 +301,7 @@ out:  int32_t  qr_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 *dict, struct iatt *postparent) +               struct iatt *buf, dict_t *xdata, struct iatt *postparent)  {          data_t           *content  = NULL;          qr_inode_t       *qr_inode = NULL; @@ -314,7 +314,7 @@ qr_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          GF_ASSERT (frame); -        if ((op_ret == -1) || (dict == NULL)) { +        if ((op_ret == -1) || (xdata == NULL)) {                  goto out;          } @@ -349,7 +349,7 @@ qr_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  goto out;          } -        content = dict_get (dict, GF_CONTENT_KEY); +        content = dict_get (xdata, GF_CONTENT_KEY);          if (content == NULL) {                  goto out;          } @@ -397,7 +397,7 @@ qr_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          table->cache_used -= qr_inode->stbuf.ia_size;                  } -                qr_inode->xattr = dict_ref (dict); +                qr_inode->xattr = dict_ref (xdata);                  qr_inode->stbuf = *buf;                  table->cache_used += buf->ia_size; @@ -414,7 +414,7 @@ out:           * FIXME: content size in dict can be greater than the size application           * requested for. Applications need to be careful till this is fixed.           */ -        QR_STACK_UNWIND (lookup, frame, op_ret, op_errno, inode, buf, dict, +        QR_STACK_UNWIND (lookup, frame, op_ret, op_errno, inode, buf, xdata,                           postparent);          return 0; @@ -422,7 +422,8 @@ out:  int32_t -qr_lookup (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *xattr_req) +qr_lookup (call_frame_t *frame, xlator_t *this, loc_t *loc, +           dict_t *xdata)  {          qr_conf_t        *conf           = NULL;          dict_t           *new_req_dict   = NULL; @@ -473,9 +474,9 @@ qr_lookup (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *xattr_req)          }          UNLOCK (&table->lock); -        if ((xattr_req == NULL) && (conf->max_file_size > 0)) { -                new_req_dict = xattr_req = dict_new (); -                if (xattr_req == NULL) { +        if ((xdata == NULL) && (conf->max_file_size > 0)) { +                new_req_dict = xdata = dict_new (); +                if (xdata == NULL) {                          op_ret = -1;                          op_errno = ENOMEM;                          goto unwind; @@ -483,8 +484,8 @@ qr_lookup (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *xattr_req)          }          if (!cached) { -                if (xattr_req) { -                        content = dict_get (xattr_req, GF_CONTENT_KEY); +                if (xdata) { +                        content = dict_get (xdata, GF_CONTENT_KEY);                          if (content) {                                  requested_size = data_to_uint64 (content);                          } @@ -495,7 +496,7 @@ qr_lookup (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *xattr_req)                          size = (conf->max_file_size > requested_size) ?                                  conf->max_file_size : requested_size; -                        op_ret = dict_set (xattr_req, GF_CONTENT_KEY, +                        op_ret = dict_set (xdata, GF_CONTENT_KEY,                                             data_from_uint64 (size));                          if (op_ret < 0) {                                  op_ret = -1; @@ -510,7 +511,7 @@ qr_lookup (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *xattr_req)          }          STACK_WIND (frame, qr_lookup_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->lookup, loc, xattr_req); +                    FIRST_CHILD(this)->fops->lookup, loc, xdata);          if (new_req_dict) {                  dict_unref (new_req_dict); @@ -519,8 +520,8 @@ qr_lookup (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *xattr_req)          return 0;  unwind: -        QR_STACK_UNWIND (lookup, frame, op_ret, op_errno, NULL, NULL, NULL, -                         NULL); +        QR_STACK_UNWIND (lookup, frame, op_ret, op_errno, NULL, NULL, +                         NULL, NULL);          if (new_req_dict) {                  dict_unref (new_req_dict); @@ -532,7 +533,7 @@ unwind:  int32_t  qr_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)  {          uint64_t          value     = 0;          int32_t           ret       = -1; @@ -618,7 +619,7 @@ qr_open_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret,          }  out:          if (is_open) { -                QR_STACK_UNWIND (open, frame, op_ret, op_errno, fd); +                QR_STACK_UNWIND (open, frame, op_ret, op_errno, fd, xdata);          } else {                  STACK_DESTROY (frame->root);          } @@ -629,7 +630,7 @@ out:  int32_t  qr_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)  {          qr_inode_t       *qr_inode       = NULL;          int32_t           ret            = -1; @@ -668,7 +669,6 @@ qr_open (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t flags,          }          qr_fd_ctx->flags = flags; -        qr_fd_ctx->wbflags = wbflags;          ret = fd_ctx_set (fd, this, (uint64_t)(long)qr_fd_ctx);          if (ret == -1) { @@ -717,8 +717,7 @@ qr_open (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t flags,          if (!content_cached || ((flags & O_ACCMODE) == O_WRONLY)              || ((flags & O_TRUNC) == O_TRUNC) -            || ((flags & O_DIRECT) == O_DIRECT) -            || ((wbflags & GF_OPEN_NOWB) != 0)) { +            || ((flags & O_DIRECT) == O_DIRECT)) {                  LOCK (&qr_fd_ctx->lock);                  {                          /* @@ -727,8 +726,7 @@ qr_open (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t flags,                           */                          qr_fd_ctx->open_in_transit = 1; -                        if (((flags & O_DIRECT) == O_DIRECT) -                            || ((wbflags & GF_OPEN_NOWB)) != 0) { +                        if ((flags & O_DIRECT) == O_DIRECT) {                                  qr_fd_ctx->disabled = 1;                          }                  } @@ -745,12 +743,13 @@ unwind:                  qr_fd_ctx_free (tmp_fd_ctx);          } -        QR_STACK_UNWIND (open, frame, op_ret, op_errno, fd); +        QR_STACK_UNWIND (open, frame, op_ret, op_errno, fd, NULL);          return 0;  wind:          STACK_WIND (frame, qr_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;  } @@ -791,7 +790,8 @@ out:  static int32_t  qr_validate_cache_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)  {          qr_inode_t       *qr_inode  = NULL;          qr_local_t       *local     = NULL; @@ -858,13 +858,15 @@ qr_validate_cache_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  unwind:          /* this is actually unwind of readv */ -        QR_STACK_UNWIND (readv, frame, op_ret, op_errno, NULL, -1, NULL, NULL); +        QR_STACK_UNWIND (readv, frame, op_ret, op_errno, NULL, -1, NULL, NULL, +                         NULL);          return 0;  }  int32_t -qr_validate_cache_helper (call_frame_t *frame, xlator_t *this, fd_t *fd) +qr_validate_cache_helper (call_frame_t *frame, xlator_t *this, fd_t *fd, +                          dict_t *xdata)  {          qr_local_t *local  = NULL;          int32_t     op_ret = -1, op_errno = -1; @@ -884,10 +886,10 @@ qr_validate_cache_helper (call_frame_t *frame, xlator_t *this, fd_t *fd)  out:          if (op_ret == -1) {                  qr_validate_cache_cbk (frame, NULL, this, op_ret, op_errno, -                                       NULL); +                                       NULL, NULL);          } else {                  STACK_WIND (frame, qr_validate_cache_cbk, FIRST_CHILD (this), -                            FIRST_CHILD (this)->fops->fstat, fd); +                            FIRST_CHILD (this)->fops->fstat, fd, xdata);          }          return 0; @@ -949,7 +951,7 @@ qr_validate_cache (call_frame_t *frame, xlator_t *this, fd_t *fd,                          } else {                                  validate_stub = fop_fstat_stub (frame,                                                                  qr_validate_cache_helper, -                                                                fd); +                                                                fd, NULL);                                  if (validate_stub == NULL) {                                          ret = -1;                                          if (need_open) { @@ -990,12 +992,12 @@ qr_validate_cache (call_frame_t *frame, xlator_t *this, fd_t *fd,                  STACK_WIND (open_frame, qr_open_cbk, FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->open, -                            &loc, flags, fd, qr_fd_ctx->wbflags); +                            &loc, flags, fd, NULL);                  qr_loc_wipe (&loc);          } else if (can_wind) {                  STACK_WIND (frame, qr_validate_cache_cbk, FIRST_CHILD (this), -                            FIRST_CHILD (this)->fops->fstat, fd); +                            FIRST_CHILD (this)->fops->fstat, fd, NULL);          }          ret = 0; @@ -1005,7 +1007,7 @@ out:                          call_stub_destroy (stub);                  } -                qr_validate_cache_cbk (frame, NULL, this, -1, errno, NULL); +                qr_validate_cache_cbk (frame, NULL, this, -1, errno, NULL, NULL);          }          return ret;  } @@ -1014,19 +1016,19 @@ out:  int32_t  qr_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) +              struct iatt *stbuf, struct iobref *iobref, dict_t *xdata)  {          GF_ASSERT (frame);          QR_STACK_UNWIND (readv, frame, op_ret, op_errno, vector, count, -                         stbuf, iobref); +                         stbuf, iobref, xdata);          return 0;  }  int32_t  qr_readv_helper (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)  {          qr_local_t  *local    = NULL;          int32_t      op_errno = EINVAL, ret = 0; @@ -1055,18 +1057,19 @@ qr_readv_helper (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size,          }          STACK_WIND (frame, qr_readv_cbk, FIRST_CHILD (this), -                    FIRST_CHILD (this)->fops->readv, fd, size, offset, flags); +                    FIRST_CHILD (this)->fops->readv, fd, size, offset, flags, +                    xdata);          return 0;  unwind: -        QR_STACK_UNWIND (readv, frame, -1, op_errno, NULL, 0, NULL, NULL); +        QR_STACK_UNWIND (readv, frame, -1, op_errno, NULL, 0, NULL, NULL, NULL);          return 0;  }  int32_t  qr_readv (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size, -          off_t offset, uint32_t read_flags) +          off_t offset, uint32_t read_flags, dict_t *xdata)  {          qr_inode_t        *qr_inode       = NULL;          int32_t            ret            = -1, op_ret = -1, op_errno = -1; @@ -1216,11 +1219,11 @@ unlock:  out:          if (content_cached || need_unwind) {                  QR_STACK_UNWIND (readv, frame, op_ret, op_errno, vector, -                                 count, &stbuf, iobref); +                                 count, &stbuf, iobref, NULL);          } else if (need_validation) {                  stub = fop_readv_stub (frame, qr_readv, fd, size, offset, -                                       read_flags); +                                       read_flags, xdata);                  if (stub == NULL) {                          op_ret = -1;                          op_errno = ENOMEM; @@ -1259,7 +1262,7 @@ out:                                                                 qr_readv_helper,                                                                 fd, size,                                                                 offset, -                                                               read_flags); +                                                               read_flags, xdata);                                          if (stub == NULL) {                                                  op_ret = -1;                                                  op_errno = ENOMEM; @@ -1299,13 +1302,13 @@ out:                          STACK_WIND (open_frame, qr_open_cbk, FIRST_CHILD(this),                                      FIRST_CHILD(this)->fops->open, -                                    &loc, flags, fd, qr_fd_ctx->wbflags); +                                    &loc, flags, fd, NULL);                          qr_loc_wipe (&loc);                  } else if (can_wind) {                          STACK_WIND (frame, qr_readv_cbk, FIRST_CHILD (this),                                      FIRST_CHILD (this)->fops->readv, fd, size, -                                    offset, read_flags); +                                    offset, read_flags, xdata);                  }          } @@ -1325,10 +1328,11 @@ ret:  int32_t  qr_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)  {          GF_ASSERT (frame); -        QR_STACK_UNWIND (writev, frame, op_ret, op_errno, prebuf, postbuf); +        QR_STACK_UNWIND (writev, frame, op_ret, op_errno, prebuf, postbuf, +                         xdata);          return 0;  } @@ -1336,7 +1340,7 @@ qr_writev_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int32_t  qr_writev_helper (call_frame_t *frame, xlator_t *this, fd_t *fd,                    struct iovec *vector, int32_t count, off_t off, -                  uint32_t flags, struct iobref *iobref) +                  uint32_t flags, struct iobref *iobref, dict_t *xdata)  {          qr_local_t  *local    = NULL;          qr_fd_ctx_t *fdctx    = NULL; @@ -1367,18 +1371,19 @@ qr_writev_helper (call_frame_t *frame, xlator_t *this, fd_t *fd,          STACK_WIND (frame, qr_writev_cbk, FIRST_CHILD (this),                      FIRST_CHILD (this)->fops->writev, fd, vector, count, off, -                    flags, iobref); +                    flags, iobref, xdata);          return 0;  unwind: -        QR_STACK_UNWIND (writev, frame, -1, op_errno, NULL, NULL); +        QR_STACK_UNWIND (writev, frame, -1, op_errno, NULL, NULL, NULL);          return 0;  }  int32_t  qr_writev (call_frame_t *frame, xlator_t *this, fd_t *fd, struct iovec *vector, -           int32_t count, off_t off, uint32_t wr_flags, struct iobref *iobref) +           int32_t count, off_t off, uint32_t wr_flags, struct iobref *iobref, +           dict_t *xdata)  {          uint64_t          value      = 0;          int               flags      = 0; @@ -1441,7 +1446,7 @@ qr_writev (call_frame_t *frame, xlator_t *this, fd_t *fd, struct iovec *vector,                                  stub = fop_writev_stub (frame, qr_writev_helper,                                                          fd, vector, count, off, -                                                        wr_flags, iobref); +                                                        wr_flags, iobref, xdata);                                  if (stub == NULL) {                                          op_ret = -1;                                          op_errno = ENOMEM; @@ -1461,11 +1466,11 @@ qr_writev (call_frame_t *frame, xlator_t *this, fd_t *fd, struct iovec *vector,          }          if (need_unwind) { -                QR_STACK_UNWIND (writev, frame, op_ret, op_errno, NULL, NULL); +                QR_STACK_UNWIND (writev, frame, op_ret, op_errno, NULL, NULL, NULL);          } else if (can_wind) {                  STACK_WIND (frame, qr_writev_cbk, FIRST_CHILD (this),                              FIRST_CHILD (this)->fops->writev, fd, vector, count, -                            off, wr_flags, iobref); +                            off, wr_flags, iobref, xdata);          } else if (need_open) {                  op_ret = qr_loc_fill (&loc, fd->inode, path);                  if (op_ret == -1) { @@ -1482,7 +1487,7 @@ qr_writev (call_frame_t *frame, xlator_t *this, fd_t *fd, struct iovec *vector,                  STACK_WIND (open_frame, qr_open_cbk, FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->open, &loc, flags, fd, -                            qr_fd_ctx->wbflags); +                            NULL);                  qr_loc_wipe (&loc);          } @@ -1494,15 +1499,15 @@ ret:  int32_t  qr_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_errno, struct iatt *buf, dict_t *xdata)  { -        QR_STACK_UNWIND (fstat, frame, op_ret, op_errno, buf); +        QR_STACK_UNWIND (fstat, frame, op_ret, op_errno, buf, xdata);          return 0;  }  int32_t -qr_fstat_helper (call_frame_t *frame, xlator_t *this, fd_t *fd) +qr_fstat_helper (call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *xdata)  {          qr_local_t  *local    = NULL;          qr_fd_ctx_t *fdctx    = NULL; @@ -1532,17 +1537,17 @@ qr_fstat_helper (call_frame_t *frame, xlator_t *this, fd_t *fd)          }          STACK_WIND (frame, qr_fstat_cbk, FIRST_CHILD (this), -                    FIRST_CHILD (this)->fops->fstat, fd); +                    FIRST_CHILD (this)->fops->fstat, fd, xdata);          return 0;  unwind: -        QR_STACK_UNWIND (fstat, frame, -1, op_errno, NULL); +        QR_STACK_UNWIND (fstat, frame, -1, op_errno, NULL, NULL);          return 0;  }  int32_t -qr_fstat (call_frame_t *frame, xlator_t *this, fd_t *fd) +qr_fstat (call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *xdata)  {          qr_fd_ctx_t  *qr_fd_ctx  = NULL;          char          need_open  = 0, can_wind = 0, need_unwind = 0; @@ -1593,7 +1598,7 @@ qr_fstat (call_frame_t *frame, xlator_t *this, fd_t *fd)                                  }                                  stub = fop_fstat_stub (frame, qr_fstat_helper, -                                                       fd); +                                                       fd, xdata);                                  if (stub == NULL) {                                          op_ret = -1;                                          op_errno = ENOMEM; @@ -1614,10 +1619,10 @@ qr_fstat (call_frame_t *frame, xlator_t *this, fd_t *fd)  unwind:          if (need_unwind) { -                QR_STACK_UNWIND (fstat, frame, op_ret, op_errno, NULL); +                QR_STACK_UNWIND (fstat, frame, op_ret, op_errno, NULL, NULL);          } else if (can_wind) {                  STACK_WIND (frame, qr_fstat_cbk, FIRST_CHILD (this), -                            FIRST_CHILD (this)->fops->fstat, fd); +                            FIRST_CHILD (this)->fops->fstat, fd, xdata);          } else if (need_open) {                  op_ret = qr_loc_fill (&loc, fd->inode, path);                  if (op_ret == -1) { @@ -1634,7 +1639,7 @@ unwind:                  STACK_WIND (open_frame, qr_open_cbk, FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->open, &loc, flags, fd, -                            qr_fd_ctx->wbflags); +                            NULL);                  qr_loc_wipe (&loc);          } @@ -1647,17 +1652,18 @@ ret:  int32_t  qr_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)  {          GF_ASSERT (frame); -        QR_STACK_UNWIND (fsetattr, frame, op_ret, op_errno, preop, postop); +        QR_STACK_UNWIND (fsetattr, frame, op_ret, op_errno, preop, postop, +                         xdata);          return 0;  }  int32_t  qr_fsetattr_helper (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)  {          qr_local_t  *local    = NULL;          qr_fd_ctx_t *fdctx    = NULL; @@ -1689,18 +1695,18 @@ qr_fsetattr_helper (call_frame_t *frame, xlator_t *this, fd_t *fd,          STACK_WIND (frame, qr_fsetattr_cbk, FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->fsetattr, fd, stbuf, -                    valid); +                    valid, xdata);          return 0;  unwind: -        QR_STACK_UNWIND (fsetattr, frame, -1, op_errno, NULL, NULL); +        QR_STACK_UNWIND (fsetattr, frame, -1, op_errno, NULL, NULL, NULL);          return 0;  }  int32_t  qr_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)  {          uint64_t      value      = 0;          int           flags      = 0; @@ -1751,7 +1757,7 @@ qr_fsetattr (call_frame_t *frame, xlator_t *this, fd_t *fd,                                  stub = fop_fsetattr_stub (frame,                                                            qr_fsetattr_helper, -                                                          fd, stbuf, valid); +                                                          fd, stbuf, valid, xdata);                                  if (stub == NULL) {                                          op_ret = -1;                                          op_errno = ENOMEM; @@ -1772,11 +1778,12 @@ qr_fsetattr (call_frame_t *frame, xlator_t *this, fd_t *fd,  out:          if (need_unwind) { -                QR_STACK_UNWIND (fsetattr, frame, op_ret, op_errno, NULL, NULL); +                QR_STACK_UNWIND (fsetattr, frame, op_ret, op_errno, NULL, NULL, +                                 NULL);          } else if (can_wind) {                  STACK_WIND (frame, qr_fsetattr_cbk, FIRST_CHILD (this),                              FIRST_CHILD (this)->fops->fsetattr, fd, stbuf, -                            valid); +                            valid, xdata);          } else if (need_open) {                  op_ret = qr_loc_fill (&loc, fd->inode, path);                  if (op_ret == -1) { @@ -1793,7 +1800,7 @@ out:                  STACK_WIND (open_frame, qr_open_cbk, FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->open, &loc, flags, fd, -                            qr_fd_ctx->wbflags); +                            NULL);                  qr_loc_wipe (&loc);          } @@ -1805,17 +1812,17 @@ ret:  int32_t  qr_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)  {          GF_ASSERT (frame); -        QR_STACK_UNWIND (fsetxattr, frame, op_ret, op_errno); +        QR_STACK_UNWIND (fsetxattr, frame, op_ret, op_errno, xdata);          return 0;  }  int32_t  qr_fsetxattr_helper (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)  {          qr_local_t  *local    = NULL;          qr_fd_ctx_t *fdctx    = NULL; @@ -1846,18 +1853,19 @@ qr_fsetxattr_helper (call_frame_t *frame, xlator_t *this, fd_t *fd,          }          STACK_WIND (frame, qr_fsetxattr_cbk, FIRST_CHILD (this), -                    FIRST_CHILD (this)->fops->fsetxattr, fd, dict, flags); +                    FIRST_CHILD (this)->fops->fsetxattr, fd, dict, flags, +                    xdata);          return 0;  unwind: -        QR_STACK_UNWIND (fsetxattr, frame, -1, op_errno); +        QR_STACK_UNWIND (fsetxattr, frame, -1, op_errno, NULL);          return 0;  }  int32_t  qr_fsetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *dict, -              int32_t flags) +              int32_t flags, dict_t *xdata)  {          uint64_t      value      = 0;          call_stub_t  *stub       = NULL; @@ -1909,7 +1917,7 @@ qr_fsetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *dict,                                  stub = fop_fsetxattr_stub (frame,                                                             qr_fsetxattr_helper, -                                                           fd, dict, flags); +                                                           fd, dict, flags, xdata);                                  if (stub == NULL) {                                          op_ret = -1;                                          op_errno = ENOMEM; @@ -1930,11 +1938,11 @@ qr_fsetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *dict,  out:          if (need_unwind) { -                QR_STACK_UNWIND (fsetxattr, frame, op_ret, op_errno); +                QR_STACK_UNWIND (fsetxattr, frame, op_ret, op_errno, NULL);          } else if (can_wind) {                  STACK_WIND (frame, qr_fsetxattr_cbk, FIRST_CHILD (this),                              FIRST_CHILD (this)->fops->fsetxattr, fd, dict, -                            flags); +                            flags, xdata);          } else if (need_open) {                  op_ret = qr_loc_fill (&loc, fd->inode, path);                  if (op_ret == -1) { @@ -1951,7 +1959,7 @@ out:                  STACK_WIND (open_frame, qr_open_cbk, FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->open, &loc, open_flags, -                            fd, qr_fd_ctx->wbflags); +                            fd, NULL);                  qr_loc_wipe (&loc);          } @@ -1963,17 +1971,17 @@ ret:  int32_t  qr_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)  {          GF_ASSERT (frame); -        QR_STACK_UNWIND (fgetxattr, frame, op_ret, op_errno, dict); +        QR_STACK_UNWIND (fgetxattr, frame, op_ret, op_errno, dict, xdata);          return 0;  }  int32_t  qr_fgetxattr_helper (call_frame_t *frame, xlator_t *this, fd_t *fd, -                     const char *name) +                     const char *name, dict_t *xdata)  {          qr_local_t  *local    = NULL;          qr_fd_ctx_t *fdctx    = NULL; @@ -2004,17 +2012,18 @@ qr_fgetxattr_helper (call_frame_t *frame, xlator_t *this, fd_t *fd,          }          STACK_WIND (frame, qr_fgetxattr_cbk, FIRST_CHILD (this), -                    FIRST_CHILD (this)->fops->fgetxattr, fd, name); +                    FIRST_CHILD (this)->fops->fgetxattr, fd, name, xdata);          return 0;  unwind: -        QR_STACK_UNWIND (fgetxattr, frame, -1, op_errno, NULL); +        QR_STACK_UNWIND (fgetxattr, frame, -1, op_errno, NULL, NULL);          return 0;  }  int32_t -qr_fgetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd, const char *name) +qr_fgetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd, const char *name, +              dict_t *xdata)  {          int           flags      = 0;          uint64_t      value      = 0; @@ -2071,7 +2080,7 @@ qr_fgetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd, const char *name)                                  stub = fop_fgetxattr_stub (frame,                                                             qr_fgetxattr_helper, -                                                           fd, name); +                                                           fd, name, xdata);                                  if (stub == NULL) {                                          op_ret = -1;                                          op_errno = ENOMEM; @@ -2092,10 +2101,10 @@ qr_fgetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd, const char *name)  out:          if (need_unwind) { -                QR_STACK_UNWIND (open, frame, op_ret, op_errno, NULL); +                QR_STACK_UNWIND (open, frame, op_ret, op_errno, NULL, NULL);          } else if (can_wind) {                  STACK_WIND (frame, qr_fgetxattr_cbk, FIRST_CHILD (this), -                            FIRST_CHILD (this)->fops->fgetxattr, fd, name); +                            FIRST_CHILD (this)->fops->fgetxattr, fd, name, xdata);          } else if (need_open) {                  op_ret = qr_loc_fill (&loc, fd->inode, path);                  if (op_ret == -1) { @@ -2112,7 +2121,7 @@ out:                  STACK_WIND (open_frame, qr_open_cbk, FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->open, &loc, flags, fd, -                            qr_fd_ctx->wbflags); +                            NULL);                  qr_loc_wipe (&loc);          } @@ -2124,16 +2133,16 @@ ret:  int32_t  qr_flush_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret, -              int32_t op_errno) +              int32_t op_errno, dict_t *xdata)  {          GF_ASSERT (frame); -        QR_STACK_UNWIND (flush, frame, op_ret, op_errno); +        QR_STACK_UNWIND (flush, frame, op_ret, op_errno, xdata);          return 0;  }  int32_t -qr_flush_helper (call_frame_t *frame, xlator_t *this, fd_t *fd) +qr_flush_helper (call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *xdata)  {          qr_local_t  *local    = NULL;          qr_fd_ctx_t *fdctx    = NULL; @@ -2163,17 +2172,17 @@ qr_flush_helper (call_frame_t *frame, xlator_t *this, fd_t *fd)          }          STACK_WIND (frame, qr_flush_cbk, FIRST_CHILD (this), -                    FIRST_CHILD (this)->fops->flush, fd); +                    FIRST_CHILD (this)->fops->flush, fd, xdata);          return 0;  unwind: -        QR_STACK_UNWIND (flush, frame, -1, op_errno); +        QR_STACK_UNWIND (flush, frame, -1, op_errno, NULL);          return 0;  }  int32_t -qr_flush (call_frame_t *frame, xlator_t *this, fd_t *fd) +qr_flush (call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *xdata)  {          uint64_t     value     = 0;          call_stub_t *stub      = NULL; @@ -2211,7 +2220,7 @@ qr_flush (call_frame_t *frame, xlator_t *this, fd_t *fd)                                  }                                  stub = fop_flush_stub (frame, qr_flush_helper, -                                                       fd); +                                                       fd, xdata);                                  if (stub == NULL) {                                          op_ret = -1;                                          op_errno = ENOMEM; @@ -2235,10 +2244,10 @@ qr_flush (call_frame_t *frame, xlator_t *this, fd_t *fd)  out:          if (need_unwind) { -                QR_STACK_UNWIND (flush, frame, op_ret, op_errno); +                QR_STACK_UNWIND (flush, frame, op_ret, op_errno, NULL);          } else if (can_wind) {                  STACK_WIND (frame, qr_flush_cbk, FIRST_CHILD (this), -                            FIRST_CHILD (this)->fops->flush, fd); +                            FIRST_CHILD (this)->fops->flush, fd, xdata);          }          return 0; @@ -2247,10 +2256,10 @@ out:  int32_t  qr_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)  {          GF_ASSERT (frame); -        QR_STACK_UNWIND (fentrylk, frame, op_ret, op_errno); +        QR_STACK_UNWIND (fentrylk, frame, op_ret, op_errno, xdata);          return 0;  } @@ -2258,7 +2267,7 @@ qr_fentrylk_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int32_t  qr_fentrylk_helper (call_frame_t *frame, xlator_t *this, const char *volume,                      fd_t *fd, const char *basename, entrylk_cmd cmd, -                    entrylk_type type) +                    entrylk_type type, dict_t *xdata)  {          qr_local_t  *local    = NULL;          qr_fd_ctx_t *fdctx    = NULL; @@ -2290,18 +2299,19 @@ qr_fentrylk_helper (call_frame_t *frame, xlator_t *this, const char *volume,          STACK_WIND(frame, qr_fentrylk_cbk, FIRST_CHILD(this),                     FIRST_CHILD(this)->fops->fentrylk, volume, fd, basename, -                   cmd, type); +                   cmd, type, xdata);          return 0;  unwind: -        QR_STACK_UNWIND (fentrylk, frame, -1, op_errno); +        QR_STACK_UNWIND (fentrylk, frame, -1, op_errno, NULL);          return 0;  }  int32_t  qr_fentrylk (call_frame_t *frame, xlator_t *this, const char *volume, fd_t *fd, -             const char *basename, entrylk_cmd cmd, entrylk_type type) +             const char *basename, entrylk_cmd cmd, entrylk_type type, +             dict_t *xdata)  {          int           flags      = 0;          uint64_t      value      = 0; @@ -2353,7 +2363,7 @@ qr_fentrylk (call_frame_t *frame, xlator_t *this, const char *volume, fd_t *fd,                                  stub = fop_fentrylk_stub (frame,                                                            qr_fentrylk_helper,                                                            volume, fd, basename, -                                                          cmd, type); +                                                          cmd, type, xdata);                                  if (stub == NULL) {                                          op_ret = -1;                                          op_errno = ENOMEM; @@ -2374,11 +2384,11 @@ qr_fentrylk (call_frame_t *frame, xlator_t *this, const char *volume, fd_t *fd,  out:          if (need_unwind) { -                QR_STACK_UNWIND (fentrylk, frame, op_ret, op_errno); +                QR_STACK_UNWIND (fentrylk, frame, op_ret, op_errno, NULL);          } else if (can_wind) {                  STACK_WIND (frame, qr_fentrylk_cbk, FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->fentrylk, volume, fd, -                            basename, cmd, type); +                            basename, cmd, type, xdata);          } else if (need_open) {                  op_ret = qr_loc_fill (&loc, fd->inode, path);                  if (op_ret == -1) { @@ -2395,7 +2405,7 @@ out:                  STACK_WIND (open_frame, qr_open_cbk, FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->open, &loc, flags, fd, -                            qr_fd_ctx->wbflags); +                            NULL);                  qr_loc_wipe (&loc);          } @@ -2407,18 +2417,17 @@ ret:  int32_t  qr_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)  {          GF_ASSERT (frame); -        QR_STACK_UNWIND (finodelk, frame, op_ret, op_errno); +        QR_STACK_UNWIND (finodelk, frame, op_ret, op_errno, xdata);          return 0;  }  int32_t  qr_finodelk_helper (call_frame_t *frame, xlator_t *this, const char *volume, -                    fd_t *fd, int32_t cmd, struct gf_flock *lock) +                    fd_t *fd, int32_t cmd, struct gf_flock *lock, dict_t *xdata)  {          qr_local_t  *local    = NULL;          qr_fd_ctx_t *fdctx    = NULL; @@ -2449,18 +2458,19 @@ qr_finodelk_helper (call_frame_t *frame, xlator_t *this, const char *volume,          }          STACK_WIND (frame, qr_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;  unwind: -        QR_STACK_UNWIND (finodelk, frame, -1, op_errno); +        QR_STACK_UNWIND (finodelk, frame, -1, op_errno, NULL);          return 0;  }  int32_t  qr_finodelk (call_frame_t *frame, xlator_t *this, const char *volume, fd_t *fd, -             int32_t cmd, struct gf_flock *lock) +             int32_t cmd, struct gf_flock *lock, dict_t *xdata)  {          int           flags      = 0;          uint64_t      value      = 0; @@ -2512,7 +2522,7 @@ qr_finodelk (call_frame_t *frame, xlator_t *this, const char *volume, fd_t *fd,                                  stub = fop_finodelk_stub (frame,                                                            qr_finodelk_helper,                                                            volume, fd, cmd, -                                                          lock); +                                                          lock, xdata);                                  if (stub == NULL) {                                          op_ret = -1;                                          op_errno = ENOMEM; @@ -2533,11 +2543,11 @@ qr_finodelk (call_frame_t *frame, xlator_t *this, const char *volume, fd_t *fd,  out:          if (need_unwind) { -                QR_STACK_UNWIND (finodelk, frame, op_ret, op_errno); +                QR_STACK_UNWIND (finodelk, frame, op_ret, op_errno, NULL);          } else if (can_wind) {                  STACK_WIND (frame, qr_finodelk_cbk, FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->finodelk, volume, fd, -                            cmd, lock); +                            cmd, lock, xdata);          } else if (need_open) {                  op_ret = qr_loc_fill (&loc, fd->inode, path);                  if (op_ret == -1) { @@ -2554,7 +2564,7 @@ out:                  STACK_WIND (open_frame, qr_open_cbk, FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->open, &loc, flags, fd, -                            qr_fd_ctx->wbflags); +                            NULL);                  qr_loc_wipe (&loc);          } @@ -2566,16 +2576,18 @@ ret:  int32_t  qr_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) +              int32_t op_errno, struct iatt *prebuf, struct iatt *postbuf, +              dict_t *xdata)  {          GF_ASSERT (frame); -        QR_STACK_UNWIND (fsync, frame, op_ret, op_errno, prebuf, postbuf); +        QR_STACK_UNWIND (fsync, frame, op_ret, op_errno, prebuf, postbuf, xdata);          return 0;  }  int32_t -qr_fsync_helper (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t flags) +qr_fsync_helper (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t flags, +                 dict_t *xdata)  {          qr_local_t  *local    = NULL;          qr_fd_ctx_t *fdctx    = NULL; @@ -2605,17 +2617,18 @@ qr_fsync_helper (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t flags)          }          STACK_WIND (frame, qr_fsync_cbk, FIRST_CHILD (this), -                    FIRST_CHILD(this)->fops->fsync, fd, flags); +                    FIRST_CHILD(this)->fops->fsync, fd, flags, xdata);          return 0;  unwind: -        QR_STACK_UNWIND (fsync, frame, -1, op_errno, NULL, NULL); +        QR_STACK_UNWIND (fsync, frame, -1, op_errno, NULL, NULL, NULL);          return 0;  }  int32_t -qr_fsync (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t flags) +qr_fsync (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t flags, +          dict_t *xdata)  {          uint64_t      value      = 0;          call_stub_t  *stub       = NULL; @@ -2665,7 +2678,7 @@ qr_fsync (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t flags)                                  }                                  stub = fop_fsync_stub (frame, qr_fsync_helper, -                                                       fd, flags); +                                                       fd, flags, xdata);                                  if (stub == NULL) {                                          op_ret = -1;                                          op_errno = ENOMEM; @@ -2686,10 +2699,10 @@ qr_fsync (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t flags)  out:          if (need_unwind) { -                QR_STACK_UNWIND (fsync, frame, op_ret, op_errno, NULL, NULL); +                QR_STACK_UNWIND (fsync, frame, op_ret, op_errno, NULL, NULL, NULL);          } else if (can_wind) {                  STACK_WIND (frame, qr_fsync_cbk, FIRST_CHILD (this), -                            FIRST_CHILD (this)->fops->fsync, fd, flags); +                            FIRST_CHILD (this)->fops->fsync, fd, flags, xdata);          } else if (need_open) {                  op_ret = qr_loc_fill (&loc, fd->inode, path);                  if (op_ret == -1) { @@ -2706,7 +2719,7 @@ out:                  STACK_WIND (open_frame, qr_open_cbk, FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->open, &loc, open_flags, -                            fd, qr_fd_ctx->wbflags); +                            fd, NULL);                  qr_loc_wipe (&loc);          } @@ -2719,7 +2732,7 @@ ret:  int32_t  qr_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)  {          int32_t           ret      = 0;          uint64_t          value    = 0; @@ -2776,14 +2789,14 @@ qr_ftruncate_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  out:          QR_STACK_UNWIND (ftruncate, frame, op_ret, op_errno, prebuf, -                         postbuf); +                         postbuf, xdata);          return 0;  }  int32_t  qr_ftruncate_helper (call_frame_t *frame, xlator_t *this, fd_t *fd, -                     off_t offset) +                     off_t offset, dict_t *xdata)  {          qr_local_t  *local    = NULL;          qr_fd_ctx_t *fdctx    = NULL; @@ -2814,17 +2827,18 @@ qr_ftruncate_helper (call_frame_t *frame, xlator_t *this, fd_t *fd,          }          STACK_WIND (frame, qr_ftruncate_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->ftruncate, fd, offset); +                    FIRST_CHILD(this)->fops->ftruncate, fd, offset, xdata);          return 0;  unwind: -        QR_STACK_UNWIND (ftruncate, frame, -1, op_errno, NULL, NULL); +        QR_STACK_UNWIND (ftruncate, frame, -1, op_errno, NULL, NULL, NULL);          return 0;  }  int32_t -qr_ftruncate (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset) +qr_ftruncate (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset, +              dict_t *xdata)  {          int           flags      = 0;          uint64_t      value      = 0; @@ -2879,7 +2893,7 @@ qr_ftruncate (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset)                          } else {                                  stub = fop_ftruncate_stub (frame,                                                             qr_ftruncate_helper, -                                                           fd, offset); +                                                           fd, offset, xdata);                                  if (stub == NULL) {                                          op_ret = -1;                                          op_errno = ENOMEM; @@ -2901,10 +2915,10 @@ qr_ftruncate (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset)  out:          if (need_unwind) {                  QR_STACK_UNWIND (ftruncate, frame, op_ret, op_errno, NULL, -                                 NULL); +                                 NULL, NULL);          } else if (can_wind) {                  STACK_WIND (frame, qr_ftruncate_cbk, FIRST_CHILD(this), -                            FIRST_CHILD(this)->fops->ftruncate, fd, offset); +                            FIRST_CHILD(this)->fops->ftruncate, fd, offset, xdata);          } else if (need_open) {                  op_ret = qr_loc_fill (&loc, fd->inode, path);                  if (op_ret == -1) { @@ -2921,7 +2935,7 @@ out:                  STACK_WIND (open_frame, qr_open_cbk, FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->open, &loc, flags, fd, -                            qr_fd_ctx->wbflags); +                            NULL);                  qr_loc_wipe (&loc);          } @@ -2933,17 +2947,17 @@ ret:  int32_t  qr_lk_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret, -           int32_t op_errno, struct gf_flock *lock) +           int32_t op_errno, struct gf_flock *lock, dict_t *xdata)  {          GF_ASSERT (frame); -        QR_STACK_UNWIND (lk, frame, op_ret, op_errno, lock); +        QR_STACK_UNWIND (lk, frame, op_ret, op_errno, lock, xdata);          return 0;  }  int32_t  qr_lk_helper (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t cmd, -              struct gf_flock *lock) +              struct gf_flock *lock, dict_t *xdata)  {          qr_local_t  *local    = NULL;          qr_fd_ctx_t *fdctx    = NULL; @@ -2973,19 +2987,19 @@ qr_lk_helper (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t cmd,          }          STACK_WIND (frame, qr_lk_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->lk, fd, cmd, lock); +                    FIRST_CHILD(this)->fops->lk, fd, cmd, lock, xdata);          return 0;  unwind: -        QR_STACK_UNWIND (lk, frame, -1, op_errno, NULL); +        QR_STACK_UNWIND (lk, frame, -1, op_errno, NULL, NULL);          return 0;  }  int32_t  qr_lk (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t cmd, -       struct gf_flock *lock) +       struct gf_flock *lock, dict_t *xdata)  {          int           flags      = 0;          uint64_t      value      = 0; @@ -3036,7 +3050,7 @@ qr_lk (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t cmd,                                  }                                  stub = fop_lk_stub (frame, qr_lk_helper, fd, -                                                    cmd, lock); +                                                    cmd, lock, xdata);                                  if (stub == NULL) {                                          op_ret = -1;                                          op_errno = ENOMEM; @@ -3057,10 +3071,10 @@ qr_lk (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t cmd,  out:          if (need_unwind) { -                QR_STACK_UNWIND (lk, frame, op_ret, op_errno, NULL); +                QR_STACK_UNWIND (lk, frame, op_ret, op_errno, NULL, NULL);          } else if (can_wind) {                  STACK_WIND (frame, qr_lk_cbk, FIRST_CHILD(this), -                            FIRST_CHILD(this)->fops->lk, fd, cmd, lock); +                            FIRST_CHILD(this)->fops->lk, fd, cmd, lock, xdata);          } else if (need_open) {                  op_ret = qr_loc_fill (&loc, fd->inode, path);                  if (op_ret == -1) { @@ -3077,7 +3091,7 @@ out:                  STACK_WIND (open_frame, qr_open_cbk, FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->open, &loc, flags, fd, -                            qr_fd_ctx->wbflags); +                            NULL);                  qr_loc_wipe (&loc);          } @@ -3218,8 +3232,6 @@ qr_fdctx_dump (xlator_t *this, fd_t *fd)                  gf_proc_dump_write ("flags", "%d", fdctx->flags); -                gf_proc_dump_write ("wbflags", "%d", fdctx->wbflags); -                  list_for_each_entry (stub, &fdctx->waiting_ops, list) {                          gf_proc_dump_build_key (key, "",                                                  "waiting-ops[%d].frame", i); diff --git a/xlators/performance/read-ahead/src/page.c b/xlators/performance/read-ahead/src/page.c index 52b3fdaf367..bc8bb8d58d0 100644 --- a/xlators/performance/read-ahead/src/page.c +++ b/xlators/performance/read-ahead/src/page.c @@ -142,7 +142,8 @@ ra_waitq_return (ra_waitq_t *waitq)  int  ra_fault_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)  {          ra_local_t   *local          = NULL;          off_t         pending_offset = 0; @@ -278,7 +279,7 @@ ra_page_fault (ra_file_t *file, call_frame_t *frame, off_t offset)          STACK_WIND (fault_frame, ra_fault_cbk,                      FIRST_CHILD (fault_frame->this),                      FIRST_CHILD (fault_frame->this)->fops->readv, -                    file->fd, file->page_size, offset, 0); +                    file->fd, file->page_size, offset, 0, NULL);          return; @@ -447,7 +448,7 @@ ra_frame_unwind (call_frame_t *frame)          file = (ra_file_t *)(long)tmp_file;          STACK_UNWIND_STRICT (readv, frame, local->op_ret, local->op_errno, -                             vector, count, &file->stbuf, iobref); +                             vector, count, &file->stbuf, iobref, NULL);          iobref_unref (iobref);          pthread_mutex_destroy (&local->local_lock); diff --git a/xlators/performance/read-ahead/src/read-ahead.c b/xlators/performance/read-ahead/src/read-ahead.c index 718bf3398dd..9019943fd14 100644 --- a/xlators/performance/read-ahead/src/read-ahead.c +++ b/xlators/performance/read-ahead/src/read-ahead.c @@ -44,12 +44,11 @@ read_ahead (call_frame_t *frame, ra_file_t *file);  int  ra_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_ret, int32_t op_errno, fd_t *fd, dict_t *xdata)  {          ra_conf_t  *conf    = NULL;          ra_file_t  *file    = NULL;          int         ret     = 0; -        long        wbflags = 0;          GF_ASSERT (frame);          GF_VALIDATE_OR_GOTO (frame->this->name, this, unwind); @@ -60,8 +59,6 @@ ra_open_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  goto unwind;          } -        wbflags = (long)frame->local; -          file = GF_CALLOC (1, sizeof (*file), gf_ra_mt_ra_file_t);          if (!file) {                  op_ret = -1; @@ -74,10 +71,6 @@ ra_open_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          if ((fd->flags & O_DIRECT) || ((fd->flags & O_ACCMODE) == O_WRONLY))                  file->disabled = 1; -        if (wbflags & GF_OPEN_NOWB) { -                file->disabled = 1; -        } -          file->offset = (unsigned long long) 0;          file->conf = conf;          file->pages.next = &file->pages; @@ -116,7 +109,7 @@ ra_open_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  unwind:          frame->local = NULL; -        STACK_UNWIND_STRICT (open, frame, op_ret, op_errno, fd); +        STACK_UNWIND_STRICT (open, frame, op_ret, op_errno, fd, xdata);          return 0;  } @@ -126,7 +119,7 @@ int  ra_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 *buf, struct iatt *preparent, -               struct iatt *postparent) +               struct iatt *postparent, dict_t *xdata)  {          ra_conf_t  *conf = NULL;          ra_file_t  *file = NULL; @@ -187,7 +180,7 @@ ra_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  unwind:          STACK_UNWIND_STRICT (create, frame, op_ret, op_errno, fd, inode, buf, -                             preparent, postparent); +                             preparent, postparent, xdata);          return 0;  } @@ -195,17 +188,15 @@ unwind:  int  ra_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)  {          GF_ASSERT (frame);          GF_ASSERT (this); -        frame->local = (void *)(long)wbflags; -          STACK_WIND (frame, ra_open_cbk,                      FIRST_CHILD (this),                      FIRST_CHILD (this)->fops->open, -                    loc, flags, fd, wbflags); +                    loc, flags, fd, xdata);          return 0;  } @@ -213,7 +204,7 @@ ra_open (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t flags,  int  ra_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)  {          GF_ASSERT (frame);          GF_ASSERT (this); @@ -221,7 +212,7 @@ ra_create (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t flags,          STACK_WIND (frame, ra_create_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->create, -                    loc, flags, mode, fd, params); +                    loc, flags, mode, umask, fd, xdata);          return 0;  } @@ -362,7 +353,8 @@ out:  int  ra_need_atime_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)  {          GF_ASSERT (frame);          STACK_DESTROY (frame->root); @@ -453,7 +445,7 @@ dispatch_requests (call_frame_t *frame, ra_file_t *file)                  STACK_WIND (ra_frame, ra_need_atime_cbk,                              FIRST_CHILD (frame->this),                              FIRST_CHILD (frame->this)->fops->readv, -                            file->fd, 1, 1, 0); +                            file->fd, 1, 1, 0, NULL);          }  out: @@ -464,12 +456,13 @@ out:  int  ra_readv_disabled_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)  {          GF_ASSERT (frame);          STACK_UNWIND_STRICT (readv, frame, op_ret, op_errno, vector, count, -                             stbuf, iobref); +                             stbuf, iobref, xdata);          return 0;  } @@ -477,7 +470,7 @@ ra_readv_disabled_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  ra_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)  {          ra_file_t   *file            = NULL;          ra_local_t  *local           = NULL; @@ -557,7 +550,8 @@ ra_readv (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size,          return 0;  unwind: -        STACK_UNWIND_STRICT (readv, frame, -1, op_errno, NULL, 0, NULL, NULL); +        STACK_UNWIND_STRICT (readv, frame, -1, op_errno, NULL, 0, NULL, NULL, +                             NULL);          return 0; @@ -565,17 +559,17 @@ disabled:          STACK_WIND (frame, ra_readv_disabled_cbk,                      FIRST_CHILD (frame->this),                      FIRST_CHILD (frame->this)->fops->readv, -                    fd, size, offset, flags); +                    fd, size, offset, flags, xdata);          return 0;  }  int  ra_flush_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret, -              int32_t op_errno) +              int32_t op_errno, dict_t *xdata)  {          GF_ASSERT (frame); -        STACK_UNWIND_STRICT (flush, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (flush, frame, op_ret, op_errno, xdata);          return 0;  } @@ -583,16 +577,18 @@ ra_flush_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret,  int  ra_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) +              int32_t op_errno, struct iatt *prebuf, struct iatt *postbuf, +              dict_t *xdata)  {          GF_ASSERT (frame); -        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 -ra_flush (call_frame_t *frame, xlator_t *this, fd_t *fd) +ra_flush (call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *xdata)  {          ra_file_t *file     = NULL;          uint64_t   tmp_file = 0; @@ -610,17 +606,18 @@ ra_flush (call_frame_t *frame, xlator_t *this, fd_t *fd)          }          STACK_WIND (frame, ra_flush_cbk, FIRST_CHILD (this), -                    FIRST_CHILD (this)->fops->flush, fd); +                    FIRST_CHILD (this)->fops->flush, fd, xdata);          return 0;  unwind: -        STACK_UNWIND_STRICT (flush, frame, -1, op_errno); +        STACK_UNWIND_STRICT (flush, frame, -1, op_errno, NULL);          return 0;  }  int -ra_fsync (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t datasync) +ra_fsync (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t datasync, +          dict_t *xdata)  {          ra_file_t *file     = NULL;          uint64_t   tmp_file = 0; @@ -638,11 +635,11 @@ ra_fsync (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t datasync)          }          STACK_WIND (frame, ra_fsync_cbk, FIRST_CHILD (this), -                    FIRST_CHILD (this)->fops->fsync, fd, datasync); +                    FIRST_CHILD (this)->fops->fsync, fd, datasync, xdata);          return 0;  unwind: -        STACK_UNWIND_STRICT (fsync, frame, -1, op_errno, NULL, NULL); +        STACK_UNWIND_STRICT (fsync, frame, -1, op_errno, NULL, NULL, NULL);          return 0;  } @@ -650,7 +647,7 @@ unwind:  int  ra_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)  {          ra_file_t *file     = NULL; @@ -663,14 +660,16 @@ ra_writev_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          }          frame->local = NULL; -        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;  }  int  ra_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) +           int32_t count, off_t offset, uint32_t flags, struct iobref *iobref, +           dict_t *xdata)  {          ra_file_t *file    = NULL;          uint64_t  tmp_file = 0; @@ -692,12 +691,12 @@ ra_writev (call_frame_t *frame, xlator_t *this, fd_t *fd, struct iovec *vector,          STACK_WIND (frame, ra_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;  unwind: -        STACK_UNWIND_STRICT (writev, frame, -1, op_errno, NULL, NULL); +        STACK_UNWIND_STRICT (writev, frame, -1, op_errno, NULL, NULL, NULL);          return 0;  } @@ -705,29 +704,30 @@ unwind:  int  ra_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)  {          GF_ASSERT (frame);          STACK_UNWIND_STRICT (truncate, frame, op_ret, op_errno, prebuf, -                             postbuf); +                             postbuf, xdata);          return 0;  }  int  ra_attr_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)  {          GF_ASSERT (frame); -        STACK_UNWIND_STRICT (stat, frame, op_ret, op_errno, buf); +        STACK_UNWIND_STRICT (stat, frame, op_ret, op_errno, buf, xdata);          return 0;  }  int -ra_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, off_t offset) +ra_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, off_t offset, +             dict_t *xdata)  {          ra_file_t *file     = NULL;          fd_t      *iter_fd  = NULL; @@ -766,11 +766,11 @@ ra_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, off_t offset)          STACK_WIND (frame, ra_truncate_cbk,                      FIRST_CHILD (this),                      FIRST_CHILD (this)->fops->truncate, -                    loc, offset); +                    loc, offset, xdata);          return 0;  unwind: -        STACK_UNWIND_STRICT (truncate, frame, -1, op_errno, NULL, NULL); +        STACK_UNWIND_STRICT (truncate, frame, -1, op_errno, NULL, NULL, NULL);          return 0;  } @@ -867,7 +867,7 @@ out:  }  int -ra_fstat (call_frame_t *frame, xlator_t *this, fd_t *fd) +ra_fstat (call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *xdata)  {          ra_file_t *file     = NULL;          fd_t      *iter_fd  = NULL; @@ -896,17 +896,18 @@ ra_fstat (call_frame_t *frame, xlator_t *this, fd_t *fd)          UNLOCK (&inode->lock);          STACK_WIND (frame, ra_attr_cbk, FIRST_CHILD (this), -                    FIRST_CHILD (this)->fops->fstat, fd); +                    FIRST_CHILD (this)->fops->fstat, fd, xdata);          return 0;  unwind: -        STACK_UNWIND_STRICT (stat, frame, -1, op_errno, NULL); +        STACK_UNWIND_STRICT (stat, frame, -1, op_errno, NULL, NULL);          return 0;  }  int -ra_ftruncate (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset) +ra_ftruncate (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset, +              dict_t *xdata)  {          ra_file_t *file    = NULL;          fd_t      *iter_fd = NULL; @@ -942,11 +943,11 @@ ra_ftruncate (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset)          UNLOCK (&inode->lock);          STACK_WIND (frame, ra_truncate_cbk, FIRST_CHILD (this), -                    FIRST_CHILD (this)->fops->ftruncate, fd, offset); +                    FIRST_CHILD (this)->fops->ftruncate, fd, offset, xdata);          return 0;  unwind: -        STACK_UNWIND_STRICT (truncate, frame, -1, op_errno, NULL, NULL); +        STACK_UNWIND_STRICT (truncate, frame, -1, op_errno, NULL, NULL, NULL);          return 0;  } diff --git a/xlators/performance/symlink-cache/src/symlink-cache.c b/xlators/performance/symlink-cache/src/symlink-cache.c index a82786cce0b..538cdc956fa 100644 --- a/xlators/performance/symlink-cache/src/symlink-cache.c +++ b/xlators/performance/symlink-cache/src/symlink-cache.c @@ -242,7 +242,7 @@ sc_cache_get (xlator_t *this, inode_t *inode, char **link)  int  sc_readlink_cbk (call_frame_t *frame, void *cookie,  		 xlator_t *this, int op_ret, int op_errno, -		 const char *link, struct iatt *sbuf) +		 const char *link, struct iatt *sbuf, dict_t *xdata)  {  	if (op_ret > 0)  		sc_cache_update (this, frame->local, link); @@ -250,14 +250,15 @@ sc_readlink_cbk (call_frame_t *frame, void *cookie,  	inode_unref (frame->local);  	frame->local = NULL; -        STACK_UNWIND_STRICT (readlink, frame, op_ret, op_errno, link, sbuf); +        STACK_UNWIND_STRICT (readlink, frame, op_ret, op_errno, link, sbuf, +                             xdata);          return 0;  }  int  sc_readlink (call_frame_t *frame, xlator_t *this, -	     loc_t *loc, size_t size) +	     loc_t *loc, size_t size, dict_t *xdata)  {  	char *link = NULL;          struct iatt buf = {0, }; @@ -275,7 +276,8 @@ sc_readlink (call_frame_t *frame, xlator_t *this,                    using buf in readlink_cbk should be aware that @buf                    is 0 filled                  */ -		STACK_UNWIND_STRICT (readlink, frame, strlen (link), 0, link, &buf); +		STACK_UNWIND_STRICT (readlink, frame, strlen (link), 0, link, +                                     &buf, NULL);  		FREE (link);  		return 0;  	} @@ -285,7 +287,7 @@ sc_readlink (call_frame_t *frame, xlator_t *this,          STACK_WIND (frame, sc_readlink_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->readlink, -                    loc, size); +                    loc, size, xdata);  	return 0;  } @@ -295,7 +297,7 @@ int  sc_symlink_cbk (call_frame_t *frame, void *cookie,  		xlator_t *this, int op_ret, int op_errno,                  inode_t *inode, struct iatt *buf, struct iatt *preparent, -                struct iatt *postparent) +                struct iatt *postparent, dict_t *xdata)  {  	if (op_ret == 0) {  		if (frame->local) { @@ -303,22 +305,22 @@ sc_symlink_cbk (call_frame_t *frame, void *cookie,  		}  	} -        STACK_UNWIND_STRICT (symlink, frame, op_ret, op_errno, inode, buf, preparent, -                      postparent); +        STACK_UNWIND_STRICT (symlink, frame, op_ret, op_errno, inode, buf, +                             preparent, postparent, xdata);          return 0;  }  int  sc_symlink (call_frame_t *frame, xlator_t *this, -	    const char *dst, loc_t *src, dict_t *params) +	    const char *dst, loc_t *src, mode_t umask, dict_t *xdata)  {  	frame->local = strdup (dst);          STACK_WIND (frame, sc_symlink_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->symlink, -                    dst, src, params); +                    dst, src, umask, xdata);  	return 0;  } @@ -327,7 +329,7 @@ sc_symlink (call_frame_t *frame, xlator_t *this,  int  sc_lookup_cbk (call_frame_t *frame, void *cookie,  	       xlator_t *this, int op_ret, int op_errno, -	       inode_t *inode, struct iatt *buf, dict_t *xattr, +	       inode_t *inode, struct iatt *buf, dict_t *xdata,                 struct iatt *postparent)  {  	if (op_ret == 0) @@ -335,19 +337,20 @@ sc_lookup_cbk (call_frame_t *frame, void *cookie,  	else  		sc_cache_flush (this, inode); -        STACK_UNWIND_STRICT (lookup, frame, op_ret, op_errno, inode, buf, xattr, postparent); +        STACK_UNWIND_STRICT (lookup, frame, op_ret, op_errno, inode, buf, +                             xdata, postparent);          return 0;  }  int  sc_lookup (call_frame_t *frame, xlator_t *this, -	   loc_t *loc, dict_t *xattr_req) +	   loc_t *loc, dict_t *xdata)  {          STACK_WIND (frame, sc_lookup_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->lookup, -                    loc, xattr_req); +                    loc, xdata);          return 0;  } @@ -363,10 +366,9 @@ sc_forget (xlator_t *this,  } -int32_t  +int32_t  init (xlator_t *this)  { -	          if (!this->children || this->children->next)          {                  gf_log (this->name, GF_LOG_ERROR, diff --git a/xlators/performance/write-behind/src/write-behind.c b/xlators/performance/write-behind/src/write-behind.c index cc0569dd436..d1b9f6feb37 100644 --- a/xlators/performance/write-behind/src/write-behind.c +++ b/xlators/performance/write-behind/src/write-behind.c @@ -107,7 +107,6 @@ struct wb_conf {  typedef struct wb_local {          list_head_t     winds;          int32_t         flags; -        int32_t         wbflags;          struct wb_file *file;          wb_request_t   *request;          int             op_ret; @@ -356,7 +355,8 @@ out:  int32_t  wb_sync_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret, -             int32_t op_errno, struct iatt *prebuf, struct iatt *postbuf) +             int32_t op_errno, struct iatt *prebuf, struct iatt *postbuf, +             dict_t *xdata)  {          wb_local_t   *local             = NULL;          list_head_t  *winds             = NULL; @@ -550,7 +550,7 @@ wb_sync (call_frame_t *frame, wb_file_t *file, list_head_t *winds)                                      fd, vector, count,                                      first_request->stub->args.writev.off,                                      first_request->stub->args.writev.flags, -                                    iobref); +                                    iobref, NULL);                          iobref_unref (iobref);                          GF_FREE (vector); @@ -618,7 +618,7 @@ out:  int32_t  wb_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_errno, struct iatt *buf, dict_t *xdata)  {          wb_local_t   *local         = NULL;          wb_request_t *request       = NULL; @@ -642,7 +642,7 @@ wb_stat_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret,                  }          } -        STACK_UNWIND_STRICT (stat, frame, op_ret, op_errno, buf); +        STACK_UNWIND_STRICT (stat, frame, op_ret, op_errno, buf, xdata);          if (request != NULL) {                  wb_request_unref (request); @@ -682,19 +682,19 @@ wb_stat_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret,  static int32_t -wb_stat_helper (call_frame_t *frame, xlator_t *this, loc_t *loc) +wb_stat_helper (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *xdata)  {          GF_ASSERT (frame);          GF_ASSERT (this);          STACK_WIND (frame, wb_stat_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->stat, loc); +                    FIRST_CHILD(this)->fops->stat, loc, xdata);          return 0;  }  int32_t -wb_stat (call_frame_t *frame, xlator_t *this, loc_t *loc) +wb_stat (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *xdata)  {          wb_file_t    *file     = NULL;          fd_t         *iter_fd  = NULL; @@ -732,7 +732,7 @@ wb_stat (call_frame_t *frame, xlator_t *this, loc_t *loc)          frame->local = local;          if (file) { -                stub = fop_stat_stub (frame, wb_stat_helper, loc); +                stub = fop_stat_stub (frame, wb_stat_helper, loc, xdata);                  if (stub == NULL) {                          op_errno = ENOMEM;                          goto unwind; @@ -751,12 +751,12 @@ wb_stat (call_frame_t *frame, xlator_t *this, loc_t *loc)                  }          } else {                  STACK_WIND (frame, wb_stat_cbk, FIRST_CHILD(this), -                            FIRST_CHILD(this)->fops->stat, loc); +                            FIRST_CHILD(this)->fops->stat, loc, xdata);          }          return 0;  unwind: -        STACK_UNWIND_STRICT (stat, frame, -1, op_errno, NULL); +        STACK_UNWIND_STRICT (stat, frame, -1, op_errno, NULL, NULL);          if (stub) {                  call_stub_destroy (stub); @@ -772,7 +772,7 @@ unwind:  int32_t  wb_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_errno, struct iatt *buf, dict_t *xdata)  {          wb_local_t   *local   = NULL;          wb_request_t *request = NULL; @@ -799,26 +799,26 @@ wb_fstat_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret,                  }          } -        STACK_UNWIND_STRICT (fstat, frame, op_ret, op_errno, buf); +        STACK_UNWIND_STRICT (fstat, frame, op_ret, op_errno, buf, xdata);          return 0;  }  int32_t -wb_fstat_helper (call_frame_t *frame, xlator_t *this, fd_t *fd) +wb_fstat_helper (call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *xdata)  {          GF_ASSERT (frame);          GF_ASSERT (this);          STACK_WIND (frame, wb_fstat_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->fstat, fd); +                    FIRST_CHILD(this)->fops->fstat, fd, xdata);          return 0;  }  int32_t -wb_fstat (call_frame_t *frame, xlator_t *this, fd_t *fd) +wb_fstat (call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *xdata)  {          wb_file_t    *file     = NULL;          wb_local_t   *local    = NULL; @@ -857,7 +857,7 @@ wb_fstat (call_frame_t *frame, xlator_t *this, fd_t *fd)          frame->local = local;          if (file) { -                stub = fop_fstat_stub (frame, wb_fstat_helper, fd); +                stub = fop_fstat_stub (frame, wb_fstat_helper, fd, xdata);                  if (stub == NULL) {                          op_errno = ENOMEM;                          goto unwind; @@ -879,13 +879,13 @@ wb_fstat (call_frame_t *frame, xlator_t *this, fd_t *fd)                  }          } else {                  STACK_WIND (frame, wb_fstat_cbk, FIRST_CHILD(this), -                            FIRST_CHILD(this)->fops->fstat, fd); +                            FIRST_CHILD(this)->fops->fstat, fd, xdata);          }          return 0;  unwind: -        STACK_UNWIND_STRICT (fstat, frame, -1, op_errno, NULL); +        STACK_UNWIND_STRICT (fstat, frame, -1, op_errno, NULL, NULL);          if (stub) {                  call_stub_destroy (stub); @@ -898,7 +898,7 @@ unwind:  int32_t  wb_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)  {          wb_local_t   *local         = NULL;          wb_request_t *request       = NULL; @@ -922,7 +922,7 @@ wb_truncate_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          }          STACK_UNWIND_STRICT (truncate, frame, op_ret, op_errno, prebuf, -                             postbuf); +                             postbuf, xdata);          if (request) {                  wb_request_unref (request); @@ -963,20 +963,21 @@ wb_truncate_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  static int32_t  wb_truncate_helper (call_frame_t *frame, xlator_t *this, loc_t *loc, -                    off_t offset) +                    off_t offset, dict_t *xdata)  {          GF_ASSERT (frame);          GF_ASSERT (this);          STACK_WIND (frame, wb_truncate_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->truncate, loc, offset); +                    FIRST_CHILD(this)->fops->truncate, loc, offset, xdata);          return 0;  }  int32_t -wb_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, off_t offset) +wb_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, off_t offset, +             dict_t *xdata)  {          wb_file_t    *file     = NULL;          fd_t         *iter_fd  = NULL; @@ -1016,7 +1017,7 @@ wb_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, off_t offset)          frame->local = local;          if (file) {                  stub = fop_truncate_stub (frame, wb_truncate_helper, loc, -                                          offset); +                                          offset, xdata);                  if (stub == NULL) {                          op_errno = ENOMEM;                          goto unwind; @@ -1035,13 +1036,14 @@ wb_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, off_t offset)                  }          } else {                  STACK_WIND (frame, wb_truncate_cbk, FIRST_CHILD(this), -                            FIRST_CHILD(this)->fops->truncate, loc, offset); +                            FIRST_CHILD(this)->fops->truncate, loc, offset, +                            xdata);          }          return 0;  unwind: -        STACK_UNWIND_STRICT (truncate, frame, -1, op_errno, NULL, NULL); +        STACK_UNWIND_STRICT (truncate, frame, -1, op_errno, NULL, NULL, NULL);          if (stub) {                  call_stub_destroy (stub); @@ -1054,7 +1056,7 @@ unwind:  int32_t  wb_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)  {          wb_local_t   *local   = NULL;          wb_request_t *request = NULL; @@ -1082,7 +1084,7 @@ wb_ftruncate_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          }          STACK_UNWIND_STRICT (ftruncate, frame, op_ret, op_errno, prebuf, -                             postbuf); +                             postbuf, xdata);          return 0;  } @@ -1090,19 +1092,20 @@ wb_ftruncate_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  static int32_t  wb_ftruncate_helper (call_frame_t *frame, xlator_t *this, fd_t *fd, -                     off_t offset) +                     off_t offset, dict_t *xdata)  {          GF_ASSERT (frame);          GF_ASSERT (this);          STACK_WIND (frame, wb_ftruncate_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->ftruncate, fd, offset); +                    FIRST_CHILD(this)->fops->ftruncate, fd, offset, xdata);          return 0;  }  int32_t -wb_ftruncate (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset) +wb_ftruncate (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset, +              dict_t *xdata)  {          wb_file_t    *file     = NULL;          wb_local_t   *local    = NULL; @@ -1142,7 +1145,7 @@ wb_ftruncate (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset)          if (file) {                  stub = fop_ftruncate_stub (frame, wb_ftruncate_helper, fd, -                                           offset); +                                           offset, xdata);                  if (stub == NULL) {                          op_errno = ENOMEM;                          goto unwind; @@ -1161,13 +1164,13 @@ wb_ftruncate (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset)                  }          } else {                  STACK_WIND (frame, wb_ftruncate_cbk, FIRST_CHILD(this), -                            FIRST_CHILD(this)->fops->ftruncate, fd, offset); +                            FIRST_CHILD(this)->fops->ftruncate, fd, offset, xdata);          }          return 0;  unwind: -        STACK_UNWIND_STRICT (ftruncate, frame, -1, op_errno, NULL, NULL); +        STACK_UNWIND_STRICT (ftruncate, frame, -1, op_errno, NULL, NULL, NULL);          if (stub) {                  call_stub_destroy (stub); @@ -1180,7 +1183,7 @@ unwind:  int32_t  wb_setattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  int32_t op_ret, int32_t op_errno, struct iatt *statpre, -                struct iatt *statpost) +                struct iatt *statpost, dict_t *xdata)  {          wb_local_t   *local         = NULL;          wb_request_t *request       = NULL; @@ -1204,7 +1207,7 @@ wb_setattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          }          STACK_UNWIND_STRICT (setattr, frame, op_ret, op_errno, statpre, -                             statpost); +                             statpost, xdata);          if (request) {                  wb_request_unref (request); @@ -1245,20 +1248,20 @@ wb_setattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  static int32_t  wb_setattr_helper (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)  {          GF_ASSERT (frame);          GF_ASSERT (this);          STACK_WIND (frame, wb_setattr_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->setattr, loc, stbuf, valid); +                    FIRST_CHILD(this)->fops->setattr, loc, stbuf, valid, xdata);          return 0;  }  int32_t  wb_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)  {          wb_file_t    *file     = NULL;          fd_t         *iter_fd  = NULL; @@ -1283,7 +1286,7 @@ wb_setattr (call_frame_t *frame, xlator_t *this, loc_t *loc,          if (!(valid & (GF_SET_ATTR_ATIME | GF_SET_ATTR_MTIME))) {                  STACK_WIND (frame, wb_setattr_cbk, FIRST_CHILD (this),                              FIRST_CHILD (this)->fops->setattr, loc, stbuf, -                            valid); +                            valid, xdata);                  goto out;          } @@ -1307,7 +1310,7 @@ wb_setattr (call_frame_t *frame, xlator_t *this, loc_t *loc,          if (file) {                  stub = fop_setattr_stub (frame, wb_setattr_helper, loc, stbuf, -                                         valid); +                                         valid, xdata);                  if (stub == NULL) {                          op_errno = ENOMEM;                          goto unwind; @@ -1327,12 +1330,12 @@ wb_setattr (call_frame_t *frame, xlator_t *this, loc_t *loc,          } else {                  STACK_WIND (frame, wb_setattr_cbk, FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->setattr, loc, stbuf, -                            valid); +                            valid, xdata);          }          return 0;  unwind: -        STACK_UNWIND_STRICT (setattr, frame, -1, op_errno, NULL, NULL); +        STACK_UNWIND_STRICT (setattr, frame, -1, op_errno, NULL, NULL, NULL);          if (stub) {                  call_stub_destroy (stub); @@ -1367,9 +1370,9 @@ wb_disable_all (xlator_t *this, fd_t *origfd)  int32_t  wb_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)  { -        int32_t     wbflags = 0, flags = 0; +        int32_t     flags   = 0;          wb_file_t  *file    = NULL;          wb_conf_t  *conf    = NULL;          wb_local_t *local   = NULL; @@ -1385,7 +1388,6 @@ wb_open_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret,                                          EINVAL);          flags = local->flags; -        wbflags = local->wbflags;          if (op_ret != -1) {                  file = wb_file_create (this, fd, flags); @@ -1407,23 +1409,25 @@ wb_open_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret,                                  file->disabled = 1;                                  wb_disable_all(this,fd);                          } - -                        else if (wbflags & GF_OPEN_NOWB) { +                        /* TODO: decide about wbflags's fate */ +                        /* +                          else if (wbflags & GF_OPEN_NOWB) {                                  file->disabled = 1;                          } +                        */                  }                  UNLOCK (&file->lock);          }  out: -        STACK_UNWIND_STRICT (open, frame, op_ret, op_errno, fd); +        STACK_UNWIND_STRICT (open, frame, op_ret, op_errno, fd, xdata);          return 0;  }  int32_t  wb_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)  {          wb_local_t *local    = NULL;          int32_t     op_errno = EINVAL; @@ -1435,16 +1439,15 @@ wb_open (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t flags,          }          local->flags = flags; -        local->wbflags = wbflags;          frame->local = local;          STACK_WIND (frame, wb_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;  unwind: -        STACK_UNWIND_STRICT (open, frame, -1, op_errno, NULL); +        STACK_UNWIND_STRICT (open, frame, -1, op_errno, NULL, NULL);          return 0;  } @@ -1453,7 +1456,7 @@ int32_t  wb_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 *buf, struct iatt *preparent, -               struct iatt *postparent) +               struct iatt *postparent, dict_t *xdata)  {          long       flags = 0;          wb_file_t *file  = NULL; @@ -1495,14 +1498,14 @@ wb_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  out:          STACK_UNWIND_STRICT (create, frame, op_ret, op_errno, fd, inode, buf, -                             preparent, postparent); +                             preparent, postparent, xdata);          return 0;  }  int32_t  wb_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)  {          int32_t op_errno = EINVAL; @@ -1515,12 +1518,12 @@ wb_create (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t flags,          STACK_WIND (frame, wb_create_cbk, FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->create, -                    loc, flags, mode, fd, params); +                    loc, flags, mode, umask, fd, xdata);          return 0;  unwind:          STACK_UNWIND_STRICT (create, frame, -1, op_errno, NULL, NULL, NULL, -                             NULL, NULL); +                             NULL, NULL, NULL);          return 0;  } @@ -1803,8 +1806,8 @@ wb_stack_unwind (list_head_t *unwinds)                  frame = request->stub->frame;                  local = frame->local; -                STACK_UNWIND (frame, local->op_ret, local->op_errno, &buf, -                              &buf); +                STACK_UNWIND (frame, local->op_ret, local->op_errno, +                              &buf, &buf, NULL, NULL);                  ret = wb_request_unref (request);                  if (ret == 0) { @@ -2085,18 +2088,20 @@ out:  int32_t  wb_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)  {          GF_ASSERT (frame); -        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;  }  int32_t  wb_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) +           int32_t count, off_t offset, uint32_t flags, struct iobref *iobref, +           dict_t *xdata)  {          wb_file_t    *file          = NULL;          char          wb_disabled   = 0; @@ -2157,14 +2162,14 @@ wb_writev (call_frame_t *frame, xlator_t *this, fd_t *fd, struct iovec *vector,          if (op_ret == -1) {                  STACK_UNWIND_STRICT (writev, frame, op_ret, op_errno, NULL, -                                     NULL); +                                     NULL, NULL);                  return 0;          }          if (wb_disabled) {                  STACK_WIND (frame, wb_writev_cbk, FIRST_CHILD (frame->this),                              FIRST_CHILD (frame->this)->fops->writev, -                            fd, vector, count, offset, flags, iobref); +                            fd, vector, count, offset, flags, iobref, xdata);                  return 0;          } @@ -2184,7 +2189,7 @@ wb_writev (call_frame_t *frame, xlator_t *this, fd_t *fd, struct iovec *vector,          local->file = file;          stub = fop_writev_stub (frame, NULL, fd, vector, count, offset, flags, -                                iobref); +                                iobref, xdata);          if (stub == NULL) {                  op_errno = ENOMEM;                  goto unwind; @@ -2207,7 +2212,7 @@ wb_writev (call_frame_t *frame, xlator_t *this, fd_t *fd, struct iovec *vector,          return 0;  unwind: -        STACK_UNWIND_STRICT (writev, frame, -1, op_errno, NULL, NULL); +        STACK_UNWIND_STRICT (writev, frame, -1, op_errno, NULL, NULL, NULL);          if (process_frame) {                  STACK_DESTROY (process_frame->root); @@ -2224,7 +2229,7 @@ unwind:  int32_t  wb_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) +              struct iatt *stbuf, struct iobref *iobref, dict_t *xdata)  {          wb_local_t   *local   = NULL;          wb_file_t    *file    = NULL; @@ -2253,7 +2258,7 @@ wb_readv_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret,          }          STACK_UNWIND_STRICT (readv, frame, op_ret, op_errno, vector, count, -                             stbuf, iobref); +                             stbuf, iobref, xdata);          return 0;  } @@ -2261,10 +2266,11 @@ wb_readv_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret,  static int32_t  wb_readv_helper (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, wb_readv_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->readv, fd, size, offset, flags); +                    FIRST_CHILD(this)->fops->readv, fd, size, offset, flags, +                    xdata);          return 0;  } @@ -2272,7 +2278,7 @@ wb_readv_helper (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size,  int32_t  wb_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)  {          wb_file_t    *file     = NULL;          wb_local_t   *local    = NULL; @@ -2311,7 +2317,7 @@ wb_readv (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size,          frame->local = local;          if (file) {                  stub = fop_readv_stub (frame, wb_readv_helper, fd, size, -                                       offset, flags); +                                       offset, flags, xdata);                  if (stub == NULL) {                          op_errno = ENOMEM;                          goto unwind; @@ -2332,20 +2338,21 @@ wb_readv (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size,          } else {                  STACK_WIND (frame, wb_readv_cbk, FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->readv, -                            fd, size, offset, flags); +                            fd, size, offset, flags, xdata);          }          return 0;  unwind: -        STACK_UNWIND_STRICT (readv, frame, -1, op_errno, NULL, 0, NULL, NULL); +        STACK_UNWIND_STRICT (readv, frame, -1, op_errno, NULL, 0, NULL, NULL, +                             NULL);          return 0;  }  int32_t  wb_ffr_bg_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_DESTROY (frame->root);          return 0; @@ -2354,7 +2361,7 @@ wb_ffr_bg_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int32_t  wb_ffr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret, -            int32_t op_errno) +            int32_t op_errno, dict_t *xdata)  {          wb_local_t *local = NULL;          wb_file_t  *file  = NULL; @@ -2377,14 +2384,14 @@ wb_ffr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret,                  UNLOCK (&file->lock);          } -        STACK_UNWIND_STRICT (flush, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (flush, frame, op_ret, op_errno, xdata);          return 0;  }  int32_t -wb_flush_helper (call_frame_t *frame, xlator_t *this, fd_t *fd) +wb_flush_helper (call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *xdata)  {          wb_conf_t    *conf        = NULL;          wb_local_t   *local       = NULL; @@ -2426,10 +2433,10 @@ wb_flush_helper (call_frame_t *frame, xlator_t *this, fd_t *fd)                  }                  STACK_WIND (flush_frame, wb_ffr_bg_cbk, FIRST_CHILD(this), -                            FIRST_CHILD(this)->fops->flush, fd); +                            FIRST_CHILD(this)->fops->flush, fd, xdata);          } else {                  STACK_WIND (frame, wb_ffr_cbk, FIRST_CHILD(this), -                            FIRST_CHILD(this)->fops->flush, fd); +                            FIRST_CHILD(this)->fops->flush, fd, xdata);          }          if (process_frame != NULL) { @@ -2443,19 +2450,19 @@ wb_flush_helper (call_frame_t *frame, xlator_t *this, fd_t *fd)          }          if (conf->flush_behind) { -                STACK_UNWIND_STRICT (flush, frame, op_ret, op_errno); +                STACK_UNWIND_STRICT (flush, frame, op_ret, op_errno, NULL);          }          return 0;  unwind: -        STACK_UNWIND_STRICT (flush, frame, -1, op_errno); +        STACK_UNWIND_STRICT (flush, frame, -1, op_errno, NULL);          return 0;  }  int32_t -wb_flush (call_frame_t *frame, xlator_t *this, fd_t *fd) +wb_flush (call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *xdata)  {          wb_conf_t    *conf        = NULL;          wb_file_t    *file        = NULL; @@ -2499,7 +2506,7 @@ wb_flush (call_frame_t *frame, xlator_t *this, fd_t *fd)                  frame->local = local; -                stub = fop_flush_stub (frame, wb_flush_helper, fd); +                stub = fop_flush_stub (frame, wb_flush_helper, fd, xdata);                  if (stub == NULL) {                          op_errno = ENOMEM;                          goto unwind; @@ -2525,28 +2532,29 @@ wb_flush (call_frame_t *frame, xlator_t *this, fd_t *fd)                                  goto unwind;                          } -                        STACK_UNWIND_STRICT (flush, frame, 0, 0); +                        STACK_UNWIND_STRICT (flush, frame, 0, 0, NULL);                          STACK_WIND (flush_frame, wb_ffr_bg_cbk,                                      FIRST_CHILD(this), -                                    FIRST_CHILD(this)->fops->flush, fd); +                                    FIRST_CHILD(this)->fops->flush, fd, xdata);                  } else {                          STACK_WIND (frame, wb_ffr_cbk, FIRST_CHILD(this), -                                    FIRST_CHILD(this)->fops->flush, fd); +                                    FIRST_CHILD(this)->fops->flush, fd, xdata);                  }          }          return 0;  unwind: -        STACK_UNWIND_STRICT (flush, frame, -1, op_errno); +        STACK_UNWIND_STRICT (flush, frame, -1, op_errno, NULL);          return 0;  }  static int32_t  wb_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) +              int32_t op_errno, struct iatt *prebuf, struct iatt *postbuf, +              dict_t *xdata)  {          wb_local_t   *local   = NULL;          wb_file_t    *file    = NULL; @@ -2587,7 +2595,8 @@ wb_fsync_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret,          } -        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;  } @@ -2595,16 +2604,17 @@ wb_fsync_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret,  static int32_t  wb_fsync_helper (call_frame_t *frame, xlator_t *this, fd_t *fd, -                 int32_t datasync) +                 int32_t datasync, dict_t *xdata)  {          STACK_WIND (frame, wb_fsync_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->fsync, fd, datasync); +                    FIRST_CHILD(this)->fops->fsync, fd, datasync, xdata);          return 0;  }  int32_t -wb_fsync (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t datasync) +wb_fsync (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t datasync, +          dict_t *xdata)  {          wb_file_t    *file     = NULL;          wb_local_t   *local    = NULL; @@ -2644,7 +2654,8 @@ wb_fsync (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t datasync)          frame->local = local;          if (file) { -                stub = fop_fsync_stub (frame, wb_fsync_helper, fd, datasync); +                stub = fop_fsync_stub (frame, wb_fsync_helper, fd, datasync, +                                       xdata);                  if (stub == NULL) {                          op_errno = ENOMEM;                          goto unwind; @@ -2664,13 +2675,13 @@ wb_fsync (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t datasync)                  }          } else {                  STACK_WIND (frame, wb_fsync_cbk, FIRST_CHILD(this), -                            FIRST_CHILD(this)->fops->fsync, fd, datasync); +                            FIRST_CHILD(this)->fops->fsync, fd, datasync, xdata);          }          return 0;  unwind: -        STACK_UNWIND_STRICT (fsync, frame, -1, op_errno, NULL, NULL); +        STACK_UNWIND_STRICT (fsync, frame, -1, op_errno, NULL, NULL, NULL);          return 0;  }  | 
