diff options
Diffstat (limited to 'xlators')
92 files changed, 7172 insertions, 5299 deletions
diff --git a/xlators/cluster/afr/src/afr-common.c b/xlators/cluster/afr/src/afr-common.c index 22c741151..2cfe92acf 100644 --- a/xlators/cluster/afr/src/afr-common.c +++ b/xlators/cluster/afr/src/afr-common.c @@ -955,6 +955,12 @@ afr_local_cleanup (afr_local_t *local, xlator_t *this)                  if (local->cont.readdir.dict)                          dict_unref (local->cont.readdir.dict);          } + +        if (local->xdata_req) +                dict_unref (local->xdata_req); + +        if (local->xdata_rsp) +                dict_unref (local->xdata_rsp);  } @@ -2214,7 +2220,8 @@ afr_flush_unwind (call_frame_t *frame, xlator_t *this)          if (main_frame) {                  AFR_STACK_UNWIND (flush, main_frame, -                                  local->op_ret, local->op_errno); +                                  local->op_ret, local->op_errno, +                                  NULL);          }          return 0; @@ -2223,7 +2230,7 @@ afr_flush_unwind (call_frame_t *frame, xlator_t *this)  int  afr_flush_wind_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)  {          afr_local_t *   local = NULL;          afr_private_t * priv  = NULL; @@ -2293,7 +2300,7 @@ afr_flush_wind (call_frame_t *frame, xlator_t *this)                                             (void *) (long) i,                                             priv->children[i],                                             priv->children[i]->fops->flush, -                                           local->fd); +                                           local->fd, NULL);                          if (!--call_count)                                  break; @@ -2320,7 +2327,7 @@ afr_flush_done (call_frame_t *frame, xlator_t *this)  int -afr_flush (call_frame_t *frame, xlator_t *this, fd_t *fd) +afr_flush (call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *xdata)  {          afr_private_t *priv  = NULL;          afr_local_t   *local = NULL; @@ -2373,7 +2380,7 @@ out:                  if (transaction_frame)                          AFR_STACK_DESTROY (transaction_frame); -                AFR_STACK_UNWIND (flush, frame, -1, op_errno); +                AFR_STACK_UNWIND (flush, frame, -1, op_errno, NULL);          }          return 0; @@ -2459,7 +2466,7 @@ afr_release (xlator_t *this, fd_t *fd)  int  afr_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)  {          afr_local_t *local = NULL;          int call_count = -1; @@ -2501,7 +2508,8 @@ afr_fsync_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          if (call_count == 0) {                  AFR_STACK_UNWIND (fsync, frame, local->op_ret, local->op_errno,                                    &local->cont.fsync.prebuf, -                                  &local->cont.fsync.postbuf); +                                  &local->cont.fsync.postbuf, +                                  NULL);          }          return 0; @@ -2510,7 +2518,7 @@ afr_fsync_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  afr_fsync (call_frame_t *frame, xlator_t *this, fd_t *fd, -           int32_t datasync) +           int32_t datasync, dict_t *xdata)  {          afr_private_t *priv = NULL;          afr_local_t *local = NULL; @@ -2542,7 +2550,7 @@ afr_fsync (call_frame_t *frame, xlator_t *this, fd_t *fd,                                             (void *) (long) i,                                             priv->children[i],                                             priv->children[i]->fops->fsync, -                                           fd, datasync); +                                           fd, datasync, xdata);                          if (!--call_count)                                  break;                  } @@ -2551,7 +2559,7 @@ afr_fsync (call_frame_t *frame, xlator_t *this, fd_t *fd,          ret = 0;  out:          if (ret < 0) -                AFR_STACK_UNWIND (fsync, frame, -1, op_errno, NULL, NULL); +                AFR_STACK_UNWIND (fsync, frame, -1, op_errno, NULL, NULL, NULL);          return 0;  } @@ -2561,7 +2569,8 @@ out:  int32_t  afr_fsyncdir_cbk (call_frame_t *frame, void *cookie, -                  xlator_t *this, int32_t op_ret, int32_t op_errno) +                  xlator_t *this, int32_t op_ret, int32_t op_errno, +                  dict_t *xdata)  {          afr_local_t *local = NULL;          int call_count = -1; @@ -2581,7 +2590,7 @@ afr_fsyncdir_cbk (call_frame_t *frame, void *cookie,          if (call_count == 0)                  AFR_STACK_UNWIND (fsyncdir, frame, local->op_ret, -                                  local->op_errno); +                                  local->op_errno, xdata);          return 0;  } @@ -2589,7 +2598,7 @@ afr_fsyncdir_cbk (call_frame_t *frame, void *cookie,  int32_t  afr_fsyncdir (call_frame_t *frame, xlator_t *this, fd_t *fd, -              int32_t datasync) +              int32_t datasync, dict_t *xdata)  {          afr_private_t *priv = NULL;          afr_local_t *local = NULL; @@ -2618,7 +2627,7 @@ afr_fsyncdir (call_frame_t *frame, xlator_t *this, fd_t *fd,                          STACK_WIND (frame, afr_fsyncdir_cbk,                                      priv->children[i],                                      priv->children[i]->fops->fsyncdir, -                                    fd, datasync); +                                    fd, datasync, xdata);                          if (!--call_count)                                  break;                  } @@ -2627,7 +2636,7 @@ afr_fsyncdir (call_frame_t *frame, xlator_t *this, fd_t *fd,          ret = 0;  out:          if (ret < 0) -                AFR_STACK_UNWIND (fsyncdir, frame, -1, op_errno); +                AFR_STACK_UNWIND (fsyncdir, frame, -1, op_errno, NULL);          return 0;  } @@ -2638,7 +2647,7 @@ out:  int32_t  afr_xattrop_cbk (call_frame_t *frame, void *cookie,                   xlator_t *this, int32_t op_ret, int32_t op_errno, -                 dict_t *xattr) +                 dict_t *xattr, dict_t *xdata)  {          afr_local_t *local = NULL;          int call_count = -1; @@ -2661,7 +2670,7 @@ afr_xattrop_cbk (call_frame_t *frame, void *cookie,          if (call_count == 0)                  AFR_STACK_UNWIND (xattrop, frame, local->op_ret, local->op_errno, -                                  local->cont.xattrop.xattr); +                local->cont.xattrop.xattr, xdata);          return 0;  } @@ -2669,7 +2678,7 @@ afr_xattrop_cbk (call_frame_t *frame, void *cookie,  int32_t  afr_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)  {          afr_private_t *priv = NULL;          afr_local_t *local  = NULL; @@ -2698,7 +2707,7 @@ afr_xattrop (call_frame_t *frame, xlator_t *this, loc_t *loc,                          STACK_WIND (frame, afr_xattrop_cbk,                                      priv->children[i],                                      priv->children[i]->fops->xattrop, -                                    loc, optype, xattr); +                                    loc, optype, xattr, xdata);                          if (!--call_count)                                  break;                  } @@ -2707,7 +2716,7 @@ afr_xattrop (call_frame_t *frame, xlator_t *this, loc_t *loc,          ret = 0;  out:          if (ret < 0) -                AFR_STACK_UNWIND (xattrop, frame, -1, op_errno, NULL); +                AFR_STACK_UNWIND (xattrop, frame, -1, op_errno, NULL, NULL);          return 0;  } @@ -2718,7 +2727,7 @@ out:  int32_t  afr_fxattrop_cbk (call_frame_t *frame, void *cookie,                    xlator_t *this, int32_t op_ret, int32_t op_errno, -                  dict_t *xattr) +                  dict_t *xattr, dict_t *xdata)  {          afr_local_t *local = NULL; @@ -2743,7 +2752,7 @@ afr_fxattrop_cbk (call_frame_t *frame, void *cookie,          if (call_count == 0)                  AFR_STACK_UNWIND (fxattrop, frame, local->op_ret, local->op_errno, -                                  local->cont.fxattrop.xattr); +                                  local->cont.fxattrop.xattr, xdata);          return 0;  } @@ -2751,7 +2760,7 @@ afr_fxattrop_cbk (call_frame_t *frame, void *cookie,  int32_t  afr_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)  {          afr_private_t *priv = NULL;          afr_local_t *local  = NULL; @@ -2780,7 +2789,7 @@ afr_fxattrop (call_frame_t *frame, xlator_t *this, fd_t *fd,                          STACK_WIND (frame, afr_fxattrop_cbk,                                      priv->children[i],                                      priv->children[i]->fops->fxattrop, -                                    fd, optype, xattr); +                                    fd, optype, xattr, xdata);                          if (!--call_count)                                  break;                  } @@ -2789,7 +2798,7 @@ afr_fxattrop (call_frame_t *frame, xlator_t *this, fd_t *fd,          ret = 0;  out:          if (ret < 0) -                AFR_STACK_UNWIND (fxattrop, frame, -1, op_errno, NULL); +                AFR_STACK_UNWIND (fxattrop, frame, -1, op_errno, NULL, NULL);          return 0;  } @@ -2798,7 +2807,7 @@ out:  int32_t  afr_inodelk_cbk (call_frame_t *frame, void *cookie, -                 xlator_t *this, int32_t op_ret, int32_t op_errno) +                 xlator_t *this, int32_t op_ret, int32_t op_errno, dict_t *xdata)  {          afr_local_t *local = NULL; @@ -2819,7 +2828,7 @@ afr_inodelk_cbk (call_frame_t *frame, void *cookie,          if (call_count == 0)                  AFR_STACK_UNWIND (inodelk, frame, local->op_ret, -                                  local->op_errno); +                                  local->op_errno, xdata);          return 0;  } @@ -2827,7 +2836,8 @@ afr_inodelk_cbk (call_frame_t *frame, void *cookie,  int32_t  afr_inodelk (call_frame_t *frame, xlator_t *this, -             const char *volume, loc_t *loc, int32_t cmd, struct gf_flock *flock) +             const char *volume, loc_t *loc, int32_t cmd, +             struct gf_flock *flock, dict_t *xdata)  {          afr_private_t *priv = NULL;          afr_local_t *local  = NULL; @@ -2856,7 +2866,7 @@ afr_inodelk (call_frame_t *frame, xlator_t *this,                          STACK_WIND (frame, afr_inodelk_cbk,                                      priv->children[i],                                      priv->children[i]->fops->inodelk, -                                    volume, loc, cmd, flock); +                                    volume, loc, cmd, flock, xdata);                          if (!--call_count)                                  break; @@ -2866,14 +2876,15 @@ afr_inodelk (call_frame_t *frame, xlator_t *this,          ret = 0;  out:          if (ret < 0) -                AFR_STACK_UNWIND (inodelk, frame, -1, op_errno); +                AFR_STACK_UNWIND (inodelk, frame, -1, op_errno, NULL);          return 0;  }  int32_t  afr_finodelk_cbk (call_frame_t *frame, void *cookie, -                  xlator_t *this, int32_t op_ret, int32_t op_errno) +                  xlator_t *this, int32_t op_ret, int32_t op_errno, +                  dict_t *xdata)  {          afr_local_t *local = NULL; @@ -2894,7 +2905,7 @@ afr_finodelk_cbk (call_frame_t *frame, void *cookie,          if (call_count == 0)                  AFR_STACK_UNWIND (finodelk, frame, local->op_ret, -                                  local->op_errno); +                                  local->op_errno, xdata);          return 0;  } @@ -2902,7 +2913,8 @@ afr_finodelk_cbk (call_frame_t *frame, void *cookie,  int32_t  afr_finodelk (call_frame_t *frame, xlator_t *this, -              const char *volume, fd_t *fd, int32_t cmd, struct gf_flock *flock) +              const char *volume, fd_t *fd, int32_t cmd, struct gf_flock *flock, +              dict_t *xdata)  {          afr_private_t *priv = NULL;          afr_local_t *local  = NULL; @@ -2931,7 +2943,7 @@ afr_finodelk (call_frame_t *frame, xlator_t *this,                          STACK_WIND (frame, afr_finodelk_cbk,                                      priv->children[i],                                      priv->children[i]->fops->finodelk, -                                    volume, fd, cmd, flock); +                                    volume, fd, cmd, flock, xdata);                          if (!--call_count)                                  break; @@ -2941,15 +2953,14 @@ afr_finodelk (call_frame_t *frame, xlator_t *this,          ret = 0;  out:          if (ret < 0) -                AFR_STACK_UNWIND (finodelk, frame, -1, op_errno); +                AFR_STACK_UNWIND (finodelk, frame, -1, op_errno, NULL);          return 0;  }  int32_t -afr_entrylk_cbk (call_frame_t *frame, void *cookie, -                 xlator_t *this, int32_t op_ret, int32_t op_errno) - +afr_entrylk_cbk (call_frame_t *frame, void *cookie, xlator_t *this, +                 int32_t op_ret, int32_t op_errno, dict_t *xdata)  {          afr_local_t *local = NULL;          int call_count = -1; @@ -2969,7 +2980,7 @@ afr_entrylk_cbk (call_frame_t *frame, void *cookie,          if (call_count == 0)                  AFR_STACK_UNWIND (entrylk, frame, local->op_ret, -                                  local->op_errno); +                                  local->op_errno, xdata);          return 0;  } @@ -2978,7 +2989,8 @@ afr_entrylk_cbk (call_frame_t *frame, void *cookie,  int32_t  afr_entrylk (call_frame_t *frame, xlator_t *this,               const char *volume, loc_t *loc, -             const char *basename, entrylk_cmd cmd, entrylk_type type) +             const char *basename, entrylk_cmd cmd, entrylk_type type, +             dict_t *xdata)  {          afr_private_t *priv = NULL;          afr_local_t *local  = NULL; @@ -3007,7 +3019,7 @@ afr_entrylk (call_frame_t *frame, xlator_t *this,                          STACK_WIND (frame, afr_entrylk_cbk,                                      priv->children[i],                                      priv->children[i]->fops->entrylk, -                                    volume, loc, basename, cmd, type); +                                    volume, loc, basename, cmd, type, xdata);                          if (!--call_count)                                  break; @@ -3017,7 +3029,7 @@ afr_entrylk (call_frame_t *frame, xlator_t *this,          ret = 0;  out:          if (ret < 0) -                AFR_STACK_UNWIND (entrylk, frame, -1, op_errno); +                AFR_STACK_UNWIND (entrylk, frame, -1, op_errno, NULL);          return 0;  } @@ -3025,7 +3037,7 @@ out:  int32_t  afr_fentrylk_cbk (call_frame_t *frame, void *cookie, -                  xlator_t *this, int32_t op_ret, int32_t op_errno) +                  xlator_t *this, int32_t op_ret, int32_t op_errno, dict_t *xdata)  {          afr_local_t *local = NULL; @@ -3046,7 +3058,7 @@ afr_fentrylk_cbk (call_frame_t *frame, void *cookie,          if (call_count == 0)                  AFR_STACK_UNWIND (fentrylk, frame, local->op_ret, -                                  local->op_errno); +                                  local->op_errno, xdata);          return 0;  } @@ -3055,7 +3067,8 @@ afr_fentrylk_cbk (call_frame_t *frame, void *cookie,  int32_t  afr_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)  {          afr_private_t *priv = NULL;          afr_local_t *local  = NULL; @@ -3084,7 +3097,7 @@ afr_fentrylk (call_frame_t *frame, xlator_t *this,                          STACK_WIND (frame, afr_fentrylk_cbk,                                      priv->children[i],                                      priv->children[i]->fops->fentrylk, -                                    volume, fd, basename, cmd, type); +                                    volume, fd, basename, cmd, type, xdata);                          if (!--call_count)                                  break; @@ -3094,14 +3107,14 @@ afr_fentrylk (call_frame_t *frame, xlator_t *this,          ret = 0;  out:          if (ret < 0) -                AFR_STACK_UNWIND (fentrylk, frame, -1, op_errno); +                AFR_STACK_UNWIND (fentrylk, frame, -1, op_errno, NULL);          return 0;  }  int32_t  afr_statfs_cbk (call_frame_t *frame, void *cookie,                  xlator_t *this, int32_t op_ret, int32_t op_errno, -                struct statvfs *statvfs) +                struct statvfs *statvfs, dict_t *xdata)  {          afr_local_t *local = NULL;          int call_count = 0; @@ -3132,7 +3145,7 @@ afr_statfs_cbk (call_frame_t *frame, void *cookie,          if (call_count == 0)                  AFR_STACK_UNWIND (statfs, frame, local->op_ret, local->op_errno, -                                  &local->cont.statfs.buf); +                                  &local->cont.statfs.buf, xdata);          return 0;  } @@ -3140,7 +3153,7 @@ afr_statfs_cbk (call_frame_t *frame, void *cookie,  int32_t  afr_statfs (call_frame_t *frame, xlator_t *this, -            loc_t *loc) +            loc_t *loc, dict_t *xdata)  {          afr_private_t *  priv        = NULL;          int              child_count = 0; @@ -3171,7 +3184,7 @@ afr_statfs (call_frame_t *frame, xlator_t *this,                          STACK_WIND (frame, afr_statfs_cbk,                                      priv->children[i],                                      priv->children[i]->fops->statfs, -                                    loc); +                                    loc, xdata);                          if (!--call_count)                                  break;                  } @@ -3180,14 +3193,15 @@ afr_statfs (call_frame_t *frame, xlator_t *this,          ret = 0;  out:          if (ret < 0) -                AFR_STACK_UNWIND (statfs, frame, -1, op_errno, NULL); +                AFR_STACK_UNWIND (statfs, frame, -1, op_errno, NULL, NULL);          return 0;  }  int32_t  afr_lk_unlock_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_ret, int32_t op_errno, struct gf_flock *lock, +                   dict_t *xdata)  {          afr_local_t * local = NULL;          int call_count = -1; @@ -3197,7 +3211,7 @@ afr_lk_unlock_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          if (call_count == 0)                  AFR_STACK_UNWIND (lk, frame, local->op_ret, local->op_errno, -                                  lock); +                                  lock, xdata);          return 0;  } @@ -3219,7 +3233,7 @@ afr_lk_unlock (call_frame_t *frame, xlator_t *this)          if (call_count == 0) {                  AFR_STACK_UNWIND (lk, frame, local->op_ret, local->op_errno, -                                  &local->cont.lk.ret_flock); +                                  &local->cont.lk.ret_flock, NULL);                  return 0;          } @@ -3233,7 +3247,7 @@ afr_lk_unlock (call_frame_t *frame, xlator_t *this)                                      priv->children[i],                                      priv->children[i]->fops->lk,                                      local->fd, F_SETLK, -                                    &local->cont.lk.user_flock); +                                    &local->cont.lk.user_flock, NULL);                          if (!--call_count)                                  break; @@ -3246,7 +3260,7 @@ afr_lk_unlock (call_frame_t *frame, xlator_t *this)  int32_t  afr_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_ret, int32_t op_errno, struct gf_flock *lock, dict_t *xdata)  {          afr_local_t *local = NULL;          afr_private_t *priv = NULL; @@ -3281,12 +3295,12 @@ afr_lk_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                                     priv->children[child_index],                                     priv->children[child_index]->fops->lk,                                     local->fd, local->cont.lk.cmd, -                                   &local->cont.lk.user_flock); +                                   &local->cont.lk.user_flock, xdata);          } else if (local->op_ret == -1) {                  /* all nodes have gone down */                  AFR_STACK_UNWIND (lk, frame, -1, ENOTCONN, -                                  &local->cont.lk.ret_flock); +                                  &local->cont.lk.ret_flock, NULL);          } else {                  /* locking has succeeded on all nodes that are up */ @@ -3304,7 +3318,7 @@ afr_lk_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  */                  AFR_STACK_UNWIND (lk, frame, local->op_ret, local->op_errno, -                                  &local->cont.lk.ret_flock); +                                  &local->cont.lk.ret_flock, NULL);          }          return 0; @@ -3313,7 +3327,7 @@ afr_lk_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  afr_lk (call_frame_t *frame, xlator_t *this, -        fd_t *fd, int32_t cmd, struct gf_flock *flock) +        fd_t *fd, int32_t cmd, struct gf_flock *flock, dict_t *xdata)  {          afr_private_t *priv = NULL;          afr_local_t *local = NULL; @@ -3351,12 +3365,12 @@ afr_lk (call_frame_t *frame, xlator_t *this,          STACK_WIND_COOKIE (frame, afr_lk_cbk, (void *) (long) 0,                             priv->children[i],                             priv->children[i]->fops->lk, -                           fd, cmd, flock); +                           fd, cmd, flock, xdata);          ret = 0;  out:          if (ret < 0) -                AFR_STACK_UNWIND (lk, frame, -1, op_errno, NULL); +                AFR_STACK_UNWIND (lk, frame, -1, op_errno, NULL, NULL);          return 0;  } @@ -3911,7 +3925,7 @@ afr_set_low_priority (call_frame_t *frame)  int  afr_child_fd_ctx_set (xlator_t *this, fd_t *fd, int32_t child, -                      int flags, int32_t wbflags) +                      int flags)  {          int             ret = 0;          uint64_t        ctx = 0; @@ -3936,7 +3950,6 @@ afr_child_fd_ctx_set (xlator_t *this, fd_t *fd, int32_t child,          fd_ctx->opened_on[child] = AFR_FD_OPENED;          if (!IA_ISDIR (fd->inode->ia_type)) {                  fd_ctx->flags            = flags; -                fd_ctx->wbflags          = wbflags;          }          ret = 0;  out: diff --git a/xlators/cluster/afr/src/afr-dir-read.c b/xlators/cluster/afr/src/afr-dir-read.c index ee9c5d8cc..5abbd9c13 100644 --- a/xlators/cluster/afr/src/afr-dir-read.c +++ b/xlators/cluster/afr/src/afr-dir-read.c @@ -60,7 +60,7 @@ afr_examine_dir_sh_unwind (call_frame_t *frame, xlator_t *this, int32_t op_ret,          afr_set_opendir_done (this, local->fd->inode);          AFR_STACK_UNWIND (opendir, frame, local->op_ret, -                          local->op_errno, local->fd); +                          local->op_errno, local->fd, NULL);          return 0;  } @@ -99,7 +99,7 @@ __checksums_differ (uint32_t *checksum, int child_count,  int32_t  afr_examine_dir_readdir_cbk (call_frame_t *frame, void *cookie,                               xlator_t *this, int32_t op_ret, int32_t op_errno, -                             gf_dirent_t *entries) +                             gf_dirent_t *entries, dict_t *xdata)  {          afr_private_t *   priv        = NULL;          afr_local_t *     local       = NULL; @@ -152,7 +152,7 @@ afr_examine_dir_readdir_cbk (call_frame_t *frame, void *cookie,                             (void *) (long) child_index,                             priv->children[child_index],                             priv->children[child_index]->fops->readdir, -                           local->fd, 131072, last_offset); +                           local->fd, 131072, last_offset, NULL);          return 0; @@ -175,7 +175,7 @@ out:                          afr_set_opendir_done (this, inode);                          AFR_STACK_UNWIND (opendir, frame, local->op_ret, -                                          local->op_errno, local->fd); +                                          local->op_errno, local->fd, NULL);                  }          } @@ -208,7 +208,7 @@ afr_examine_dir (call_frame_t *frame, xlator_t *this)                                             (void *) (long) i,                                             priv->children[i],                                             priv->children[i]->fops->readdir, -                                           local->fd, 131072, 0); +                                           local->fd, 131072, 0, NULL);                          if (!--call_count)                                  break; @@ -222,7 +222,7 @@ afr_examine_dir (call_frame_t *frame, xlator_t *this)  int32_t  afr_opendir_cbk (call_frame_t *frame, void *cookie,                   xlator_t *this, int32_t op_ret, int32_t op_errno, -                 fd_t *fd) +                 fd_t *fd, dict_t *xdata)  {          afr_private_t *priv              = NULL;          afr_local_t   *local             = NULL; @@ -242,8 +242,7 @@ afr_opendir_cbk (call_frame_t *frame, void *cookie,          {                  if (op_ret >= 0) {                          local->op_ret = op_ret; -                        ret = afr_child_fd_ctx_set (this, fd, child_index, -                                                    0, 0); +                        ret = afr_child_fd_ctx_set (this, fd, child_index, 0);                          if (ret) {                                  local->op_ret = -1;                                  local->op_errno = -ret; @@ -291,7 +290,7 @@ unlock:  out:          AFR_STACK_UNWIND (opendir, frame, local->op_ret, -                          local->op_errno, local->fd); +                          local->op_errno, local->fd, NULL);          return 0;  } @@ -336,7 +335,7 @@ afr_opendir (call_frame_t *frame, xlator_t *this,                                             (void*) (long) i,                                             priv->children[i],                                             priv->children[i]->fops->opendir, -                                           loc, fd); +                                           loc, fd, NULL);                          if (!--call_count)                                  break; @@ -346,7 +345,7 @@ afr_opendir (call_frame_t *frame, xlator_t *this,          ret = 0;  out:          if (ret < 0) -                AFR_STACK_UNWIND (opendir, frame, -1, op_errno, fd); +                AFR_STACK_UNWIND (opendir, frame, -1, op_errno, fd, NULL);          return 0;  } @@ -476,7 +475,7 @@ afr_forget_entries (fd_t *fd)  int32_t  afr_readdir_cbk (call_frame_t *frame, void *cookie,                   xlator_t *this, int32_t op_ret, int32_t op_errno, -                 gf_dirent_t *entries) +                 gf_dirent_t *entries, dict_t *xdata)  {          afr_local_t *   local       = NULL;          gf_dirent_t *   entry       = NULL; @@ -496,7 +495,7 @@ afr_readdir_cbk (call_frame_t *frame, void *cookie,          }  out: -        AFR_STACK_UNWIND (readdir, frame, op_ret, op_errno, entries); +        AFR_STACK_UNWIND (readdir, frame, op_ret, op_errno, entries, NULL);          return 0;  } @@ -504,7 +503,8 @@ out:  int32_t  afr_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)  {          afr_private_t *  priv            = NULL;          afr_local_t *    local           = NULL; @@ -623,7 +623,7 @@ afr_readdirp_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          }  out: -        AFR_STACK_UNWIND (readdirp, frame, op_ret, op_errno, entries); +        AFR_STACK_UNWIND (readdirp, frame, op_ret, op_errno, entries, NULL);          return 0;  } @@ -706,7 +706,7 @@ afr_do_readdir (call_frame_t *frame, xlator_t *this,                                     (void *) (long) call_child,                                     children[call_child],                                     children[call_child]->fops->readdir, fd, -                                   size, offset); +                                   size, offset, dict);          else                  STACK_WIND_COOKIE (frame, afr_readdirp_cbk,                                     (void *) (long) call_child, @@ -717,16 +717,16 @@ afr_do_readdir (call_frame_t *frame, xlator_t *this,          ret = 0;  out:          if (ret < 0) -                AFR_STACK_UNWIND (readdir, frame, -1, op_errno, NULL); +                AFR_STACK_UNWIND (readdir, frame, -1, op_errno, NULL, NULL);          return 0;  }  int32_t  afr_readdir (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size, -             off_t offset) +             off_t offset, dict_t *xdata)  { -        afr_do_readdir (frame, this, fd, size, offset, GF_FOP_READDIR, NULL); +        afr_do_readdir (frame, this, fd, size, offset, GF_FOP_READDIR, xdata);          return 0;  } diff --git a/xlators/cluster/afr/src/afr-dir-read.h b/xlators/cluster/afr/src/afr-dir-read.h index 7e50a1c8c..2ab126adf 100644 --- a/xlators/cluster/afr/src/afr-dir-read.h +++ b/xlators/cluster/afr/src/afr-dir-read.h @@ -23,14 +23,14 @@  int32_t  afr_opendir (call_frame_t *frame, xlator_t *this, -	     loc_t *loc, fd_t *fd); +	     loc_t *loc, fd_t *fd, dict_t *xdata);  int32_t  afr_releasedir (xlator_t *this, fd_t *fd);  int32_t  afr_readdir (call_frame_t *frame, xlator_t *this, -	     fd_t *fd, size_t size, off_t offset); +	     fd_t *fd, size_t size, off_t offset, dict_t *xdata);  int32_t @@ -39,7 +39,7 @@ afr_readdirp (call_frame_t *frame, xlator_t *this,  int32_t  afr_checksum (call_frame_t *frame, xlator_t *this, -	      loc_t *loc, int32_t flags); +	      loc_t *loc, int32_t flags, dict_t *xdata);  #endif /* __DIR_READ_H__ */ diff --git a/xlators/cluster/afr/src/afr-dir-write.c b/xlators/cluster/afr/src/afr-dir-write.c index 1cd447e75..37d86ee5c 100644 --- a/xlators/cluster/afr/src/afr-dir-write.c +++ b/xlators/cluster/afr/src/afr-dir-write.c @@ -106,7 +106,8 @@ afr_create_unwind (call_frame_t *frame, xlator_t *this)                                    local->cont.create.fd,                                    local->cont.create.inode,                                    unwind_buf, &local->cont.create.preparent, -                                  &local->cont.create.postparent); +                                  &local->cont.create.postparent, +                                  NULL);          }          return 0; @@ -117,7 +118,8 @@ int  afr_create_wind_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 *preparent, struct iatt *postparent, +                     dict_t *xdata)  {          afr_local_t     *local = NULL;          afr_private_t   *priv  = NULL; @@ -235,8 +237,9 @@ afr_create_wind (call_frame_t *frame, xlator_t *this)                                             &local->loc,                                             local->cont.create.flags,                                             local->cont.create.mode, +                                           local->umask,                                             local->cont.create.fd, -                                           local->cont.create.params); +                                           local->xdata_req);                          if (!--call_count)                                  break;                  } @@ -264,7 +267,7 @@ afr_create_done (call_frame_t *frame, xlator_t *this)  int  afr_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 umask, fd_t *fd, dict_t *params)  {          afr_private_t  *priv  = NULL;          afr_local_t    *local = NULL; @@ -305,8 +308,9 @@ afr_create (call_frame_t *frame, xlator_t *this,          local->cont.create.flags = flags;          local->cont.create.mode  = mode;          local->cont.create.fd    = fd_ref (fd); +        local->umask  = umask;          if (params) -                local->cont.create.params = dict_ref (params); +                local->xdata_req = dict_ref (params);          local->transaction.fop    = afr_create_wind;          local->transaction.done   = afr_create_done; @@ -328,7 +332,7 @@ out:                  if (transaction_frame)                          AFR_STACK_DESTROY (transaction_frame);                  AFR_STACK_UNWIND (create, frame, -1, op_errno, -                                  NULL, NULL, NULL, NULL, NULL); +                                  NULL, NULL, NULL, NULL, NULL, NULL);          }          return 0; @@ -367,7 +371,8 @@ afr_mknod_unwind (call_frame_t *frame, xlator_t *this)                                    local->op_ret, local->op_errno,                                    local->cont.mknod.inode,                                    unwind_buf, &local->cont.mknod.preparent, -                                  &local->cont.mknod.postparent); +                                  &local->cont.mknod.postparent, +                                  NULL);          }          return 0; @@ -378,7 +383,7 @@ int  afr_mknod_wind_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)  {          afr_local_t     *local          = NULL;          afr_private_t   *priv           = NULL; @@ -463,7 +468,8 @@ afr_mknod_wind (call_frame_t *frame, xlator_t *this)                                             priv->children[i]->fops->mknod,                                             &local->loc, local->cont.mknod.mode,                                             local->cont.mknod.dev, -                                           local->cont.mknod.params); +                                           local->umask, +                                           local->xdata_req);                          if (!--call_count)                                  break;                  } @@ -488,8 +494,8 @@ afr_mknod_done (call_frame_t *frame, xlator_t *this)  int -afr_mknod (call_frame_t *frame, xlator_t *this, -           loc_t *loc, mode_t mode, dev_t dev, dict_t *params) +afr_mknod (call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode, +           dev_t dev, mode_t umask, dict_t *params)  {          afr_private_t * priv  = NULL;          afr_local_t   * local = NULL; @@ -529,8 +535,9 @@ afr_mknod (call_frame_t *frame, xlator_t *this,          local->cont.mknod.mode  = mode;          local->cont.mknod.dev   = dev; +        local->umask = umask;          if (params) -                local->cont.mknod.params = dict_ref (params); +                local->xdata_req = dict_ref (params);          local->transaction.fop    = afr_mknod_wind;          local->transaction.done   = afr_mknod_done; @@ -552,7 +559,7 @@ out:                  if (transaction_frame)                          AFR_STACK_DESTROY (transaction_frame);                  AFR_STACK_UNWIND (mknod, frame, -1, op_errno, -                                  NULL, NULL, NULL, NULL); +                                  NULL, NULL, NULL, NULL, NULL);          }          return 0; @@ -592,7 +599,8 @@ afr_mkdir_unwind (call_frame_t *frame, xlator_t *this)                                    local->op_ret, local->op_errno,                                    local->cont.mkdir.inode,                                    unwind_buf, &local->cont.mkdir.preparent, -                                  &local->cont.mkdir.postparent); +                                  &local->cont.mkdir.postparent, +                                  NULL);          }          return 0; @@ -603,7 +611,7 @@ int  afr_mkdir_wind_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)  {          afr_local_t     *local          = NULL;          afr_private_t   *priv           = NULL; @@ -688,7 +696,8 @@ afr_mkdir_wind (call_frame_t *frame, xlator_t *this)                                             priv->children[i],                                             priv->children[i]->fops->mkdir,                                             &local->loc, local->cont.mkdir.mode, -                                           local->cont.mkdir.params); +                                           local->umask, +                                           local->xdata_req);                          if (!--call_count)                                  break;                  } @@ -715,7 +724,7 @@ afr_mkdir_done (call_frame_t *frame, xlator_t *this)  int  afr_mkdir (call_frame_t *frame, xlator_t *this, -           loc_t *loc, mode_t mode, dict_t *params) +           loc_t *loc, mode_t mode, mode_t umask, dict_t *params)  {          afr_private_t * priv  = NULL;          afr_local_t   * local = NULL; @@ -754,8 +763,9 @@ afr_mkdir (call_frame_t *frame, xlator_t *this,          UNLOCK (&priv->read_child_lock);          local->cont.mkdir.mode  = mode; +        local->umask = umask;          if (params) -                local->cont.mkdir.params = dict_ref (params); +                local->xdata_req = dict_ref (params);          local->transaction.fop    = afr_mkdir_wind;          local->transaction.done   = afr_mkdir_done; @@ -778,7 +788,7 @@ out:                          AFR_STACK_DESTROY (transaction_frame);                  AFR_STACK_UNWIND (mkdir, frame, -1, op_errno, -                                  NULL, NULL, NULL, NULL); +                                  NULL, NULL, NULL, NULL, NULL);          }          return 0; @@ -818,7 +828,8 @@ afr_link_unwind (call_frame_t *frame, xlator_t *this)                                    local->op_ret, local->op_errno,                                    local->cont.link.inode,                                    unwind_buf, &local->cont.link.preparent, -                                  &local->cont.link.postparent); +                                  &local->cont.link.postparent, +                                  NULL);          }          return 0; @@ -829,7 +840,7 @@ int  afr_link_wind_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)  {          afr_local_t     *local          = NULL;          afr_private_t   *priv           = NULL; @@ -914,7 +925,7 @@ afr_link_wind (call_frame_t *frame, xlator_t *this)                                             priv->children[i],                                             priv->children[i]->fops->link,                                             &local->loc, -                                           &local->newloc); +                                           &local->newloc, local->xdata_req);                          if (!--call_count)                                  break; @@ -940,7 +951,7 @@ afr_link_done (call_frame_t *frame, xlator_t *this)  int  afr_link (call_frame_t *frame, xlator_t *this, -          loc_t *oldloc, loc_t *newloc) +          loc_t *oldloc, loc_t *newloc, dict_t *xdata)  {          afr_private_t * priv  = NULL;          afr_local_t   * local = NULL; @@ -971,6 +982,8 @@ afr_link (call_frame_t *frame, xlator_t *this,          loc_copy (&local->loc,    oldloc);          loc_copy (&local->newloc, newloc); +        if (xdata) +                local->xdata_req = dict_ref (xdata);          LOCK (&priv->read_child_lock);          { @@ -999,7 +1012,7 @@ out:                  if (transaction_frame)                          AFR_STACK_DESTROY (transaction_frame);                  AFR_STACK_UNWIND (link, frame, -1, op_errno, -                                  NULL, NULL, NULL, NULL); +                                  NULL, NULL, NULL, NULL, NULL);          }          return 0; @@ -1039,7 +1052,8 @@ afr_symlink_unwind (call_frame_t *frame, xlator_t *this)                                    local->op_ret, local->op_errno,                                    local->cont.symlink.inode,                                    unwind_buf, &local->cont.symlink.preparent, -                                  &local->cont.symlink.postparent); +                                  &local->cont.symlink.postparent, +                                  NULL);          }          return 0; @@ -1050,7 +1064,7 @@ int  afr_symlink_wind_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)  {          afr_local_t     *local          = NULL;          afr_private_t   *priv           = NULL; @@ -1136,7 +1150,8 @@ afr_symlink_wind (call_frame_t *frame, xlator_t *this)                                             priv->children[i]->fops->symlink,                                             local->cont.symlink.linkpath,                                             &local->loc, -                                           local->cont.symlink.params); +                                           local->umask, +                                           local->xdata_req);                          if (!--call_count)                                  break; @@ -1163,7 +1178,7 @@ afr_symlink_done (call_frame_t *frame, xlator_t *this)  int  afr_symlink (call_frame_t *frame, xlator_t *this, -             const char *linkpath, loc_t *loc, dict_t *params) +             const char *linkpath, loc_t *loc, mode_t umask, dict_t *params)  {          afr_private_t * priv  = NULL;          afr_local_t   * local = NULL; @@ -1202,8 +1217,9 @@ afr_symlink (call_frame_t *frame, xlator_t *this,          UNLOCK (&priv->read_child_lock);          local->cont.symlink.linkpath = gf_strdup (linkpath); +        local->umask = umask;          if (params) -                local->cont.symlink.params = dict_ref (params); +                local->xdata_req = dict_ref (params);          local->transaction.fop    = afr_symlink_wind;          local->transaction.done   = afr_symlink_done; @@ -1225,7 +1241,7 @@ out:                  if (transaction_frame)                          AFR_STACK_DESTROY (transaction_frame);                  AFR_STACK_UNWIND (symlink, frame, -1, op_errno, -                                  NULL, NULL, NULL, NULL); +                                  NULL, NULL, NULL, NULL, NULL);          }          return 0; @@ -1266,7 +1282,8 @@ afr_rename_unwind (call_frame_t *frame, xlator_t *this)                                    &local->cont.rename.preoldparent,                                    &local->cont.rename.postoldparent,                                    &local->cont.rename.prenewparent, -                                  &local->cont.rename.postnewparent); +                                  &local->cont.rename.postnewparent, +                                  NULL);          }          return 0; @@ -1277,7 +1294,8 @@ int  afr_rename_wind_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)  {          afr_local_t *   local = NULL;          int call_count = -1; @@ -1356,7 +1374,7 @@ afr_rename_wind (call_frame_t *frame, xlator_t *this)                                             priv->children[i],                                             priv->children[i]->fops->rename,                                             &local->loc, -                                           &local->newloc); +                                           &local->newloc, NULL);                          if (!--call_count)                                  break;                  } @@ -1381,7 +1399,7 @@ afr_rename_done (call_frame_t *frame, xlator_t *this)  int  afr_rename (call_frame_t *frame, xlator_t *this, -            loc_t *oldloc, loc_t *newloc) +            loc_t *oldloc, loc_t *newloc, dict_t *xdata)  {          afr_private_t * priv  = NULL;          afr_local_t   * local = NULL; @@ -1441,7 +1459,7 @@ out:                          AFR_STACK_DESTROY (transaction_frame);                  AFR_STACK_UNWIND (rename, frame, -1, op_errno, -                                  NULL, NULL, NULL, NULL, NULL); +                                  NULL, NULL, NULL, NULL, NULL, NULL);          }          return 0; @@ -1472,7 +1490,8 @@ afr_unlink_unwind (call_frame_t *frame, xlator_t *this)                  AFR_STACK_UNWIND (unlink, main_frame,                                    local->op_ret, local->op_errno,                                    &local->cont.unlink.preparent, -                                  &local->cont.unlink.postparent); +                                  &local->cont.unlink.postparent, +                                  NULL);          }          return 0; @@ -1482,7 +1501,7 @@ afr_unlink_unwind (call_frame_t *frame, xlator_t *this)  int  afr_unlink_wind_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)  {          afr_local_t *   local = NULL;          int call_count  = -1; @@ -1557,7 +1576,8 @@ afr_unlink_wind (call_frame_t *frame, xlator_t *this)                                             (void *) (long) i,                                             priv->children[i],                                             priv->children[i]->fops->unlink, -                                           &local->loc); +                                           &local->loc, local->xflag, +                                           local->xdata_req);                          if (!--call_count)                                  break; @@ -1583,7 +1603,7 @@ afr_unlink_done (call_frame_t *frame, xlator_t *this)  int32_t  afr_unlink (call_frame_t *frame, xlator_t *this, -            loc_t *loc) +            loc_t *loc, int xflag, dict_t *xdata)  {          afr_private_t * priv  = NULL;          afr_local_t   * local = NULL; @@ -1613,6 +1633,9 @@ afr_unlink (call_frame_t *frame, xlator_t *this,                  goto out;          loc_copy (&local->loc, loc); +        local->xflag = xflag; +        if (xdata) +                local->xdata_req = dict_ref (xdata);          local->transaction.fop    = afr_unlink_wind;          local->transaction.done   = afr_unlink_done; @@ -1634,7 +1657,7 @@ out:                  if (transaction_frame)                          AFR_STACK_DESTROY (transaction_frame);                  AFR_STACK_UNWIND (unlink, frame, -1, op_errno, -                                  NULL, NULL); +                                  NULL, NULL, NULL);          }          return 0; @@ -1667,7 +1690,8 @@ afr_rmdir_unwind (call_frame_t *frame, xlator_t *this)                  AFR_STACK_UNWIND (rmdir, main_frame,                                    local->op_ret, local->op_errno,                                    &local->cont.rmdir.preparent, -                                  &local->cont.rmdir.postparent); +                                  &local->cont.rmdir.postparent, +                                  NULL);          }          return 0; @@ -1677,7 +1701,7 @@ afr_rmdir_unwind (call_frame_t *frame, xlator_t *this)  int  afr_rmdir_wind_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)  {          afr_local_t *   local = NULL;          int call_count  = -1; @@ -1753,7 +1777,8 @@ afr_rmdir_wind (call_frame_t *frame, xlator_t *this)                                             (void *) (long) i,                                             priv->children[i],                                             priv->children[i]->fops->rmdir, -                                           &local->loc, local->cont.rmdir.flags); +                                           &local->loc, local->cont.rmdir.flags, +                                           NULL);                          if (!--call_count)                                  break; @@ -1779,7 +1804,7 @@ afr_rmdir_done (call_frame_t *frame, xlator_t *this)  int  afr_rmdir (call_frame_t *frame, xlator_t *this, -           loc_t *loc, int flags) +           loc_t *loc, int flags, dict_t *xdata)  {          afr_private_t * priv  = NULL;          afr_local_t   * local = NULL; @@ -1830,7 +1855,7 @@ out:          if (ret < 0) {                  if (transaction_frame)                          AFR_STACK_DESTROY (transaction_frame); -                AFR_STACK_UNWIND (rmdir, frame, -1, op_errno, NULL, NULL); +                AFR_STACK_UNWIND (rmdir, frame, -1, op_errno, NULL, NULL, NULL);          }          return 0; diff --git a/xlators/cluster/afr/src/afr-dir-write.h b/xlators/cluster/afr/src/afr-dir-write.h index 0290c6350..5a3494ece 100644 --- a/xlators/cluster/afr/src/afr-dir-write.h +++ b/xlators/cluster/afr/src/afr-dir-write.h @@ -23,38 +23,34 @@  int32_t  afr_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 umask, fd_t *fd, dict_t *xdata);  int32_t  afr_mknod (call_frame_t *frame, xlator_t *this, -	   loc_t *loc, mode_t mode, dev_t dev, dict_t *params); +	   loc_t *loc, mode_t mode, dev_t dev, mode_t umask, dict_t *xdata);  int32_t  afr_mkdir (call_frame_t *frame, xlator_t *this, -	   loc_t *loc, mode_t mode, dict_t *params); +	   loc_t *loc, mode_t mode, mode_t umask, dict_t *xdata);  int32_t  afr_unlink (call_frame_t *frame, xlator_t *this, -	    loc_t *loc); +	    loc_t *loc, int xflag, dict_t *xdata);  int32_t  afr_rmdir (call_frame_t *frame, xlator_t *this, -	   loc_t *loc, int flags); +	   loc_t *loc, int flags, dict_t *xdata);  int32_t  afr_link (call_frame_t *frame, xlator_t *this, -	  loc_t *oldloc, loc_t *newloc); +	  loc_t *oldloc, loc_t *newloc, dict_t *xdata);  int32_t  afr_rename (call_frame_t *frame, xlator_t *this, -	    loc_t *oldloc, loc_t *newloc); +	    loc_t *oldloc, loc_t *newloc, dict_t *xdata);  int  afr_symlink (call_frame_t *frame, xlator_t *this, -	     const char *linkpath, loc_t *oldloc, dict_t *params); - -int32_t -afr_setdents (call_frame_t *frame, xlator_t *this, -	      fd_t *fd, int32_t flags, dir_entry_t *entries, int32_t count); +	     const char *linkpath, loc_t *oldloc, mode_t umask, dict_t *params);  #endif /* __DIR_WRITE_H__ */ diff --git a/xlators/cluster/afr/src/afr-inode-read.c b/xlators/cluster/afr/src/afr-inode-read.c index 41ffcb913..097bba16e 100644 --- a/xlators/cluster/afr/src/afr-inode-read.c +++ b/xlators/cluster/afr/src/afr-inode-read.c @@ -58,7 +58,7 @@  int32_t  afr_access_cbk (call_frame_t *frame, void *cookie, -                xlator_t *this, int32_t op_ret, int32_t op_errno) +                xlator_t *this, int32_t op_ret, int32_t op_errno, dict_t *xdata)  {          afr_private_t * priv            = NULL;          afr_local_t *   local           = NULL; @@ -92,12 +92,13 @@ afr_access_cbk (call_frame_t *frame, void *cookie,                                     (void *) (long) read_child,                                     children[next_call_child],                                     children[next_call_child]->fops->access, -                                   &local->loc, local->cont.access.mask); +                                   &local->loc, local->cont.access.mask, +                                   NULL);          }  out:          if (unwind) { -                AFR_STACK_UNWIND (access, frame, op_ret, op_errno); +                AFR_STACK_UNWIND (access, frame, op_ret, op_errno, xdata);          }          return 0; @@ -105,7 +106,8 @@ out:  int32_t -afr_access (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t mask) +afr_access (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t mask, +            dict_t *xdata)  {          afr_private_t   *priv      = NULL;          xlator_t        **children = NULL; @@ -156,12 +158,12 @@ afr_access (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t mask)                             (void *) (long) call_child,                             children[call_child],                             children[call_child]->fops->access, -                           loc, mask); +                           loc, mask, xdata);          ret = 0;  out:          if (ret < 0) -                AFR_STACK_UNWIND (access, frame, -1, op_errno); +                AFR_STACK_UNWIND (access, frame, -1, op_errno, NULL);          return 0;  } @@ -173,7 +175,7 @@ out:  int32_t  afr_stat_cbk (call_frame_t *frame, void *cookie,                xlator_t *this, int32_t op_ret, int32_t op_errno, -              struct iatt *buf) +              struct iatt *buf, dict_t *xdata)  {          afr_private_t * priv            = NULL;          afr_local_t *   local           = NULL; @@ -207,12 +209,12 @@ afr_stat_cbk (call_frame_t *frame, void *cookie,                                     (void *) (long) read_child,                                     children[next_call_child],                                     children[next_call_child]->fops->stat, -                                   &local->loc); +                                   &local->loc, NULL);          }  out:          if (unwind) { -                AFR_STACK_UNWIND (stat, frame, op_ret, op_errno, buf); +                AFR_STACK_UNWIND (stat, frame, op_ret, op_errno, buf, xdata);          }          return 0; @@ -220,7 +222,7 @@ out:  int32_t -afr_stat (call_frame_t *frame, xlator_t *this, loc_t *loc) +afr_stat (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *xdata)  {          afr_private_t   *priv      = NULL;          afr_local_t     *local     = NULL; @@ -267,12 +269,12 @@ afr_stat (call_frame_t *frame, xlator_t *this, loc_t *loc)          STACK_WIND_COOKIE (frame, afr_stat_cbk, (void *) (long) call_child,                             children[call_child],                             children[call_child]->fops->stat, -                           loc); +                           loc, xdata);          ret = 0;  out:          if (ret < 0) -                AFR_STACK_UNWIND (stat, frame, -1, op_errno, NULL); +                AFR_STACK_UNWIND (stat, frame, -1, op_errno, NULL, NULL);          return 0;  } @@ -284,7 +286,8 @@ out:  int32_t  afr_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)  {          afr_private_t   *priv           = NULL;          afr_local_t     *local          = NULL; @@ -318,12 +321,12 @@ afr_fstat_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                                     (void *) (long) read_child,                                     children[next_call_child],                                     children[next_call_child]->fops->fstat, -                                   local->fd); +                                   local->fd, NULL);          }  out:          if (unwind) { -                AFR_STACK_UNWIND (fstat, frame, op_ret, op_errno, buf); +                AFR_STACK_UNWIND (fstat, frame, op_ret, op_errno, buf, xdata);          }          return 0; @@ -332,7 +335,7 @@ out:  int32_t  afr_fstat (call_frame_t *frame, xlator_t *this, -           fd_t *fd) +           fd_t *fd, dict_t *xdata)  {          afr_private_t   *priv      = NULL;          afr_local_t     *local     = NULL; @@ -391,12 +394,12 @@ afr_fstat (call_frame_t *frame, xlator_t *this,          STACK_WIND_COOKIE (frame, afr_fstat_cbk, (void *) (long) call_child,                             children[call_child],                             children[call_child]->fops->fstat, -                           fd); +                           fd, xdata);          ret = 0;  out:          if (ret < 0) -                AFR_STACK_UNWIND (fstat, frame, -1, op_errno, NULL); +                AFR_STACK_UNWIND (fstat, frame, -1, op_errno, NULL, NULL);          return 0;  } @@ -408,7 +411,7 @@ out:  int32_t  afr_readlink_cbk (call_frame_t *frame, void *cookie,                    xlator_t *this, int32_t op_ret, int32_t op_errno, -                  const char *buf, struct iatt *sbuf) +                  const char *buf, struct iatt *sbuf, dict_t *xdata)  {          afr_private_t * priv                  = NULL;          afr_local_t *   local                 = NULL; @@ -442,12 +445,13 @@ afr_readlink_cbk (call_frame_t *frame, void *cookie,                                     children[next_call_child],                                     children[next_call_child]->fops->readlink,                                     &local->loc, -                                   local->cont.readlink.size); +                                   local->cont.readlink.size, NULL);          }  out:          if (unwind) { -                AFR_STACK_UNWIND (readlink, frame, op_ret, op_errno, buf, sbuf); +                AFR_STACK_UNWIND (readlink, frame, op_ret, op_errno, buf, sbuf, +                                  xdata);          }          return 0; @@ -456,7 +460,7 @@ out:  int32_t  afr_readlink (call_frame_t *frame, xlator_t *this, -              loc_t *loc, size_t size) +              loc_t *loc, size_t size, dict_t *xdata)  {          afr_private_t   *priv      = NULL;          xlator_t        **children = NULL; @@ -506,12 +510,12 @@ afr_readlink (call_frame_t *frame, xlator_t *this,                             (void *) (long) call_child,                             children[call_child],                             children[call_child]->fops->readlink, -                           loc, size); +                           loc, size, xdata);          ret = 0;  out:          if (ret < 0) -                AFR_STACK_UNWIND (readlink, frame, -1, op_errno, NULL, NULL); +                AFR_STACK_UNWIND (readlink, frame, -1, op_errno, NULL, NULL, NULL);          return 0;  } @@ -574,7 +578,7 @@ __filter_xattrs (dict_t *dict)  int32_t  afr_getxattr_cbk (call_frame_t *frame, void *cookie,                    xlator_t *this, int32_t op_ret, int32_t op_errno, -                  dict_t *dict) +                  dict_t *dict, dict_t *xdata)  {          afr_private_t * priv            = NULL;          afr_local_t *   local           = NULL; @@ -608,7 +612,8 @@ afr_getxattr_cbk (call_frame_t *frame, void *cookie,                                     children[next_call_child],                                     children[next_call_child]->fops->getxattr,                                     &local->loc, -                                   local->cont.getxattr.name); +                                   local->cont.getxattr.name, +                                   NULL);          }  out: @@ -616,25 +621,25 @@ out:                  if (op_ret >= 0 && dict)                          __filter_xattrs (dict); -                AFR_STACK_UNWIND (getxattr, frame, op_ret, op_errno, dict); +                AFR_STACK_UNWIND (getxattr, frame, op_ret, op_errno, dict, xdata);          }          return 0;  }  int32_t -afr_getxattr_unwind (call_frame_t *frame, -                     int op_ret, int op_errno, dict_t *dict) +afr_getxattr_unwind (call_frame_t *frame, int op_ret, int op_errno, +                     dict_t *dict, dict_t *xdata)  { -        AFR_STACK_UNWIND (getxattr, frame, op_ret, op_errno, dict); +        AFR_STACK_UNWIND (getxattr, frame, op_ret, op_errno, dict, xdata);          return 0;  }  int32_t  afr_getxattr_clrlk_cbk (call_frame_t *frame, void *cookie,                          xlator_t *this, int32_t op_ret, int32_t op_errno, -                        dict_t *dict) +                        dict_t *dict, dict_t *xdata)  {          afr_local_t     *local                  = NULL;          afr_private_t   *priv                   = NULL; @@ -711,7 +716,7 @@ unlock:                  local->child_errno[cky] = op_errno;                  op_errno = afr_resultant_errno_get (NULL, local->child_errno,                                                      priv->child_count); -                AFR_STACK_UNWIND (getxattr, frame, op_ret, op_errno, xattr); +                AFR_STACK_UNWIND (getxattr, frame, op_ret, op_errno, xattr, xdata);                  if (xattr)                          dict_unref (xattr); @@ -726,7 +731,7 @@ unlock:  int32_t  afr_getxattr_node_uuid_cbk (call_frame_t *frame, void *cookie,                              xlator_t *this, int32_t op_ret, int32_t op_errno, -                            dict_t *dict) +                            dict_t *dict, dict_t *xdata)  {          afr_private_t  *priv            = NULL;          afr_local_t    *local           = NULL; @@ -759,12 +764,13 @@ afr_getxattr_node_uuid_cbk (call_frame_t *frame, void *cookie,                                     children[curr_call_child],                                     children[curr_call_child]->fops->getxattr,                                     &local->loc, -                                   local->cont.getxattr.name); +                                   local->cont.getxattr.name, +                                   NULL);          }   unwind:          if (unwind) -                AFR_STACK_UNWIND (getxattr, frame, op_ret, op_errno, dict); +                AFR_STACK_UNWIND (getxattr, frame, op_ret, op_errno, dict, NULL);          return 0;  } @@ -772,7 +778,7 @@ afr_getxattr_node_uuid_cbk (call_frame_t *frame, void *cookie,  int32_t  afr_getxattr_pathinfo_cbk (call_frame_t *frame, void *cookie,                             xlator_t *this, int32_t op_ret, int32_t op_errno, -                           dict_t *dict) +                           dict_t *dict, dict_t *xdata)  {          afr_local_t *local          = NULL;          int32_t      callcnt        = 0; @@ -871,7 +877,8 @@ afr_getxattr_pathinfo_cbk (call_frame_t *frame, void *cookie,                                  " key in dict");          unwind: -                AFR_STACK_UNWIND (getxattr, frame, op_ret, op_errno, nxattr); +                AFR_STACK_UNWIND (getxattr, frame, op_ret, op_errno, nxattr, +                                  xdata);                  if (nxattr)                          dict_unref (nxattr); @@ -924,14 +931,14 @@ afr_getxattr_frm_all_children (xlator_t *this, call_frame_t *frame,                  STACK_WIND_COOKIE (frame, cbk,                                     (void *) (long) i,                                     children[i], children[i]->fops->getxattr, -                                   loc, name); +                                   loc, name, NULL);          }          return;  }  int32_t  afr_getxattr (call_frame_t *frame, xlator_t *this, -              loc_t *loc, const char *name) +              loc_t *loc, const char *name, dict_t *xdata)  {          afr_private_t           *priv         = NULL;          xlator_t                **children    = NULL; @@ -963,22 +970,71 @@ afr_getxattr (call_frame_t *frame, xlator_t *this,                  goto out;          loc_copy (&local->loc, loc); -        if (name) -                local->cont.getxattr.name = gf_strdup (name); +        if (!name) +                goto no_name; + +        local->cont.getxattr.name = gf_strdup (name); + +        if (!strncmp (name, AFR_XATTR_PREFIX, +                      strlen (AFR_XATTR_PREFIX))) { +                gf_log (this->name, GF_LOG_INFO, +                        "%s: no data present for key %s", +                        loc->path, name); +                op_errno = ENODATA; +                goto out; +        } +        if ((strcmp (GF_XATTR_MARKER_KEY, name) == 0) +            && (-1 == frame->root->pid)) { + +                local->marker.call_count = priv->child_count; + +                sub_volumes = alloca ( priv->child_count * sizeof (xlator_t *)); +                for (i = 0, trav = this->children; trav ; +                     trav = trav->next, i++) { + +                        *(sub_volumes + i)  = trav->xlator; +                } +                if (cluster_getmarkerattr (frame, this, loc, name, +                                           local, afr_getxattr_unwind, +                                           sub_volumes, +                                           priv->child_count, +                                           MARKER_UUID_TYPE, +                                           priv->vol_uuid)) { -        if (name) { -                if (!strncmp (name, AFR_XATTR_PREFIX, -                              strlen (AFR_XATTR_PREFIX))) {                          gf_log (this->name, GF_LOG_INFO, -                                "%s: no data present for key %s", +                                "%s: failed to get marker attr (%s)",                                  loc->path, name); -                        op_errno = ENODATA; +                        op_errno = EINVAL;                          goto out;                  } -                if ((strcmp (GF_XATTR_MARKER_KEY, name) == 0) -                    && (-1 == frame->root->pid)) { +                return 0; +        } + +        /* +         * if we are doing getxattr with pathinfo as the key then we +         * collect information from all childs +         */ +        if (afr_is_special_xattr (name, &cbk)) { +                afr_getxattr_frm_all_children (this, frame, name, +                                               loc, cbk); +                return 0; +        } + +        if (XATTR_IS_NODE_UUID (name)) { +                i = 0; +                STACK_WIND_COOKIE (frame, afr_getxattr_node_uuid_cbk, +                                   (void *) (long) i, +                                   children[i], +                                   children[i]->fops->getxattr, +                                   loc, name, xdata); +                return 0; +        } + +        if (*priv->vol_uuid) { +                if ((match_uuid_local (name, priv->vol_uuid) == 0) +                    && (-1 == frame->root->pid)) {                          local->marker.call_count = priv->child_count;                          sub_volumes = alloca ( priv->child_count * sizeof (xlator_t *)); @@ -986,15 +1042,16 @@ afr_getxattr (call_frame_t *frame, xlator_t *this,                               trav = trav->next, i++) {                                  *(sub_volumes + i)  = trav->xlator; +                          } -                        if (cluster_getmarkerattr (frame, this, loc, name, -                                                   local, afr_getxattr_unwind, +                        if (cluster_getmarkerattr (frame, this, loc, +                                                   name, local, +                                                   afr_getxattr_unwind,                                                     sub_volumes,                                                     priv->child_count, -                                                   MARKER_UUID_TYPE, +                                                   MARKER_XTIME_TYPE,                                                     priv->vol_uuid)) { -                                  gf_log (this->name, GF_LOG_INFO,                                          "%s: failed to get marker attr (%s)",                                          loc->path, name); @@ -1004,60 +1061,9 @@ afr_getxattr (call_frame_t *frame, xlator_t *this,                          return 0;                  } - -                /* -                 * if we are doing getxattr with pathinfo as the key then we -                 * collect information from all childs -                 */ -                if (afr_is_special_xattr (name, &cbk)) { -                        afr_getxattr_frm_all_children (this, frame, name, -                                                       loc, cbk); -                        return 0; -                } - -                if (XATTR_IS_NODE_UUID (name)) { -                        i = 0; -                        STACK_WIND_COOKIE (frame, afr_getxattr_node_uuid_cbk, -                                           (void *) (long) i, -                                           children[i], -                                           children[i]->fops->getxattr, -                                           loc, name); -                        return 0; -                } - -                if (*priv->vol_uuid) { -                        if ((match_uuid_local (name, priv->vol_uuid) == 0) -                            && (-1 == frame->root->pid)) { - -                                local->marker.call_count = priv->child_count; - -                                sub_volumes = alloca ( priv->child_count * sizeof (xlator_t *)); -                                for (i = 0, trav = this->children; trav ; -                                     trav = trav->next, i++) { - -                                        *(sub_volumes + i)  = trav->xlator; - -                                } - -                                if (cluster_getmarkerattr (frame, this, loc, -                                                           name, local, -                                                           afr_getxattr_unwind, -                                                           sub_volumes, -                                                           priv->child_count, -                                                           MARKER_XTIME_TYPE, -                                                           priv->vol_uuid)) { -                                        gf_log (this->name, GF_LOG_INFO, -                                                "%s: failed to get marker attr (%s)", -                                                loc->path, name); -                                        op_errno = EINVAL; -                                        goto out; -                                } - -                                return 0; -                        } -                }          } +no_name:          local->fresh_children = afr_children_create (priv->child_count);          if (!local->fresh_children) {                  op_errno = ENOMEM; @@ -1078,12 +1084,12 @@ afr_getxattr (call_frame_t *frame, xlator_t *this,                             (void *) (long) call_child,                             children[call_child],                             children[call_child]->fops->getxattr, -                           loc, name); +                           loc, name, xdata);          ret = 0;  out:          if (ret < 0) -                AFR_STACK_UNWIND (getxattr, frame, -1, op_errno, NULL); +                AFR_STACK_UNWIND (getxattr, frame, -1, op_errno, NULL, NULL);          return 0;  } @@ -1093,7 +1099,7 @@ out:  int32_t  afr_fgetxattr_cbk (call_frame_t *frame, void *cookie,                     xlator_t *this, int32_t op_ret, int32_t op_errno, -                   dict_t *dict) +                   dict_t *dict, dict_t *xdata)  {          afr_private_t * priv            = NULL;          afr_local_t *   local           = NULL; @@ -1127,7 +1133,8 @@ afr_fgetxattr_cbk (call_frame_t *frame, void *cookie,                                     children[next_call_child],                                     children[next_call_child]->fops->fgetxattr,                                     local->fd, -                                   local->cont.getxattr.name); +                                   local->cont.getxattr.name, +                                   NULL);          }  out: @@ -1135,7 +1142,8 @@ out:                  if (op_ret >= 0 && dict)                          __filter_xattrs (dict); -                AFR_STACK_UNWIND (fgetxattr, frame, op_ret, op_errno, dict); +                AFR_STACK_UNWIND (fgetxattr, frame, op_ret, op_errno, dict, +                                  xdata);          }          return 0; @@ -1143,16 +1151,16 @@ out:  int32_t  afr_fgetxattr_unwind (call_frame_t *frame, -                      int op_ret, int op_errno, dict_t *dict) +                      int op_ret, int op_errno, dict_t *dict, dict_t *xdata)  { -        AFR_STACK_UNWIND (fgetxattr, frame, op_ret, op_errno, dict); +        AFR_STACK_UNWIND (fgetxattr, frame, op_ret, op_errno, dict, xdata);          return 0;  }  int32_t  afr_fgetxattr (call_frame_t *frame, xlator_t *this, -               fd_t *fd, const char *name) +               fd_t *fd, const char *name, dict_t *xdata)  {          afr_private_t   *priv         = NULL;          xlator_t        **children    = NULL; @@ -1208,12 +1216,12 @@ afr_fgetxattr (call_frame_t *frame, xlator_t *this,                             (void *) (long) call_child,                             children[call_child],                             children[call_child]->fops->fgetxattr, -                           fd, name); +                           fd, name, xdata);          op_ret = 0;  out:          if (op_ret == -1) { -                AFR_STACK_UNWIND (fgetxattr, frame, op_ret, op_errno, NULL); +                AFR_STACK_UNWIND (fgetxattr, frame, op_ret, op_errno, NULL, NULL);          }          return 0;  } @@ -1239,7 +1247,7 @@ int32_t  afr_readv_cbk (call_frame_t *frame, void *cookie,                 xlator_t *this, int32_t op_ret, int32_t op_errno,                 struct iovec *vector, int32_t count, struct iatt *buf, -               struct iobref *iobref) +               struct iobref *iobref, dict_t *xdata)  {          afr_private_t * priv            = NULL;          afr_local_t *   local           = NULL; @@ -1281,13 +1289,14 @@ afr_readv_cbk (call_frame_t *frame, void *cookie,                                     children[next_call_child]->fops->readv,                                     local->fd, local->cont.readv.size,                                     local->cont.readv.offset, -                                   local->cont.readv.flags); +                                   local->cont.readv.flags, +                                   NULL);          }  out:          if (unwind) {                  AFR_STACK_UNWIND (readv, frame, op_ret, op_errno, -                                  vector, count, buf, iobref); +                                  vector, count, buf, iobref, xdata);          }          return 0; @@ -1296,7 +1305,7 @@ out:  int32_t  afr_readv (call_frame_t *frame, xlator_t *this, -           fd_t *fd, size_t size, off_t offset, uint32_t flags) +           fd_t *fd, size_t size, off_t offset, uint32_t flags, dict_t *xdata)  {          afr_private_t * priv       = NULL;          afr_local_t   * local      = NULL; @@ -1352,13 +1361,13 @@ afr_readv (call_frame_t *frame, xlator_t *this,                             (void *) (long) call_child,                             children[call_child],                             children[call_child]->fops->readv, -                           fd, size, offset, flags); +                           fd, size, offset, flags, xdata);          ret = 0;  out:          if (ret < 0) {                  AFR_STACK_UNWIND (readv, frame, -1, op_errno, NULL, 0, NULL, -                                  NULL); +                                  NULL, NULL);          }          return 0;  } diff --git a/xlators/cluster/afr/src/afr-inode-read.h b/xlators/cluster/afr/src/afr-inode-read.h index 5ec7411b1..fb04ec418 100644 --- a/xlators/cluster/afr/src/afr-inode-read.h +++ b/xlators/cluster/afr/src/afr-inode-read.h @@ -22,30 +22,30 @@  int32_t  afr_access (call_frame_t *frame, xlator_t *this, -	    loc_t *loc, int32_t mask); +	    loc_t *loc, int32_t mask, dict_t *xdata);  int32_t  afr_stat (call_frame_t *frame, xlator_t *this, -	  loc_t *loc); +	  loc_t *loc, dict_t *xdata);  int32_t  afr_fstat (call_frame_t *frame, xlator_t *this, -	   fd_t *fd); +	   fd_t *fd, dict_t *xdata);  int32_t  afr_readlink (call_frame_t *frame, xlator_t *this, -	      loc_t *loc, size_t size); +	      loc_t *loc, size_t size, dict_t *xdata);  int32_t  afr_readv (call_frame_t *frame, xlator_t *this, -	   fd_t *fd, size_t size, off_t offset, uint32_t flags); +	   fd_t *fd, size_t size, off_t offset, uint32_t flags, dict_t *xdata);  int32_t  afr_getxattr (call_frame_t *frame, xlator_t *this, -	      loc_t *loc, const char *name); +	      loc_t *loc, const char *name, dict_t *xdata);  int32_t  afr_fgetxattr (call_frame_t *frame, xlator_t *this, -               fd_t *fd, const char *name); +               fd_t *fd, const char *name, dict_t *xdata);  #endif /* __INODE_READ_H__ */ diff --git a/xlators/cluster/afr/src/afr-inode-write.c b/xlators/cluster/afr/src/afr-inode-write.c index 1d25949db..368a68bd6 100644 --- a/xlators/cluster/afr/src/afr-inode-write.c +++ b/xlators/cluster/afr/src/afr-inode-write.c @@ -70,7 +70,8 @@ afr_writev_unwind (call_frame_t *frame, xlator_t *this)                  AFR_STACK_UNWIND (writev, main_frame,                                    local->op_ret, local->op_errno,                                    &local->cont.writev.prebuf, -                                  &local->cont.writev.postbuf); +                                  &local->cont.writev.postbuf, +                                  NULL);          }          return 0;  } @@ -79,7 +80,7 @@ afr_writev_unwind (call_frame_t *frame, xlator_t *this)  int  afr_writev_wind_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)  {          afr_local_t *   local = NULL;          int child_index = (long) cookie; @@ -158,7 +159,8 @@ afr_writev_wind (call_frame_t *frame, xlator_t *this)                                             local->cont.writev.count,                                             local->cont.writev.offset,                                             local->cont.writev.flags, -                                           local->cont.writev.iobref); +                                           local->cont.writev.iobref, +                                           NULL);                          if (!--call_count)                                  break; @@ -231,7 +233,7 @@ out:          if (op_ret == -1) {                  if (transaction_frame)                          AFR_STACK_DESTROY (transaction_frame); -                AFR_STACK_UNWIND (writev, frame, op_ret, op_errno, NULL, NULL); +                AFR_STACK_UNWIND (writev, frame, op_ret, op_errno, NULL, NULL, NULL);          }          return 0; @@ -442,7 +444,7 @@ out:  int  afr_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)  {          afr_private_t * priv  = NULL;          afr_local_t   * local = NULL; @@ -482,7 +484,7 @@ afr_writev (call_frame_t *frame, xlator_t *this, fd_t *fd,          ret = 0;  out:          if (ret < 0) -                AFR_STACK_UNWIND (writev, frame, -1, op_errno, NULL, NULL); +                AFR_STACK_UNWIND (writev, frame, -1, op_errno, NULL, NULL, NULL);          return 0;  } @@ -512,7 +514,8 @@ afr_truncate_unwind (call_frame_t *frame, xlator_t *this)                  AFR_STACK_UNWIND (truncate, main_frame, local->op_ret,                                    local->op_errno,                                    &local->cont.truncate.prebuf, -                                  &local->cont.truncate.postbuf); +                                  &local->cont.truncate.postbuf, +                                  NULL);          }          return 0; @@ -522,7 +525,7 @@ afr_truncate_unwind (call_frame_t *frame, xlator_t *this)  int  afr_truncate_wind_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)  {          afr_local_t *   local = NULL;          afr_private_t * priv  = NULL; @@ -609,7 +612,8 @@ afr_truncate_wind (call_frame_t *frame, xlator_t *this)                                             priv->children[i],                                             priv->children[i]->fops->truncate,                                             &local->loc, -                                           local->cont.truncate.offset); +                                           local->cont.truncate.offset, +                                           NULL);                          if (!--call_count)                                  break; @@ -637,7 +641,7 @@ afr_truncate_done (call_frame_t *frame, xlator_t *this)  int  afr_truncate (call_frame_t *frame, xlator_t *this, -              loc_t *loc, off_t offset) +              loc_t *loc, off_t offset, dict_t *xdata)  {          afr_private_t * priv  = NULL;          afr_local_t   * local = NULL; @@ -685,7 +689,7 @@ out:          if (ret < 0) {                  if (transaction_frame)                          AFR_STACK_DESTROY (transaction_frame); -                AFR_STACK_UNWIND (truncate, frame, -1, op_errno, NULL, NULL); +                AFR_STACK_UNWIND (truncate, frame, -1, op_errno, NULL, NULL, NULL);          }          return 0; @@ -717,7 +721,8 @@ afr_ftruncate_unwind (call_frame_t *frame, xlator_t *this)                  AFR_STACK_UNWIND (ftruncate, main_frame, local->op_ret,                                    local->op_errno,                                    &local->cont.ftruncate.prebuf, -                                  &local->cont.ftruncate.postbuf); +                                  &local->cont.ftruncate.postbuf, +                                  NULL);          }          return 0;  } @@ -726,7 +731,7 @@ afr_ftruncate_unwind (call_frame_t *frame, xlator_t *this)  int  afr_ftruncate_wind_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)  {          afr_local_t *   local = NULL;          afr_private_t * priv  = NULL; @@ -812,7 +817,9 @@ afr_ftruncate_wind (call_frame_t *frame, xlator_t *this)                                             (void *) (long) i,                                             priv->children[i],                                             priv->children[i]->fops->ftruncate, -                                           local->fd, local->cont.ftruncate.offset); +                                           local->fd, +                                           local->cont.ftruncate.offset, +                                           NULL);                          if (!--call_count)                                  break; @@ -874,7 +881,8 @@ out:          if (op_ret == -1) {                  if (transaction_frame)                          AFR_STACK_DESTROY (transaction_frame); -                AFR_STACK_UNWIND (ftruncate, frame, op_ret, op_errno, NULL, NULL); +                AFR_STACK_UNWIND (ftruncate, frame, op_ret, op_errno, NULL, +                                  NULL, NULL);          }          return 0; @@ -883,7 +891,7 @@ out:  int  afr_ftruncate (call_frame_t *frame, xlator_t *this, -               fd_t *fd, off_t offset) +               fd_t *fd, off_t offset, dict_t *xdata)  {          afr_private_t * priv  = NULL;          afr_local_t   * local = NULL; @@ -922,7 +930,7 @@ out:          if (ret < 0) {                  if (transaction_frame)                          AFR_STACK_DESTROY (transaction_frame); -                AFR_STACK_UNWIND (ftruncate, frame, -1, op_errno, NULL, NULL); +                AFR_STACK_UNWIND (ftruncate, frame, -1, op_errno, NULL, NULL, NULL);          }          return 0; @@ -952,7 +960,8 @@ afr_setattr_unwind (call_frame_t *frame, xlator_t *this)                  AFR_STACK_UNWIND (setattr, main_frame, local->op_ret,                                    local->op_errno,                                    &local->cont.setattr.preop_buf, -                                  &local->cont.setattr.postop_buf); +                                  &local->cont.setattr.postop_buf, +                                  NULL);          }          return 0; @@ -962,7 +971,7 @@ afr_setattr_unwind (call_frame_t *frame, xlator_t *this)  int  afr_setattr_wind_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)  {          afr_local_t *   local = NULL;          afr_private_t * priv  = NULL; @@ -1050,7 +1059,8 @@ afr_setattr_wind (call_frame_t *frame, xlator_t *this)                                             priv->children[i]->fops->setattr,                                             &local->loc,                                             &local->cont.setattr.in_buf, -                                           local->cont.setattr.valid); +                                           local->cont.setattr.valid, +                                           NULL);                          if (!--call_count)                                  break; @@ -1078,7 +1088,7 @@ afr_setattr_done (call_frame_t *frame, xlator_t *this)  int  afr_setattr (call_frame_t *frame, xlator_t *this, -             loc_t *loc, struct iatt *buf, int32_t valid) +             loc_t *loc, struct iatt *buf, int32_t valid, dict_t *xdata)  {          afr_private_t * priv  = NULL;          afr_local_t   * local = NULL; @@ -1127,7 +1137,7 @@ out:          if (ret < 0) {                  if (transaction_frame)                          AFR_STACK_DESTROY (transaction_frame); -                AFR_STACK_UNWIND (setattr, frame, -1, op_errno, NULL, NULL); +                AFR_STACK_UNWIND (setattr, frame, -1, op_errno, NULL, NULL, NULL);          }          return 0; @@ -1155,7 +1165,8 @@ afr_fsetattr_unwind (call_frame_t *frame, xlator_t *this)                  AFR_STACK_UNWIND (fsetattr, main_frame, local->op_ret,                                    local->op_errno,                                    &local->cont.fsetattr.preop_buf, -                                  &local->cont.fsetattr.postop_buf); +                                  &local->cont.fsetattr.postop_buf, +                                  NULL);          }          return 0; @@ -1165,7 +1176,7 @@ afr_fsetattr_unwind (call_frame_t *frame, xlator_t *this)  int  afr_fsetattr_wind_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)  {          afr_local_t *   local = NULL;          afr_private_t * priv  = NULL; @@ -1253,7 +1264,8 @@ afr_fsetattr_wind (call_frame_t *frame, xlator_t *this)                                             priv->children[i]->fops->fsetattr,                                             local->fd,                                             &local->cont.fsetattr.in_buf, -                                           local->cont.fsetattr.valid); +                                           local->cont.fsetattr.valid, +                                           NULL);                          if (!--call_count)                                  break; @@ -1280,7 +1292,7 @@ afr_fsetattr_done (call_frame_t *frame, xlator_t *this)  int  afr_fsetattr (call_frame_t *frame, xlator_t *this, -              fd_t *fd, struct iatt *buf, int32_t valid) +              fd_t *fd, struct iatt *buf, int32_t valid, dict_t *xdata)  {          afr_private_t * priv  = NULL;          afr_local_t   * local = NULL; @@ -1335,7 +1347,7 @@ out:          if (ret < 0) {                  if (transaction_frame)                          AFR_STACK_DESTROY (transaction_frame); -                AFR_STACK_UNWIND (fsetattr, frame, -1, op_errno, NULL, NULL); +                AFR_STACK_UNWIND (fsetattr, frame, -1, op_errno, NULL, NULL, NULL);          }          return 0; @@ -1363,7 +1375,8 @@ afr_setxattr_unwind (call_frame_t *frame, xlator_t *this)          if (main_frame) {                  AFR_STACK_UNWIND (setxattr, main_frame, -                                  local->op_ret, local->op_errno); +                                  local->op_ret, local->op_errno, +                                  NULL);          }          return 0;  } @@ -1371,7 +1384,7 @@ afr_setxattr_unwind (call_frame_t *frame, xlator_t *this)  int  afr_setxattr_wind_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)  {          afr_local_t      *local         = NULL;          afr_private_t    *priv          = NULL; @@ -1440,7 +1453,8 @@ afr_setxattr_wind (call_frame_t *frame, xlator_t *this)                                             priv->children[i]->fops->setxattr,                                             &local->loc,                                             local->cont.setxattr.dict, -                                           local->cont.setxattr.flags); +                                           local->cont.setxattr.flags, +                                           NULL);                          if (!--call_count)                                  break; @@ -1465,7 +1479,7 @@ afr_setxattr_done (call_frame_t *frame, xlator_t *this)  int  afr_setxattr (call_frame_t *frame, xlator_t *this, -              loc_t *loc, dict_t *dict, int32_t flags) +              loc_t *loc, dict_t *dict, int32_t flags, dict_t *xdata)  {          afr_private_t  *priv              = NULL;          afr_local_t    *local             = NULL; @@ -1521,7 +1535,7 @@ out:          if (ret < 0) {                  if (transaction_frame)                          AFR_STACK_DESTROY (transaction_frame); -                AFR_STACK_UNWIND (setxattr, frame, -1, op_errno); +                AFR_STACK_UNWIND (setxattr, frame, -1, op_errno, NULL);          }          return 0; @@ -1548,7 +1562,8 @@ afr_fsetxattr_unwind (call_frame_t *frame, xlator_t *this)          if (main_frame) {                  AFR_STACK_UNWIND (fsetxattr, main_frame, -                                  local->op_ret, local->op_errno); +                                  local->op_ret, local->op_errno, +                                  NULL);          }          return 0;  } @@ -1556,7 +1571,7 @@ afr_fsetxattr_unwind (call_frame_t *frame, xlator_t *this)  int  afr_fsetxattr_wind_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)  {          afr_local_t     *local       = NULL;          afr_private_t   *priv        = NULL; @@ -1625,7 +1640,8 @@ afr_fsetxattr_wind (call_frame_t *frame, xlator_t *this)                                             priv->children[i]->fops->fsetxattr,                                             local->fd,                                             local->cont.fsetxattr.dict, -                                           local->cont.fsetxattr.flags); +                                           local->cont.fsetxattr.flags, +                                           NULL);                          if (!--call_count)                                  break; @@ -1650,7 +1666,7 @@ afr_fsetxattr_done (call_frame_t *frame, xlator_t *this)  int  afr_fsetxattr (call_frame_t *frame, xlator_t *this, -               fd_t *fd, dict_t *dict, int32_t flags) +               fd_t *fd, dict_t *dict, int32_t flags, dict_t *xdata)  {          afr_private_t    *priv              = NULL;          afr_local_t      *local             = NULL; @@ -1711,7 +1727,7 @@ out:          if (ret < 0) {                  if (transaction_frame)                          AFR_STACK_DESTROY (transaction_frame); -                AFR_STACK_UNWIND (fsetxattr, frame, -1, op_errno); +                AFR_STACK_UNWIND (fsetxattr, frame, -1, op_errno, NULL);          }          return 0; @@ -1741,7 +1757,8 @@ afr_removexattr_unwind (call_frame_t *frame, xlator_t *this)          if (main_frame) {                  AFR_STACK_UNWIND (removexattr, main_frame, -                                  local->op_ret, local->op_errno); +                                  local->op_ret, local->op_errno, +                                  NULL);          }          return 0;  } @@ -1749,7 +1766,7 @@ afr_removexattr_unwind (call_frame_t *frame, xlator_t *this)  int  afr_removexattr_wind_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)  {          afr_local_t *   local = NULL;          afr_private_t * priv  = NULL; @@ -1817,7 +1834,8 @@ afr_removexattr_wind (call_frame_t *frame, xlator_t *this)                                             priv->children[i],                                             priv->children[i]->fops->removexattr,                                             &local->loc, -                                           local->cont.removexattr.name); +                                           local->cont.removexattr.name, +                                           NULL);                          if (!--call_count)                                  break; @@ -1843,7 +1861,7 @@ afr_removexattr_done (call_frame_t *frame, xlator_t *this)  int  afr_removexattr (call_frame_t *frame, xlator_t *this, -                 loc_t *loc, const char *name) +                 loc_t *loc, const char *name, dict_t *xdata)  {          afr_private_t   *priv              = NULL;          afr_local_t     *local             = NULL; @@ -1899,7 +1917,7 @@ out:          if (ret < 0) {                  if (transaction_frame)                          AFR_STACK_DESTROY (transaction_frame); -                AFR_STACK_UNWIND (removexattr, frame, -1, op_errno); +                AFR_STACK_UNWIND (removexattr, frame, -1, op_errno, NULL);          }          return 0; @@ -1924,7 +1942,8 @@ afr_fremovexattr_unwind (call_frame_t *frame, xlator_t *this)          if (main_frame) {                  AFR_STACK_UNWIND (fremovexattr, main_frame, -                                  local->op_ret, local->op_errno); +                                  local->op_ret, local->op_errno, +                                  NULL);          }          return 0;  } @@ -1932,7 +1951,7 @@ afr_fremovexattr_unwind (call_frame_t *frame, xlator_t *this)  int  afr_fremovexattr_wind_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)  {          afr_local_t *   local = NULL;          afr_private_t * priv  = NULL; @@ -2000,7 +2019,8 @@ afr_fremovexattr_wind (call_frame_t *frame, xlator_t *this)                                             priv->children[i],                                             priv->children[i]->fops->fremovexattr,                                             local->fd, -                                           local->cont.removexattr.name); +                                           local->cont.removexattr.name, +                                           NULL);                          if (!--call_count)                                  break; @@ -2026,7 +2046,7 @@ afr_fremovexattr_done (call_frame_t *frame, xlator_t *this)  int  afr_fremovexattr (call_frame_t *frame, xlator_t *this, -                  fd_t *fd, const char *name) +                  fd_t *fd, const char *name, dict_t *xdata)  {          afr_private_t * priv  = NULL;          afr_local_t   * local = NULL; @@ -2086,7 +2106,7 @@ out:          if (op_ret == -1) {                  if (transaction_frame)                          AFR_STACK_DESTROY (transaction_frame); -                AFR_STACK_UNWIND (fremovexattr, frame, op_ret, op_errno); +                AFR_STACK_UNWIND (fremovexattr, frame, op_ret, op_errno, NULL);          }          return 0; diff --git a/xlators/cluster/afr/src/afr-inode-write.h b/xlators/cluster/afr/src/afr-inode-write.h index 729a490d5..437ee687e 100644 --- a/xlators/cluster/afr/src/afr-inode-write.h +++ b/xlators/cluster/afr/src/afr-inode-write.h @@ -22,59 +22,59 @@  int32_t  afr_chmod (call_frame_t *frame, xlator_t *this, -	   loc_t *loc, mode_t mode); +	   loc_t *loc, mode_t mode, dict_t *xdata);  int32_t  afr_chown (call_frame_t *frame, xlator_t *this, -	   loc_t *loc, uid_t uid, gid_t gid); +	   loc_t *loc, uid_t uid, gid_t gid, dict_t *xdata);  int  afr_fchown (call_frame_t *frame, xlator_t *this, -	    fd_t *fd, uid_t uid, gid_t gid); +	    fd_t *fd, uid_t uid, gid_t gid, dict_t *xdata);  int32_t  afr_fchmod (call_frame_t *frame, xlator_t *this, -	    fd_t *fd, mode_t mode); +	    fd_t *fd, mode_t mode, dict_t *xdata);  int32_t  afr_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);  int32_t  afr_truncate (call_frame_t *frame, xlator_t *this, -	      loc_t *loc, off_t offset); +	      loc_t *loc, off_t offset, dict_t *xdata);  int32_t  afr_ftruncate (call_frame_t *frame, xlator_t *this, -	       fd_t *fd, off_t offset); +	       fd_t *fd, off_t offset, dict_t *xdata);  int32_t  afr_utimens (call_frame_t *frame, xlator_t *this, -	     loc_t *loc, struct timespec tv[2]); +	     loc_t *loc, struct timespec tv[2], dict_t *xdata);  int  afr_setattr (call_frame_t *frame, xlator_t *this, -             loc_t *loc, struct iatt *buf, int32_t valid); +             loc_t *loc, struct iatt *buf, int32_t valid, dict_t *xdata);  int  afr_fsetattr (call_frame_t *frame, xlator_t *this, -              fd_t *fd, struct iatt *buf, int32_t valid); +              fd_t *fd, struct iatt *buf, int32_t valid, dict_t *xdata);  int32_t  afr_setxattr (call_frame_t *frame, xlator_t *this, -              loc_t *loc, dict_t *dict, int32_t flags); +              loc_t *loc, dict_t *dict, int32_t flags, dict_t *xdata);  int32_t  afr_fsetxattr (call_frame_t *frame, xlator_t *this, -               fd_t *fd, dict_t *dict, int32_t flags); +               fd_t *fd, dict_t *dict, int32_t flags, dict_t *xdata);  int32_t  afr_removexattr (call_frame_t *frame, xlator_t *this, -		 loc_t *loc, const char *name); +		 loc_t *loc, const char *name, dict_t *xdata);  int32_t  afr_fremovexattr (call_frame_t *frame, xlator_t *this, -                  fd_t *fd, const char *name); +                  fd_t *fd, const char *name, dict_t *xdata);  #endif /* __INODE_WRITE_H__ */ diff --git a/xlators/cluster/afr/src/afr-lk-common.c b/xlators/cluster/afr/src/afr-lk-common.c index 55dd60e88..dfdde2975 100644 --- a/xlators/cluster/afr/src/afr-lk-common.c +++ b/xlators/cluster/afr/src/afr-lk-common.c @@ -527,7 +527,7 @@ afr_locked_nodes_count (unsigned char *locked_nodes, int child_count)  /* FIXME: What if UNLOCK fails */  static int32_t  afr_unlock_common_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)  {          afr_local_t         *local    = NULL;          afr_internal_lock_t *int_lock = NULL; @@ -553,7 +553,7 @@ afr_unlock_common_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  static int32_t  afr_unlock_inodelk_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)  {          afr_local_t         *local = NULL;          afr_internal_lock_t *int_lock = NULL; @@ -577,7 +577,7 @@ afr_unlock_inodelk_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          if (local->transaction.eager_lock)                  local->transaction.eager_lock[child_index] = 0; -        afr_unlock_common_cbk (frame, cookie, this, op_ret, op_errno); +        afr_unlock_common_cbk (frame, cookie, this, op_ret, op_errno, xdata);          return 0; @@ -654,7 +654,7 @@ afr_unlock_inodelk (call_frame_t *frame, xlator_t *this)                          if (piggyback) {                                  afr_unlock_inodelk_cbk (frame, (void *) (long) i, -                                                        this, 1, 0); +                                                        this, 1, 0, NULL);                                  if (!--call_count)                                          break;                                  continue; @@ -676,7 +676,7 @@ afr_unlock_inodelk (call_frame_t *frame, xlator_t *this)                                             priv->children[i],                                             priv->children[i]->fops->finodelk,                                             this->name, local->fd, -                                           F_SETLK, flock_use); +                                           F_SETLK, flock_use, NULL);                          if (!--call_count)                                  break; @@ -691,7 +691,7 @@ afr_unlock_inodelk (call_frame_t *frame, xlator_t *this)                                             priv->children[i],                                             priv->children[i]->fops->inodelk,                                             this->name, &local->loc, -                                           F_SETLK, &flock); +                                           F_SETLK, &flock, NULL);                          if (!--call_count)                                  break; @@ -703,7 +703,7 @@ out:  static int32_t  afr_unlock_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)  {          afr_local_t         *local = NULL;          int32_t             child_index = (long)cookie; @@ -720,7 +720,7 @@ afr_unlock_entrylk_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          local->loc.path, child_index, strerror (op_errno));          } -        afr_unlock_common_cbk (frame, cookie, this, op_ret, op_errno); +        afr_unlock_common_cbk (frame, cookie, this, op_ret, op_errno, NULL);          return 0;  } @@ -767,7 +767,7 @@ afr_unlock_entrylk (call_frame_t *frame, xlator_t *this)                                             priv->children[i]->fops->entrylk,                                             this->name,                                             loc, basename, -                                           ENTRYLK_UNLOCK, ENTRYLK_WRLCK); +                                           ENTRYLK_UNLOCK, ENTRYLK_WRLCK, NULL);                          if (!--call_count)                                  break; @@ -781,7 +781,7 @@ out:  static int32_t  afr_lock_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)  {          afr_internal_lock_t *int_lock = NULL;          afr_local_t         *local    = NULL; @@ -824,20 +824,20 @@ afr_lock_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  static int32_t  afr_blocking_inodelk_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)  {          AFR_TRACE_INODELK_OUT (frame, this, AFR_INODELK_TRANSACTION,                                 AFR_LOCK_OP, NULL, op_ret,                                 op_errno, (long) cookie); -        afr_lock_cbk (frame, cookie, this, op_ret, op_errno); +        afr_lock_cbk (frame, cookie, this, op_ret, op_errno, xdata);          return 0;  }  static int32_t  afr_lock_lower_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)  {          afr_internal_lock_t *int_lock    = NULL;          afr_private_t       *priv        = NULL; @@ -901,7 +901,7 @@ afr_lock_lower_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                             priv->children[child_index],                             priv->children[child_index]->fops->entrylk,                             this->name, higher, higher_name, -                           ENTRYLK_LOCK, ENTRYLK_WRLCK); +                           ENTRYLK_LOCK, ENTRYLK_WRLCK, NULL);  out:          return 0; @@ -909,13 +909,13 @@ out:  static int32_t  afr_blocking_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)  {          AFR_TRACE_ENTRYLK_OUT (frame, this, AFR_ENTRYLK_TRANSACTION,                                 AFR_LOCK_OP, NULL, op_ret,                                 op_errno, (long)cookie); -        afr_lock_cbk (frame, cookie, this, op_ret, op_errno); +        afr_lock_cbk (frame, cookie, this, op_ret, op_errno, xdata);          return 0;  } @@ -1052,7 +1052,7 @@ afr_lock_blocking (call_frame_t *frame, xlator_t *this, int child_index)                                             priv->children[child_index],                                             priv->children[child_index]->fops->finodelk,                                             this->name, local->fd, -                                           F_SETLKW, &flock); +                                           F_SETLKW, &flock, NULL);                  } else {                          AFR_TRACE_INODELK_IN (frame, this, @@ -1065,7 +1065,7 @@ afr_lock_blocking (call_frame_t *frame, xlator_t *this, int child_index)                                             priv->children[child_index],                                             priv->children[child_index]->fops->inodelk,                                             this->name, &local->loc, -                                           F_SETLKW, &flock); +                                           F_SETLKW, &flock, NULL);                  }                  break; @@ -1090,7 +1090,7 @@ afr_lock_blocking (call_frame_t *frame, xlator_t *this, int child_index)                                     priv->children[child_index],                                     priv->children[child_index]->fops->entrylk,                                     this->name, lower, lower_name, -                                   ENTRYLK_LOCK, ENTRYLK_WRLCK); +                                   ENTRYLK_LOCK, ENTRYLK_WRLCK, NULL);                  break;          } @@ -1108,7 +1108,7 @@ afr_lock_blocking (call_frame_t *frame, xlator_t *this, int child_index)                                             priv->children[child_index]->fops->fentrylk,                                             this->name, local->fd,                                             local->transaction.basename, -                                           ENTRYLK_LOCK, ENTRYLK_WRLCK); +                                           ENTRYLK_LOCK, ENTRYLK_WRLCK, NULL);                  } else {                          AFR_TRACE_ENTRYLK_IN (frame, this,                                                AFR_ENTRYLK_TRANSACTION, @@ -1122,7 +1122,7 @@ afr_lock_blocking (call_frame_t *frame, xlator_t *this, int child_index)                                             this->name,                                             &local->transaction.parent_loc,                                             local->transaction.basename, -                                           ENTRYLK_LOCK, ENTRYLK_WRLCK); +                                           ENTRYLK_LOCK, ENTRYLK_WRLCK, NULL);                  }                  break; @@ -1166,7 +1166,7 @@ afr_blocking_lock (call_frame_t *frame, xlator_t *this)  static int32_t  afr_nonblocking_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)  {          afr_internal_lock_t *int_lock = NULL;          afr_local_t         *local    = NULL; @@ -1305,7 +1305,8 @@ afr_nonblocking_entrylk (call_frame_t *frame, xlator_t *this)                                                     priv->children[i]->fops->fentrylk,                                                     this->name, local->fd,                                                     basename, -                                                   ENTRYLK_LOCK_NB, ENTRYLK_WRLCK); +                                                   ENTRYLK_LOCK_NB, ENTRYLK_WRLCK, +                                                   NULL);                          }                  }          } else { @@ -1326,7 +1327,8 @@ afr_nonblocking_entrylk (call_frame_t *frame, xlator_t *this)                                                     priv->children[i],                                                     priv->children[i]->fops->entrylk,                                                     this->name, loc, basename, -                                                   ENTRYLK_LOCK_NB, ENTRYLK_WRLCK); +                                                   ENTRYLK_LOCK_NB, ENTRYLK_WRLCK, +                                                   NULL);                                  if (!--call_count)                                          break; @@ -1340,7 +1342,7 @@ out:  int32_t  afr_nonblocking_inodelk_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)  {          afr_internal_lock_t *int_lock = NULL;          afr_local_t         *local    = NULL; @@ -1509,7 +1511,7 @@ afr_nonblocking_inodelk (call_frame_t *frame, xlator_t *this)                          if (piggyback) {                                  /* (op_ret == 1) => indicate piggybacked lock */                                  afr_nonblocking_inodelk_cbk (frame, (void *) (long) i, -                                                             this, 1, 0); +                                                             this, 1, 0, NULL);                                  if (!--call_count)                                          break;                                  continue; @@ -1529,7 +1531,7 @@ afr_nonblocking_inodelk (call_frame_t *frame, xlator_t *this)                                             priv->children[i],                                             priv->children[i]->fops->finodelk,                                             this->name, local->fd, -                                           F_SETLK, flock_use); +                                           F_SETLK, flock_use, NULL);                          if (!--call_count)                                  break; @@ -1551,7 +1553,7 @@ afr_nonblocking_inodelk (call_frame_t *frame, xlator_t *this)                                             priv->children[i],                                             priv->children[i]->fops->inodelk,                                             this->name, &local->loc, -                                           F_SETLK, &flock); +                                           F_SETLK, &flock, NULL);                          if (!--call_count)                                  break; @@ -1646,7 +1648,7 @@ afr_unlock_lower_entrylk (call_frame_t *frame, xlator_t *this)                                             priv->children[i]->fops->entrylk,                                             this->name,                                             loc, basename, -                                           ENTRYLK_UNLOCK, ENTRYLK_WRLCK); +                                           ENTRYLK_UNLOCK, ENTRYLK_WRLCK, NULL);                          if (!--call_count)                                  break; @@ -1939,10 +1941,12 @@ out:  int32_t  afr_get_locks_fd_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_ret, int32_t op_errno, struct gf_flock *lock, +                      dict_t *xdata);  int32_t  afr_recover_lock_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_ret, int32_t op_errno, struct gf_flock *lock, +                      dict_t *xdata)  {          afr_local_t   *local = NULL;          afr_private_t *priv  = NULL; @@ -1966,7 +1970,7 @@ afr_recover_lock_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                             (void *) (long) source_child,                             priv->children[source_child],                             priv->children[source_child]->fops->lk, -                           local->fd, F_GETLK_FD, &flock); +                           local->fd, F_GETLK_FD, &flock, NULL);          return 0; @@ -1994,7 +1998,7 @@ afr_recover_lock (call_frame_t *frame, xlator_t *this,                             (void *) (long) lock_recovery_child,                             priv->children[lock_recovery_child],                             priv->children[lock_recovery_child]->fops->lk, -                           local->fd, F_SETLK, flock); +                           local->fd, F_SETLK, flock, NULL);          return 0;  } @@ -2012,7 +2016,8 @@ is_afr_lock_eol (struct gf_flock *lock)  int32_t  afr_get_locks_fd_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_ret, int32_t op_errno, struct gf_flock *lock, +                      dict_t *xdata)  {          if (op_ret) {                  gf_log (this->name, GF_LOG_INFO, @@ -2072,7 +2077,7 @@ afr_lock_recovery (call_frame_t *frame, xlator_t *this)                             (void *) (long) source_child,                             priv->children[source_child],                             priv->children[source_child]->fops->lk, -                           local->fd, F_GETLK_FD, &flock); +                           local->fd, F_GETLK_FD, &flock, NULL);  out:          return ret; @@ -2100,7 +2105,8 @@ out:  int32_t  afr_lock_recovery_preopen_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)  {          int32_t child_index = (long )cookie;          int ret = 0; @@ -2172,8 +2178,7 @@ afr_lock_recovery_preopen (call_frame_t *frame, xlator_t *this)                             (void *)(long) child_index,                             priv->children[child_index],                             priv->children[child_index]->fops->open, -                           &loc, fdctx->flags, local->fd, -                           fdctx->wbflags); +                           &loc, fdctx->flags, local->fd, NULL);          return 0;  } diff --git a/xlators/cluster/afr/src/afr-open.c b/xlators/cluster/afr/src/afr-open.c index a203a36f9..370d50e7e 100644 --- a/xlators/cluster/afr/src/afr-open.c +++ b/xlators/cluster/afr/src/afr-open.c @@ -123,7 +123,7 @@ out:  int  afr_open_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)  {          afr_local_t * local = frame->local;          afr_private_t *priv = NULL; @@ -132,7 +132,7 @@ afr_open_ftruncate_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          if (afr_open_only_data_self_heal (priv->data_self_heal))                  afr_perform_data_self_heal (frame, this);          AFR_STACK_UNWIND (open, frame, local->op_ret, local->op_errno, -                          local->fd); +                          local->fd, xdata);          return 0;  } @@ -140,7 +140,7 @@ afr_open_ftruncate_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  afr_open_cbk (call_frame_t *frame, void *cookie,                xlator_t *this, int32_t op_ret, int32_t op_errno, -              fd_t *fd) +              fd_t *fd, dict_t *xdata)  {          afr_local_t *  local       = NULL;          int            ret         = 0; @@ -162,8 +162,7 @@ afr_open_cbk (call_frame_t *frame, void *cookie,                          local->success_count++;                          ret = afr_child_fd_ctx_set (this, fd, child_index, -                                                    local->cont.open.flags, -                                                    local->cont.open.wbflags); +                                                    local->cont.open.flags);                          if (ret) {                                  local->op_ret = -1;                                  local->op_errno = -ret; @@ -181,12 +180,12 @@ unlock:                      && (local->op_ret >= 0)) {                          STACK_WIND (frame, afr_open_ftruncate_cbk,                                      this, this->fops->ftruncate, -                                    fd, 0); +                                    fd, 0, NULL);                  } else {                          if (afr_open_only_data_self_heal (priv->data_self_heal))                                  afr_perform_data_self_heal (frame, this);                          AFR_STACK_UNWIND (open, frame, local->op_ret, -                                          local->op_errno, local->fd); +                                          local->op_errno, local->fd, xdata);                  }          } @@ -195,7 +194,7 @@ unlock:  int  afr_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)  {          afr_private_t * priv       = NULL;          afr_local_t *   local      = NULL; @@ -236,7 +235,6 @@ afr_open (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t flags,          loc_copy (&local->loc, loc);          local->cont.open.flags   = flags; -        local->cont.open.wbflags = wbflags;          local->fd = fd_ref (fd); @@ -245,7 +243,7 @@ afr_open (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t flags,                          STACK_WIND_COOKIE (frame, afr_open_cbk, (void *) (long) i,                                             priv->children[i],                                             priv->children[i]->fops->open, -                                           loc, wind_flags, fd, wbflags); +                                           loc, wind_flags, fd, xdata);                          if (!--call_count)                                  break; @@ -255,7 +253,7 @@ afr_open (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t flags,          ret = 0;  out:          if (ret < 0) -                AFR_STACK_UNWIND (open, frame, -1, op_errno, fd); +                AFR_STACK_UNWIND (open, frame, -1, op_errno, fd, xdata);          return 0;  } @@ -308,7 +306,7 @@ afr_resume_calls (xlator_t *this, struct list_head *list)  int  afr_openfd_fix_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)  {          afr_local_t           *local       = NULL;          afr_private_t         *priv        = NULL; @@ -429,7 +427,8 @@ afr_fix_open (call_frame_t *frame, xlator_t *this, afr_fd_ctx_t *fd_ctx,                                             (void*) (long) i,                                             priv->children[i],                                             priv->children[i]->fops->opendir, -                                           &open_local->loc, open_local->fd); +                                           &open_local->loc, open_local->fd, +                                           NULL);                  } else {                          gf_log (this->name, GF_LOG_DEBUG,                                  "opening fd for file %s on subvolume %s", @@ -440,7 +439,7 @@ afr_fix_open (call_frame_t *frame, xlator_t *this, afr_fd_ctx_t *fd_ctx,                                             priv->children[i],                                             priv->children[i]->fops->open,                                             &open_local->loc, fd_ctx->flags, -                                           open_local->fd, fd_ctx->wbflags); +                                           open_local->fd, NULL);                  }          } diff --git a/xlators/cluster/afr/src/afr-self-heal-algorithm.c b/xlators/cluster/afr/src/afr-self-heal-algorithm.c index 629822a8e..bf787339b 100644 --- a/xlators/cluster/afr/src/afr-self-heal-algorithm.c +++ b/xlators/cluster/afr/src/afr-self-heal-algorithm.c @@ -410,7 +410,7 @@ sh_loop_return (call_frame_t *sh_frame, xlator_t *this, call_frame_t *loop_frame  static int  sh_loop_write_cbk (call_frame_t *loop_frame, void *cookie, xlator_t *this,                     int32_t op_ret, int32_t op_errno, struct iatt *buf, -                   struct iatt *postbuf) +                   struct iatt *postbuf, dict_t *xdata)  {          afr_private_t *             priv        = NULL;          afr_local_t *               loop_local    = NULL; @@ -461,7 +461,7 @@ static int  sh_loop_read_cbk (call_frame_t *loop_frame, void *cookie,                    xlator_t *this, int32_t op_ret, int32_t op_errno,                    struct iovec *vector, int32_t count, struct iatt *buf, -                  struct iobref *iobref) +                  struct iobref *iobref, dict_t *xdata)  {          afr_private_t *               priv       = NULL;          afr_local_t *                 loop_local   = NULL; @@ -519,7 +519,7 @@ sh_loop_read_cbk (call_frame_t *loop_frame, void *cookie,                                     priv->children[i],                                     priv->children[i]->fops->writev,                                     loop_sh->healing_fd, vector, count, -                                   loop_sh->offset, 0, iobref); +                                   loop_sh->offset, 0, iobref, NULL);                  if (!--call_count)                          break; @@ -546,7 +546,7 @@ sh_loop_read (call_frame_t *loop_frame, xlator_t *this)                             priv->children[loop_sh->source],                             priv->children[loop_sh->source]->fops->readv,                             loop_sh->healing_fd, loop_sh->block_size, -                           loop_sh->offset, 0); +                           loop_sh->offset, 0, NULL);          return 0;  } @@ -555,7 +555,8 @@ sh_loop_read (call_frame_t *loop_frame, xlator_t *this)  static int  sh_diff_checksum_cbk (call_frame_t *loop_frame, void *cookie, xlator_t *this,                        int32_t op_ret, int32_t op_errno, -                      uint32_t weak_checksum, uint8_t *strong_checksum) +                      uint32_t weak_checksum, uint8_t *strong_checksum, +                      dict_t *xdata)  {          afr_private_t                 *priv         = NULL;          afr_local_t                   *loop_local   = NULL; @@ -658,7 +659,7 @@ sh_diff_checksum (call_frame_t *loop_frame, xlator_t *this)                             priv->children[loop_sh->source],                             priv->children[loop_sh->source]->fops->rchecksum,                             loop_sh->healing_fd, -                           loop_sh->offset, loop_sh->block_size); +                           loop_sh->offset, loop_sh->block_size, NULL);          for (i = 0; i < priv->child_count; i++) {                  if (loop_sh->sources[i] || !loop_local->child_up[i]) @@ -669,7 +670,7 @@ sh_diff_checksum (call_frame_t *loop_frame, xlator_t *this)                                     priv->children[i],                                     priv->children[i]->fops->rchecksum,                                     loop_sh->healing_fd, -                                   loop_sh->offset, loop_sh->block_size); +                                   loop_sh->offset, loop_sh->block_size, NULL);                  if (!--call_count)                          break; diff --git a/xlators/cluster/afr/src/afr-self-heal-common.c b/xlators/cluster/afr/src/afr-self-heal-common.c index f9958e768..441d5d116 100644 --- a/xlators/cluster/afr/src/afr-self-heal-common.c +++ b/xlators/cluster/afr/src/afr-self-heal-common.c @@ -1422,7 +1422,8 @@ afr_sh_purge_stale_entries_done (call_frame_t *frame, xlator_t *this)                                                afr_sh_missing_entries_lookup_done,                                                sh->sh_gfid_req,                                                AFR_LOOKUP_FAIL_CONFLICTS| -                                              AFR_LOOKUP_FAIL_MISSING_GFIDS); +                                              AFR_LOOKUP_FAIL_MISSING_GFIDS, +                                              NULL);                  } else {                          //No need to set gfid so goto missing entries lookup done                          //Behave as if you have done the lookup @@ -1711,7 +1712,8 @@ afr_sh_find_fresh_parents (call_frame_t *frame, xlator_t *this,          afr_get_fresh_children (sh->success_children, sh->sources,                                  sh->fresh_parent_dirs, priv->child_count);          afr_sh_common_lookup (frame, this, &local->loc, -                              afr_sh_children_lookup_done, NULL, 0); +                              afr_sh_children_lookup_done, NULL, 0, +                              NULL);          return;  out: @@ -1745,7 +1747,7 @@ afr_sh_common_reset (afr_self_heal_t *sh, unsigned int child_count)  int  afr_sh_common_lookup (call_frame_t *frame, xlator_t *this, loc_t *loc,                        afr_lookup_done_cbk_t lookup_done , uuid_t gfid, -                      int32_t flags) +                      int32_t flags, dict_t *xdata)  {          afr_local_t    *local = NULL;          int             i = 0; @@ -1827,7 +1829,8 @@ afr_sh_post_nb_entrylk_conflicting_sh_cbk (call_frame_t *frame, xlator_t *this)                          "Non blocking entrylks done. Proceeding to FOP");                  afr_sh_common_lookup (frame, this, &sh->parent_loc,                                        afr_sh_find_fresh_parents, -                                      NULL, AFR_LOOKUP_FAIL_CONFLICTS); +                                      NULL, AFR_LOOKUP_FAIL_CONFLICTS, +                                      NULL);          }          return 0; @@ -1854,7 +1857,8 @@ afr_sh_post_nb_entrylk_gfid_sh_cbk (call_frame_t *frame, xlator_t *this)                  afr_sh_common_lookup (frame, this, &local->loc,                                        afr_sh_missing_entries_lookup_done,                                        sh->sh_gfid_req, AFR_LOOKUP_FAIL_CONFLICTS| -                                      AFR_LOOKUP_FAIL_MISSING_GFIDS); +                                      AFR_LOOKUP_FAIL_MISSING_GFIDS, +                                      NULL);          }          return 0; diff --git a/xlators/cluster/afr/src/afr-self-heal-common.h b/xlators/cluster/afr/src/afr-self-heal-common.h index 24cac6232..2979966c5 100644 --- a/xlators/cluster/afr/src/afr-self-heal-common.h +++ b/xlators/cluster/afr/src/afr-self-heal-common.h @@ -90,7 +90,7 @@ afr_sh_common_lookup_resp_handler (call_frame_t *frame, void *cookie,  int  afr_sh_common_lookup (call_frame_t *frame, xlator_t *this, loc_t *loc,                        afr_lookup_done_cbk_t lookup_cbk, uuid_t uuid, -                      int32_t flags); +                      int32_t flags, dict_t *xdata);  int  afr_sh_entry_expunge_remove (call_frame_t *expunge_frame, xlator_t *this,                               int active_src, struct iatt *buf, @@ -118,7 +118,7 @@ afr_sh_mark_source_sinks (call_frame_t *frame, xlator_t *this);  typedef int  (*afr_fxattrop_cbk_t) (call_frame_t *frame, void *cookie,                         xlator_t *this, int32_t op_ret, int32_t op_errno, -                       dict_t *xattr); +                       dict_t *xattr, dict_t *xdata);  int  afr_build_child_loc (xlator_t *this, loc_t *child, loc_t *parent, char *name);  int diff --git a/xlators/cluster/afr/src/afr-self-heal-data.c b/xlators/cluster/afr/src/afr-self-heal-data.c index 765edd277..1c687a4e4 100644 --- a/xlators/cluster/afr/src/afr-self-heal-data.c +++ b/xlators/cluster/afr/src/afr-self-heal-data.c @@ -69,7 +69,7 @@ afr_sh_data_fxattrop (call_frame_t *frame, xlator_t *this,  int  afr_post_sh_data_fxattrop_cbk (call_frame_t *frame, void *cookie,                                 xlator_t *this, int32_t op_ret, int32_t op_errno, -                               dict_t *xattr); +                               dict_t *xattr, dict_t *xdata);  int  afr_sh_data_done (call_frame_t *frame, xlator_t *this) @@ -88,7 +88,7 @@ afr_sh_data_done (call_frame_t *frame, xlator_t *this)  int  afr_sh_data_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)  {          afr_local_t   *local       = NULL;          afr_private_t *priv        = NULL; @@ -151,7 +151,7 @@ afr_sh_data_close (call_frame_t *frame, xlator_t *this)                                     (void *) (long) i,                                     priv->children[i],                                     priv->children[i]->fops->flush, -                                   sh->healing_fd); +                                   sh->healing_fd, NULL);                  if (!--call_count)                          break; @@ -163,7 +163,7 @@ afr_sh_data_close (call_frame_t *frame, xlator_t *this)  int  afr_sh_data_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)  {          afr_local_t   *local       = NULL; @@ -237,7 +237,7 @@ afr_sh_data_setattr (call_frame_t *frame, xlator_t *this)                                     (void *) (long) i,                                     priv->children[i],                                     priv->children[i]->fops->setattr, -                                   &local->loc, &stbuf, valid); +                                   &local->loc, &stbuf, valid, NULL);                  if (!--call_count)                          break; @@ -249,7 +249,7 @@ afr_sh_data_setattr (call_frame_t *frame, xlator_t *this)  int  afr_sh_data_setattr_fstat_cbk (call_frame_t *frame, void *cookie,                                 xlator_t *this, int32_t op_ret, int32_t op_errno, -                               struct iatt *buf) +                               struct iatt *buf, dict_t *xdata)  {          afr_local_t     *local = NULL;          afr_self_heal_t *sh = NULL; @@ -286,7 +286,7 @@ afr_sh_set_timestamps (call_frame_t *frame, xlator_t *this)                             (void *) (long) sh->source,                             priv->children[sh->source],                             priv->children[sh->source]->fops->fstat, -                           sh->healing_fd); +                           sh->healing_fd, NULL);          return 0;  } @@ -355,7 +355,7 @@ afr_sh_data_fail (call_frame_t *frame, xlator_t *this)  int  afr_sh_data_erase_pending_cbk (call_frame_t *frame, void *cookie,                                 xlator_t *this, int32_t op_ret, -                               int32_t op_errno, dict_t *xattr) +                               int32_t op_errno, dict_t *xattr, dict_t *xdata)  {          int             call_count = 0;          afr_local_t     *local = NULL; @@ -429,7 +429,8 @@ afr_sh_data_erase_pending (call_frame_t *frame, xlator_t *this)                                     priv->children[i],                                     priv->children[i]->fops->fxattrop,                                     sh->healing_fd, -                                   GF_XATTROP_ADD_ARRAY, erase_xattr[i]); +                                   GF_XATTROP_ADD_ARRAY, erase_xattr[i], +                                   NULL);                  if (!--call_count)                          break;          } @@ -547,7 +548,7 @@ afr_sh_data_sync_prepare (call_frame_t *frame, xlator_t *this)  int  afr_sh_data_trim_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)  {          afr_private_t * priv = NULL;          afr_local_t * local  = NULL; @@ -612,7 +613,8 @@ afr_sh_data_trim_sinks (call_frame_t *frame, xlator_t *this)                                     (void *) (long) i,                                     priv->children[i],                                     priv->children[i]->fops->ftruncate, -                                   sh->healing_fd, sh->file_size); +                                   sh->healing_fd, sh->file_size, +                                   NULL);                  if (!--call_count)                          break; @@ -824,7 +826,7 @@ afr_sh_data_special_file_fix (call_frame_t *frame, xlator_t *this)  int  afr_sh_data_fstat_cbk (call_frame_t *frame, void *cookie,                         xlator_t *this, int32_t op_ret, int32_t op_errno, -                       struct iatt *buf) +                       struct iatt *buf, dict_t *xdata)  {          afr_private_t   *priv  = NULL;          afr_local_t     *local = NULL; @@ -894,7 +896,7 @@ afr_sh_data_fstat (call_frame_t *frame, xlator_t *this)                                             (void *) (long) i,                                             priv->children[i],                                             priv->children[i]->fops->fstat, -                                           sh->healing_fd); +                                           sh->healing_fd, NULL);                          if (!--call_count)                                  break; @@ -937,7 +939,7 @@ afr_sh_common_fxattrop_resp_handler (call_frame_t *frame, void *cookie,  int  afr_post_sh_data_fxattrop_cbk (call_frame_t *frame, void *cookie,                                 xlator_t *this, int32_t op_ret, int32_t op_errno, -                               dict_t *xattr) +                               dict_t *xattr, dict_t *xdata)  {          int             call_count  = -1;          int             ret = 0; @@ -968,7 +970,7 @@ afr_post_sh_data_fxattrop_cbk (call_frame_t *frame, void *cookie,  int  afr_sh_data_fxattrop_cbk (call_frame_t *frame, void *cookie,                            xlator_t *this, int32_t op_ret, int32_t op_errno, -                          dict_t *xattr) +                          dict_t *xattr, dict_t *xdata)  {          int call_count  = -1; @@ -1041,7 +1043,7 @@ afr_sh_data_fxattrop (call_frame_t *frame, xlator_t *this,                                             priv->children[i],                                             priv->children[i]->fops->fxattrop,                                             sh->healing_fd, GF_XATTROP_ADD_ARRAY, -                                           xattr_req); +                                           xattr_req, NULL);                          if (!--call_count)                                  break; @@ -1211,7 +1213,7 @@ afr_sh_data_lock (call_frame_t *frame, xlator_t *this,  int  afr_sh_data_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)  {          afr_local_t     *local = NULL;          afr_self_heal_t *sh = NULL; @@ -1298,7 +1300,7 @@ afr_sh_data_open (call_frame_t *frame, xlator_t *this)                                     priv->children[i],                                     priv->children[i]->fops->open,                                     &local->loc, -                                   O_RDWR|O_LARGEFILE, fd, 0); +                                   O_RDWR|O_LARGEFILE, fd, NULL);                  if (!--call_count)                          break; diff --git a/xlators/cluster/afr/src/afr-self-heal-entry.c b/xlators/cluster/afr/src/afr-self-heal-entry.c index 3aefd3b37..766474682 100644 --- a/xlators/cluster/afr/src/afr-self-heal-entry.c +++ b/xlators/cluster/afr/src/afr-self-heal-entry.c @@ -111,7 +111,7 @@ afr_sh_entry_finish (call_frame_t *frame, xlator_t *this)  int  afr_sh_entry_erase_pending_cbk (call_frame_t *frame, void *cookie,                                  xlator_t *this, int32_t op_ret, -                                int32_t op_errno, dict_t *xattr) +                                int32_t op_errno, dict_t *xattr, dict_t *xdata)  {          long                 i          = 0;          int                  call_count = 0; @@ -216,7 +216,8 @@ afr_sh_entry_erase_pending (call_frame_t *frame, xlator_t *this)                                     priv->children[i],                                     priv->children[i]->fops->xattrop,                                     &local->loc, -                                   GF_XATTROP_ADD_ARRAY, erase_xattr[i]); +                                   GF_XATTROP_ADD_ARRAY, erase_xattr[i], +                                   NULL);                  if (!--call_count)                          break;          } @@ -344,7 +345,8 @@ int  afr_sh_entry_expunge_parent_setattr_cbk (call_frame_t *expunge_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)  {          afr_private_t   *priv          = NULL;          afr_local_t     *expunge_local = NULL; @@ -380,7 +382,7 @@ afr_sh_entry_expunge_remove_cbk (call_frame_t *expunge_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)  {          afr_private_t   *priv = NULL;          afr_local_t     *expunge_local = NULL; @@ -415,7 +417,7 @@ afr_sh_entry_expunge_remove_cbk (call_frame_t *expunge_frame, void *cookie,                             priv->children[active_src]->fops->setattr,                             &expunge_sh->parent_loc,                             &expunge_sh->parentbuf, -                           valid); +                           valid, NULL);          return 0;  } @@ -439,7 +441,7 @@ afr_sh_entry_expunge_unlink (call_frame_t *expunge_frame, xlator_t *this,                             (void *) (long) active_src,                             priv->children[active_src],                             priv->children[active_src]->fops->unlink, -                           &expunge_local->loc); +                           &expunge_local->loc, 0, NULL);          return 0;  } @@ -464,7 +466,7 @@ afr_sh_entry_expunge_rmdir (call_frame_t *expunge_frame, xlator_t *this,                             (void *) (long) active_src,                             priv->children[active_src],                             priv->children[active_src]->fops->rmdir, -                           &expunge_local->loc, 1); +                           &expunge_local->loc, 1, NULL);          return 0;  } @@ -588,7 +590,7 @@ afr_sh_entry_expunge_purge (call_frame_t *expunge_frame, xlator_t *this,                             (void *) (long) active_src,                             priv->children[active_src],                             priv->children[active_src]->fops->lookup, -                           &expunge_local->loc, 0); +                           &expunge_local->loc, NULL);          return 0;  } @@ -747,7 +749,7 @@ afr_sh_entry_expunge_entry (call_frame_t *frame, xlator_t *this,                             (void *) (long) source,                             priv->children[source],                             priv->children[source]->fops->lookup, -                           &expunge_local->loc, 0); +                           &expunge_local->loc, NULL);          ret = 0;  out: @@ -762,7 +764,7 @@ int  afr_sh_entry_expunge_readdir_cbk (call_frame_t *frame, void *cookie,                                    xlator_t *this,                                    int32_t op_ret, int32_t op_errno, -                                  gf_dirent_t *entries) +                                  gf_dirent_t *entries, dict_t *xdata)  {          afr_private_t   *priv = NULL;          afr_local_t     *local  = NULL; @@ -923,7 +925,8 @@ int  afr_sh_entry_impunge_setattr_cbk (call_frame_t *impunge_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)  {          int              call_count = 0;          afr_private_t   *priv = NULL; @@ -960,7 +963,8 @@ int  afr_sh_entry_impunge_parent_setattr_cbk (call_frame_t *setattr_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)  {          int             call_count = 0;          afr_local_t     *setattr_local = NULL; @@ -1024,7 +1028,7 @@ afr_sh_entry_impunge_setattr (call_frame_t *impunge_frame, xlator_t *this)                                     (void *) (long) i, priv->children[i],                                     priv->children[i]->fops->setattr,                                     &setattr_local->loc, -                                   &impunge_sh->parentbuf, valid); +                                   &impunge_sh->parentbuf, valid, NULL);                  valid = GF_SET_ATTR_UID   | GF_SET_ATTR_GID |                          GF_SET_ATTR_ATIME | GF_SET_ATTR_MTIME; @@ -1033,7 +1037,7 @@ afr_sh_entry_impunge_setattr (call_frame_t *impunge_frame, xlator_t *this)                                     (void *) (long) i, priv->children[i],                                     priv->children[i]->fops->setattr,                                     &impunge_local->loc, -                                   &impunge_sh->entrybuf, valid); +                                   &impunge_sh->entrybuf, valid, NULL);                  call_count--;          }          GF_ASSERT (!call_count); @@ -1049,7 +1053,7 @@ int  afr_sh_entry_impunge_xattrop_cbk (call_frame_t *impunge_frame, void *cookie,                                    xlator_t *this,                                    int32_t op_ret, int32_t op_errno, -                                  dict_t *xattr) +                                  dict_t *xattr, dict_t *xdata)  {          afr_private_t   *priv = NULL;          afr_local_t     *impunge_local = NULL; @@ -1136,7 +1140,7 @@ afr_sh_entry_impunge_perform_xattrop (call_frame_t *impunge_frame,                             (void *) (long) active_src,                             priv->children[active_src],                             priv->children[active_src]->fops->xattrop, -                           &impunge_local->loc, GF_XATTROP_ADD_ARRAY, xattr); +                           &impunge_local->loc, GF_XATTROP_ADD_ARRAY, xattr, NULL);          if (xattr)                  dict_unref (xattr); @@ -1153,7 +1157,7 @@ afr_sh_entry_impunge_newfile_cbk (call_frame_t *impunge_frame, void *cookie,                                    int32_t op_ret, int32_t op_errno,                                    inode_t *inode, struct iatt *stbuf,                                    struct iatt *preparent, -                                  struct iatt *postparent) +                                  struct iatt *postparent, dict_t *xdata)  {          int              call_count       = 0;          afr_private_t   *priv             = NULL; @@ -1198,7 +1202,7 @@ afr_sh_entry_impunge_hardlink_cbk (call_frame_t *impunge_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)  {          int              call_count        = 0;          call_frame_t    *frame             = NULL; @@ -1243,7 +1247,7 @@ afr_sh_entry_impunge_hardlink (call_frame_t *impunge_frame, xlator_t *this,                             (void *) (long) child_index,                             priv->children[child_index],                             priv->children[child_index]->fops->link, -                           &oldloc, loc); +                           &oldloc, loc, NULL);          loc_wipe (&oldloc);          return 0; @@ -1342,7 +1346,7 @@ afr_sh_entry_impunge_mknod (call_frame_t *impunge_frame, xlator_t *this,                             &impunge_local->loc,                             st_mode_from_ia (stbuf->ia_prot, stbuf->ia_type),                             makedev (ia_major (stbuf->ia_rdev), -                                    ia_minor (stbuf->ia_rdev)), dict); +                                    ia_minor (stbuf->ia_rdev)), 0, dict);          if (dict)                  dict_unref (dict); @@ -1389,7 +1393,7 @@ afr_sh_entry_impunge_mkdir (call_frame_t *impunge_frame, xlator_t *this,                             priv->children[child_index]->fops->mkdir,                             &impunge_local->loc,                             st_mode_from_ia (stbuf->ia_prot, stbuf->ia_type), -                           dict); +                           0, dict);          if (dict)                  dict_unref (dict); @@ -1436,7 +1440,7 @@ afr_sh_entry_impunge_symlink (call_frame_t *impunge_frame, xlator_t *this,                             (void *) (long) child_index,                             priv->children[child_index],                             priv->children[child_index]->fops->symlink, -                           linkname, &impunge_local->loc, dict); +                           linkname, &impunge_local->loc, 0, dict);          if (dict)                  dict_unref (dict); @@ -1450,7 +1454,7 @@ afr_sh_entry_impunge_symlink_unlink_cbk (call_frame_t *impunge_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)  {          afr_private_t   *priv = NULL;          afr_local_t     *impunge_local = NULL; @@ -1511,7 +1515,7 @@ afr_sh_entry_impunge_symlink_unlink (call_frame_t *impunge_frame, xlator_t *this                             (void *) (long) child_index,                             priv->children[child_index],                             priv->children[child_index]->fops->unlink, -                           &impunge_local->loc); +                           &impunge_local->loc, 0, NULL);          return 0;  } @@ -1521,7 +1525,7 @@ int  afr_sh_entry_impunge_readlink_sink_cbk (call_frame_t *impunge_frame, void *cookie,                                          xlator_t *this,                                          int32_t op_ret, int32_t op_errno, -                                        const char *linkname, struct iatt *sbuf) +                                        const char *linkname, struct iatt *sbuf, dict_t *xdata)  {          afr_private_t   *priv = NULL;          afr_local_t     *impunge_local = NULL; @@ -1603,7 +1607,7 @@ afr_sh_entry_impunge_readlink_sink (call_frame_t *impunge_frame, xlator_t *this,                             (void *) (long) child_index,                             priv->children[child_index],                             priv->children[child_index]->fops->readlink, -                           &impunge_local->loc, 4096); +                           &impunge_local->loc, 4096, NULL);          return 0;  } @@ -1613,7 +1617,7 @@ int  afr_sh_entry_impunge_readlink_cbk (call_frame_t *impunge_frame, void *cookie,                                     xlator_t *this,                                     int32_t op_ret, int32_t op_errno, -                                   const char *linkname, struct iatt *sbuf) +                                   const char *linkname, struct iatt *sbuf, dict_t *xdata)  {          afr_private_t   *priv = NULL;          afr_local_t     *impunge_local = NULL; @@ -1677,7 +1681,7 @@ afr_sh_entry_impunge_readlink (call_frame_t *impunge_frame, xlator_t *this,                             (void *) (long) child_index,                             priv->children[active_src],                             priv->children[active_src]->fops->readlink, -                           &impunge_local->loc, 4096); +                           &impunge_local->loc, 4096, NULL);          return 0;  } @@ -1919,7 +1923,8 @@ afr_sh_entry_common_lookup_done (call_frame_t *impunge_frame, xlator_t *this,                  afr_sh_common_lookup (impunge_frame, this, &impunge_local->loc,                                        afr_sh_entry_common_lookup_done, gfid,                                        AFR_LOOKUP_FAIL_CONFLICTS | -                                      AFR_LOOKUP_FAIL_MISSING_GFIDS); +                                      AFR_LOOKUP_FAIL_MISSING_GFIDS, +                                      NULL);          } else {                  afr_sh_entry_call_impunge_recreate (impunge_frame, this);          } @@ -1985,7 +1990,7 @@ afr_sh_entry_impunge_entry (call_frame_t *frame, xlator_t *this,          afr_sh_common_lookup (impunge_frame, this, &impunge_local->loc,                                afr_sh_entry_common_lookup_done, NULL, -                              AFR_LOOKUP_FAIL_CONFLICTS); +                              AFR_LOOKUP_FAIL_CONFLICTS, NULL);          op_ret = 0;  out: @@ -2003,7 +2008,7 @@ int  afr_sh_entry_impunge_readdir_cbk (call_frame_t *frame, void *cookie,                                    xlator_t *this,                                    int32_t op_ret, int32_t op_errno, -                                  gf_dirent_t *entries) +                                  gf_dirent_t *entries, dict_t *xdata)  {          afr_private_t   *priv = NULL;          afr_local_t     *local  = NULL; @@ -2076,7 +2081,7 @@ afr_sh_entry_impunge_subvol (call_frame_t *frame, xlator_t *this)          STACK_WIND (frame, afr_sh_entry_impunge_readdir_cbk,                      priv->children[active_src],                      priv->children[active_src]->fops->readdirp, -                    sh->healing_fd, sh->block_size, sh->offset, 0); +                    sh->healing_fd, sh->block_size, sh->offset, NULL);          return 0;  } @@ -2122,7 +2127,7 @@ afr_sh_entry_impunge_all (call_frame_t *frame, xlator_t *this)  int  afr_sh_entry_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)  {          afr_local_t     *local = NULL;          afr_self_heal_t *sh = NULL; @@ -2216,7 +2221,7 @@ afr_sh_entry_open (call_frame_t *frame, xlator_t *this)                                     (void *) (long) source,                                     priv->children[source],                                     priv->children[source]->fops->opendir, -                                   &local->loc, fd); +                                   &local->loc, fd, NULL);                  call_count--;          } @@ -2233,7 +2238,7 @@ afr_sh_entry_open (call_frame_t *frame, xlator_t *this)                                     (void *) (long) i,                                     priv->children[i],                                     priv->children[i]->fops->opendir, -                                   &local->loc, fd); +                                   &local->loc, fd, NULL);                  if (!--call_count)                          break; @@ -2382,7 +2387,8 @@ afr_sh_post_nonblocking_entry_cbk (call_frame_t *frame, xlator_t *this)                  afr_sh_common_lookup (frame, this, &local->loc,                                        afr_sh_entry_fix, NULL,                                        AFR_LOOKUP_FAIL_CONFLICTS | -                                      AFR_LOOKUP_FAIL_MISSING_GFIDS); +                                      AFR_LOOKUP_FAIL_MISSING_GFIDS, +                                      NULL);          }          return 0; diff --git a/xlators/cluster/afr/src/afr-self-heal-metadata.c b/xlators/cluster/afr/src/afr-self-heal-metadata.c index d0bf382a4..9cebd5c07 100644 --- a/xlators/cluster/afr/src/afr-self-heal-metadata.c +++ b/xlators/cluster/afr/src/afr-self-heal-metadata.c @@ -109,7 +109,7 @@ afr_sh_metadata_finish (call_frame_t *frame, xlator_t *this)  int  afr_sh_metadata_erase_pending_cbk (call_frame_t *frame, void *cookie,                                     xlator_t *this, int32_t op_ret, -                                   int32_t op_errno, dict_t *xattr) +                                   int32_t op_errno, dict_t *xattr, dict_t *xdata)  {          afr_local_t     *local     = NULL;          int             call_count = 0; @@ -201,7 +201,8 @@ afr_sh_metadata_erase_pending (call_frame_t *frame, xlator_t *this)                                     priv->children[i],                                     priv->children[i]->fops->xattrop,                                     &local->loc, -                                   GF_XATTROP_ADD_ARRAY, erase_xattr[i]); +                                   GF_XATTROP_ADD_ARRAY, erase_xattr[i], +                                   NULL);                  if (!--call_count)                          break;          } @@ -219,7 +220,7 @@ afr_sh_metadata_erase_pending (call_frame_t *frame, xlator_t *this)  int  afr_sh_metadata_sync_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)  {          afr_local_t     *local = NULL;          afr_self_heal_t *sh = NULL; @@ -260,9 +261,9 @@ afr_sh_metadata_sync_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  afr_sh_metadata_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)  { -        afr_sh_metadata_sync_cbk (frame, cookie, this, op_ret, op_errno); +        afr_sh_metadata_sync_cbk (frame, cookie, this, op_ret, op_errno, xdata);          return 0;  } @@ -270,9 +271,9 @@ afr_sh_metadata_setattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  afr_sh_metadata_xattr_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)  { -        afr_sh_metadata_sync_cbk (frame, cookie, this, op_ret, op_errno); +        afr_sh_metadata_sync_cbk (frame, cookie, this, op_ret, op_errno, xdata);          return 0;  } @@ -340,7 +341,7 @@ afr_sh_metadata_sync (call_frame_t *frame, xlator_t *this, dict_t *xattr)                                     (void *) (long) i,                                     priv->children[i],                                     priv->children[i]->fops->setattr, -                                   &local->loc, &stbuf, valid); +                                   &local->loc, &stbuf, valid, NULL);                  call_count--; @@ -351,7 +352,7 @@ afr_sh_metadata_sync (call_frame_t *frame, xlator_t *this, dict_t *xattr)                                     (void *) (long) i,                                     priv->children[i],                                     priv->children[i]->fops->setxattr, -                                   &local->loc, xattr, 0); +                                   &local->loc, xattr, 0, NULL);                  call_count--;          } @@ -360,9 +361,9 @@ afr_sh_metadata_sync (call_frame_t *frame, xlator_t *this, dict_t *xattr)  int -afr_sh_metadata_getxattr_cbk (call_frame_t *frame, void *cookie, -                              xlator_t *this, -                              int32_t op_ret, int32_t op_errno, dict_t *xattr) +afr_sh_metadata_getxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, +                              int32_t op_ret, int32_t op_errno, dict_t *xattr, +                              dict_t *xdata)  {          afr_local_t     *local = NULL;          afr_self_heal_t *sh = NULL; @@ -427,7 +428,7 @@ afr_sh_metadata_sync_prepare (call_frame_t *frame, xlator_t *this)          STACK_WIND (frame, afr_sh_metadata_getxattr_cbk,                      priv->children[source],                      priv->children[source]->fops->getxattr, -                    &local->loc, NULL); +                    &local->loc, NULL, NULL);          return 0;  } @@ -556,7 +557,8 @@ afr_sh_metadata_post_nonblocking_inodelk_cbk (call_frame_t *frame,                  afr_sh_common_lookup (frame, this, &local->loc,                                        afr_sh_metadata_fix, NULL,                                        AFR_LOOKUP_FAIL_CONFLICTS | -                                      AFR_LOOKUP_FAIL_MISSING_GFIDS); +                                      AFR_LOOKUP_FAIL_MISSING_GFIDS, +                                      NULL);          }          return 0; diff --git a/xlators/cluster/afr/src/afr-transaction.c b/xlators/cluster/afr/src/afr-transaction.c index 584ad7aed..7a95f310a 100644 --- a/xlators/cluster/afr/src/afr-transaction.c +++ b/xlators/cluster/afr/src/afr-transaction.c @@ -360,7 +360,8 @@ afr_lock_server_count (afr_private_t *priv, afr_transaction_type type)  int32_t  afr_changelog_post_op_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)  {          afr_internal_lock_t *int_lock = NULL;          afr_private_t       *priv     = NULL; @@ -583,7 +584,8 @@ afr_changelog_post_op (call_frame_t *frame, xlator_t *this)                                              priv->children[i],                                              priv->children[i]->fops->xattrop,                                              &local->loc, -                                            GF_XATTROP_ADD_ARRAY, xattr[i]); +                                            GF_XATTROP_ADD_ARRAY, xattr[i], +                                            NULL);                                  break;                          } @@ -604,7 +606,7 @@ afr_changelog_post_op (call_frame_t *frame, xlator_t *this)                          if (nothing_failed && piggyback) {                                  afr_changelog_post_op_cbk (frame, (void *)(long)i, -                                                           this, 1, 0, xattr[i]); +                                                           this, 1, 0, xattr[i], NULL);                          } else {                                  __mark_pre_op_undone_on_fd (frame, this, i);                                  STACK_WIND_COOKIE (frame, @@ -613,7 +615,8 @@ afr_changelog_post_op (call_frame_t *frame, xlator_t *this)                                                     priv->children[i],                                                     priv->children[i]->fops->fxattrop,                                                     local->fd, -                                                   GF_XATTROP_ADD_ARRAY, xattr[i]); +                                                   GF_XATTROP_ADD_ARRAY, xattr[i], +                                                   NULL);                          }                  }                  break; @@ -621,7 +624,8 @@ afr_changelog_post_op (call_frame_t *frame, xlator_t *this)                  {                          if (nothing_failed) {                                  afr_changelog_post_op_cbk (frame, (void *)(long)i, -                                                           this, 1, 0, xattr[i]); +                                                           this, 1, 0, xattr[i], +                                                           NULL);                                  break;                          } @@ -630,13 +634,15 @@ afr_changelog_post_op (call_frame_t *frame, xlator_t *this)                                              priv->children[i],                                              priv->children[i]->fops->fxattrop,                                              local->fd, -                                            GF_XATTROP_ADD_ARRAY, xattr[i]); +                                            GF_XATTROP_ADD_ARRAY, xattr[i], +                                            NULL);                          else                                  STACK_WIND (frame, afr_changelog_post_op_cbk,                                              priv->children[i],                                              priv->children[i]->fops->xattrop,                                              &local->loc, -                                            GF_XATTROP_ADD_ARRAY, xattr[i]); +                                            GF_XATTROP_ADD_ARRAY, xattr[i], +                                            NULL);                  }                  break; @@ -644,14 +650,16 @@ afr_changelog_post_op (call_frame_t *frame, xlator_t *this)                  {                          if (nothing_failed) {                                  afr_changelog_post_op_cbk (frame, (void *)(long)i, -                                                           this, 1, 0, xattr[i]); +                                                           this, 1, 0, xattr[i], +                                                           NULL);                          } else {                                  STACK_WIND_COOKIE (frame, afr_changelog_post_op_cbk,                                                     (void *) (long) i,                                                     priv->children[i],                                                     priv->children[i]->fops->xattrop,                                                     &local->transaction.new_parent_loc, -                                                   GF_XATTROP_ADD_ARRAY, xattr[i]); +                                                   GF_XATTROP_ADD_ARRAY, xattr[i], +                                                   NULL);                          }                          call_count--;                  } @@ -676,7 +684,8 @@ afr_changelog_post_op (call_frame_t *frame, xlator_t *this)                  {                          if (nothing_failed) {                                  afr_changelog_post_op_cbk (frame, (void *)(long)i, -                                                           this, 1, 0, xattr[i]); +                                                           this, 1, 0, xattr[i], +                                                           NULL);                                  break;                          } @@ -685,13 +694,15 @@ afr_changelog_post_op (call_frame_t *frame, xlator_t *this)                                              priv->children[i],                                              priv->children[i]->fops->fxattrop,                                              local->fd, -                                            GF_XATTROP_ADD_ARRAY, xattr[i]); +                                            GF_XATTROP_ADD_ARRAY, xattr[i], +                                            NULL);                          else                                  STACK_WIND (frame, afr_changelog_post_op_cbk,                                              priv->children[i],                                              priv->children[i]->fops->xattrop,                                              &local->transaction.parent_loc, -                                            GF_XATTROP_ADD_ARRAY, xattr[i]); +                                            GF_XATTROP_ADD_ARRAY, xattr[i], +                                            NULL);                  }                  break;                  } @@ -711,7 +722,8 @@ out:  int32_t  afr_changelog_pre_op_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)  {          afr_local_t *   local = NULL;          afr_private_t * priv  = this->private; @@ -831,7 +843,8 @@ afr_changelog_pre_op (call_frame_t *frame, xlator_t *this)                                                     priv->children[i],                                                     priv->children[i]->fops->xattrop,                                                     &(local->loc), -                                                   GF_XATTROP_ADD_ARRAY, xattr[i]); +                                                   GF_XATTROP_ADD_ARRAY, xattr[i], +                                                   NULL);                                  break;                          } @@ -850,7 +863,8 @@ afr_changelog_pre_op (call_frame_t *frame, xlator_t *this)                          if (piggyback)                                  afr_changelog_pre_op_cbk (frame, (void *)(long)i, -                                                          this, 1, 0, xattr[i]); +                                                          this, 1, 0, xattr[i], +                                                          NULL);                          else                                  STACK_WIND_COOKIE (frame,                                                     afr_changelog_pre_op_cbk, @@ -858,14 +872,16 @@ afr_changelog_pre_op (call_frame_t *frame, xlator_t *this)                                                     priv->children[i],                                                     priv->children[i]->fops->fxattrop,                                                     local->fd, -                                                   GF_XATTROP_ADD_ARRAY, xattr[i]); +                                                   GF_XATTROP_ADD_ARRAY, xattr[i], +                                                   NULL);                  }                  break;                  case AFR_METADATA_TRANSACTION:                  {                          if (local->optimistic_change_log) {                                  afr_changelog_pre_op_cbk (frame, (void *)(long)i, -                                                          this, 1, 0, xattr[i]); +                                                          this, 1, 0, xattr[i], +                                                          NULL);                                  break;                          } @@ -876,7 +892,8 @@ afr_changelog_pre_op (call_frame_t *frame, xlator_t *this)                                                     priv->children[i],                                                     priv->children[i]->fops->fxattrop,                                                     local->fd, -                                                   GF_XATTROP_ADD_ARRAY, xattr[i]); +                                                   GF_XATTROP_ADD_ARRAY, xattr[i], +                                                   NULL);                          else                                  STACK_WIND_COOKIE (frame,                                                     afr_changelog_pre_op_cbk, @@ -884,7 +901,8 @@ afr_changelog_pre_op (call_frame_t *frame, xlator_t *this)                                                     priv->children[i],                                                     priv->children[i]->fops->xattrop,                                                     &(local->loc), -                                                   GF_XATTROP_ADD_ARRAY, xattr[i]); +                                                   GF_XATTROP_ADD_ARRAY, xattr[i], +                                                   NULL);                  }                  break; @@ -892,7 +910,8 @@ afr_changelog_pre_op (call_frame_t *frame, xlator_t *this)                  {                          if (local->optimistic_change_log) {                                  afr_changelog_pre_op_cbk (frame, (void *)(long)i, -                                                          this, 1, 0, xattr[i]); +                                                          this, 1, 0, xattr[i], +                                                          NULL);                          } else {                                  STACK_WIND_COOKIE (frame,                                                     afr_changelog_pre_op_cbk, @@ -900,7 +919,8 @@ afr_changelog_pre_op (call_frame_t *frame, xlator_t *this)                                                     priv->children[i],                                                     priv->children[i]->fops->xattrop,                                                     &local->transaction.new_parent_loc, -                                                   GF_XATTROP_ADD_ARRAY, xattr[i]); +                                                   GF_XATTROP_ADD_ARRAY, xattr[i], +                                                   NULL);                          }                          call_count--; @@ -927,7 +947,8 @@ afr_changelog_pre_op (call_frame_t *frame, xlator_t *this)                  {                          if (local->optimistic_change_log) {                                  afr_changelog_pre_op_cbk (frame, (void *)(long)i, -                                                          this, 1, 0, xattr[i]); +                                                          this, 1, 0, xattr[i], +                                                          NULL);                                  break;                          } @@ -938,7 +959,8 @@ afr_changelog_pre_op (call_frame_t *frame, xlator_t *this)                                                     priv->children[i],                                                     priv->children[i]->fops->fxattrop,                                                     local->fd, -                                                   GF_XATTROP_ADD_ARRAY, xattr[i]); +                                                   GF_XATTROP_ADD_ARRAY, xattr[i], +                                                   NULL);                          else                                  STACK_WIND_COOKIE (frame,                                                     afr_changelog_pre_op_cbk, @@ -946,7 +968,8 @@ afr_changelog_pre_op (call_frame_t *frame, xlator_t *this)                                                     priv->children[i],                                                     priv->children[i]->fops->xattrop,                                                     &local->transaction.parent_loc, -                                                   GF_XATTROP_ADD_ARRAY, xattr[i]); +                                                   GF_XATTROP_ADD_ARRAY, xattr[i], +                                                   NULL);                  }                  break;                  } diff --git a/xlators/cluster/afr/src/afr.h b/xlators/cluster/afr/src/afr.h index 09b1bf2a9..918e44d7d 100644 --- a/xlators/cluster/afr/src/afr.h +++ b/xlators/cluster/afr/src/afr.h @@ -449,7 +449,6 @@ typedef struct _afr_local {                  struct {                          int32_t flags; -                        int32_t wbflags;                  } open;                  struct { @@ -700,6 +699,13 @@ typedef struct _afr_local {          afr_self_heal_t self_heal;          struct marker_str     marker; + +        /* extra data for fops */ +        dict_t         *xdata_req; +        dict_t         *xdata_rsp; + +        mode_t          umask; +        int             xflag;  } afr_local_t;  typedef enum { @@ -722,7 +728,6 @@ typedef struct {          unsigned int *lock_acquired;          int flags; -        int32_t wbflags;          uint64_t up_count;   /* number of CHILD_UPs this fd has seen */          uint64_t down_count; /* number of CHILD_DOWNs this fd has seen */ @@ -858,7 +863,7 @@ afr_set_split_brain (xlator_t *this, inode_t *inode, gf_boolean_t set);  int  afr_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);  void  afr_set_opendir_done (xlator_t *this, inode_t *inode); @@ -1032,7 +1037,7 @@ void  afr_set_low_priority (call_frame_t *frame);  int  afr_child_fd_ctx_set (xlator_t *this, fd_t *fd, int32_t child, -                      int flags, int32_t wb_flags); +                      int flags);  gf_boolean_t  afr_have_quorum (char *logname, afr_private_t *priv); diff --git a/xlators/cluster/afr/src/pump.c b/xlators/cluster/afr/src/pump.c index 21d10aff2..8667b4007 100644 --- a/xlators/cluster/afr/src/pump.c +++ b/xlators/cluster/afr/src/pump.c @@ -487,7 +487,7 @@ pump_update_resume_path (xlator_t *this)  static int32_t  pump_xattr_cleaner (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)  {          afr_private_t  *priv      = NULL;          loc_t           loc       = {0}; @@ -753,7 +753,7 @@ pump_cmd_start_setxattr_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)  {          call_frame_t *prev = NULL; @@ -846,7 +846,7 @@ pump_initiate_sink_connect (call_frame_t *frame, xlator_t *this)  		    PUMP_SINK_CHILD(this)->fops->setxattr,  		    &loc,  		    dict, -		    0); +		    0, NULL);          ret = 0; @@ -880,7 +880,7 @@ pump_cmd_start_getxattr_cbk (call_frame_t *frame,                               xlator_t *this,                               int32_t op_ret,                               int32_t op_errno, -                             dict_t *dict) +                             dict_t *dict, dict_t *xdata)  {          afr_local_t *local = NULL;          char *path = NULL; @@ -996,7 +996,7 @@ pump_execute_status (call_frame_t *frame, xlator_t *this)  out: -        AFR_STACK_UNWIND (getxattr, frame, op_ret, op_errno, dict); +        AFR_STACK_UNWIND (getxattr, frame, op_ret, op_errno, dict, NULL);          if (dict)                  dict_unref (dict); @@ -1051,7 +1051,7 @@ pump_execute_start (call_frame_t *frame, xlator_t *this)  		    PUMP_SOURCE_CHILD(this),  		    PUMP_SOURCE_CHILD(this)->fops->getxattr,  		    &loc, -		    PUMP_PATH); +		    PUMP_PATH, NULL);          ret = 0; @@ -1069,7 +1069,7 @@ static int  pump_cleanup_helper (void *data) {          call_frame_t *frame = data; -        pump_xattr_cleaner (frame, 0, frame->this, 0, 0); +        pump_xattr_cleaner (frame, 0, frame->this, 0, 0, NULL);          return 0;  } @@ -1151,7 +1151,7 @@ pump_execute_abort (call_frame_t *frame, xlator_t *this)          } else {                  pump_priv->cleaner = fop_setxattr_cbk_stub (frame,                                                              pump_xattr_cleaner, -                                                            0, 0); +                                                            0, 0, NULL);          }          return 0; @@ -1328,7 +1328,7 @@ __filter_xattrs (dict_t *dict)  int32_t  pump_getxattr_cbk (call_frame_t *frame, void *cookie,  		  xlator_t *this, int32_t op_ret, int32_t op_errno, -		  dict_t *dict) +		  dict_t *dict, dict_t *xdata)  {  	afr_private_t   *priv           = NULL;  	afr_local_t     *local          = NULL; @@ -1363,7 +1363,7 @@ pump_getxattr_cbk (call_frame_t *frame, void *cookie,  				   children[next_call_child],  				   children[next_call_child]->fops->getxattr,  				   &local->loc, -				   local->cont.getxattr.name); +				   local->cont.getxattr.name, NULL);  	}  out: @@ -1371,7 +1371,7 @@ out:                  if (op_ret >= 0 && dict)                          __filter_xattrs (dict); -		AFR_STACK_UNWIND (getxattr, frame, op_ret, op_errno, dict); +		AFR_STACK_UNWIND (getxattr, frame, op_ret, op_errno, dict, NULL);  	}  	return 0; @@ -1379,7 +1379,7 @@ out:  int32_t  pump_getxattr (call_frame_t *frame, xlator_t *this, -	      loc_t *loc, const char *name) +	      loc_t *loc, const char *name, dict_t *xdata)  {  	afr_private_t *   priv       = NULL;  	xlator_t **       children   = NULL; @@ -1402,7 +1402,7 @@ pump_getxattr (call_frame_t *frame, xlator_t *this,                  STACK_WIND (frame, default_getxattr_cbk,                              FIRST_CHILD (this),                              (FIRST_CHILD (this))->fops->getxattr, -                            loc, name); +                            loc, name, xdata);                  return 0;          } @@ -1456,12 +1456,12 @@ pump_getxattr (call_frame_t *frame, xlator_t *this,  	STACK_WIND_COOKIE (frame, pump_getxattr_cbk,  			   (void *) (long) call_child,  			   children[call_child], children[call_child]->fops->getxattr, -			   loc, name); +			   loc, name, xdata);  	ret = 0;  out:  	if (ret < 0) -		AFR_STACK_UNWIND (getxattr, frame, -1, op_errno, NULL); +		AFR_STACK_UNWIND (getxattr, frame, -1, op_errno, NULL, NULL);  	return 0;  } @@ -1483,14 +1483,14 @@ afr_setxattr_unwind (call_frame_t *frame, xlator_t *this)  	if (main_frame) {  		AFR_STACK_UNWIND (setxattr, main_frame, -                                  local->op_ret, local->op_errno); +                                  local->op_ret, local->op_errno, NULL);  	}  	return 0;  }  static int  afr_setxattr_wind_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)  {  	afr_local_t *   local = NULL;  	afr_private_t * priv  = NULL; @@ -1559,7 +1559,7 @@ afr_setxattr_wind (call_frame_t *frame, xlator_t *this)  					   priv->children[i]->fops->setxattr,  					   &local->loc,  					   local->cont.setxattr.dict, -					   local->cont.setxattr.flags); +					   local->cont.setxattr.flags, NULL);  			if (!--call_count)  				break; @@ -1587,11 +1587,9 @@ pump_setxattr_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)  { -	STACK_UNWIND (frame, -		      op_ret, -		      op_errno); +	AFR_STACK_UNWIND (setxattr, frame, op_ret, op_errno, xdata);  	return 0;  } @@ -1614,7 +1612,7 @@ pump_command_reply (call_frame_t *frame, xlator_t *this)          AFR_STACK_UNWIND (setxattr,                            frame,                            local->op_ret, -                          local->op_errno); +                          local->op_errno, NULL);          return 0;  } @@ -1651,7 +1649,7 @@ pump_parse_command (call_frame_t *frame, xlator_t *this,  int  pump_setxattr (call_frame_t *frame, xlator_t *this, -               loc_t *loc, dict_t *dict, int32_t flags) +               loc_t *loc, dict_t *dict, int32_t flags, dict_t *xdata)  {  	afr_private_t * priv  = NULL;  	afr_local_t   * local = NULL; @@ -1672,7 +1670,7 @@ pump_setxattr (call_frame_t *frame, xlator_t *this,                  STACK_WIND (frame, default_setxattr_cbk,                              FIRST_CHILD (this),                              (FIRST_CHILD (this))->fops->setxattr, -                            loc, dict, flags); +                            loc, dict, flags, xdata);                  return 0;          } @@ -1726,7 +1724,7 @@ out:  	if (ret < 0) {  		if (transaction_frame)  			AFR_STACK_DESTROY (transaction_frame); -		AFR_STACK_UNWIND (setxattr, frame, -1, op_errno); +		AFR_STACK_UNWIND (setxattr, frame, -1, op_errno, NULL);  	}  	return 0; @@ -1760,7 +1758,7 @@ static int32_t  pump_truncate (call_frame_t *frame,                 xlator_t *this,                 loc_t *loc, -               off_t offset) +               off_t offset, dict_t *xdata)  {          afr_private_t *priv  = NULL;  	priv = this->private; @@ -1770,11 +1768,11 @@ pump_truncate (call_frame_t *frame,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->truncate,                              loc, -                            offset); +                            offset, xdata);                  return 0;          } -        afr_truncate (frame, this, loc, offset); +        afr_truncate (frame, this, loc, offset, xdata);          return 0;  } @@ -1783,7 +1781,7 @@ static int32_t  pump_ftruncate (call_frame_t *frame,                  xlator_t *this,                  fd_t *fd, -                off_t offset) +                off_t offset, dict_t *xdata)  {          afr_private_t *priv  = NULL;  	priv = this->private; @@ -1793,11 +1791,11 @@ pump_ftruncate (call_frame_t *frame,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->ftruncate,                              fd, -                            offset); +                            offset, xdata);                  return 0;          } -        afr_ftruncate (frame, this, fd, offset); +        afr_ftruncate (frame, this, fd, offset, xdata);          return 0;  } @@ -1806,7 +1804,7 @@ pump_ftruncate (call_frame_t *frame,  int  pump_mknod (call_frame_t *frame, xlator_t *this, -            loc_t *loc, mode_t mode, dev_t rdev, dict_t *parms) +            loc_t *loc, mode_t mode, dev_t rdev, mode_t umask, dict_t *xdata)  {          afr_private_t *priv  = NULL;  	priv = this->private; @@ -1814,10 +1812,10 @@ pump_mknod (call_frame_t *frame, xlator_t *this,                  STACK_WIND (frame, default_mknod_cbk,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->mknod, -                            loc, mode, rdev, parms); +                            loc, mode, rdev, umask, xdata);                  return 0;          } -        afr_mknod (frame, this, loc, mode, rdev, parms); +        afr_mknod (frame, this, loc, mode, rdev, umask, xdata);          return 0;  } @@ -1826,7 +1824,7 @@ pump_mknod (call_frame_t *frame, xlator_t *this,  int  pump_mkdir (call_frame_t *frame, xlator_t *this, -            loc_t *loc, mode_t mode, dict_t *params) +            loc_t *loc, mode_t mode, mode_t umask, dict_t *xdata)  {          afr_private_t *priv  = NULL;  	priv = this->private; @@ -1834,10 +1832,10 @@ pump_mkdir (call_frame_t *frame, xlator_t *this,                  STACK_WIND (frame, default_mkdir_cbk,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->mkdir, -                            loc, mode, params); +                            loc, mode, umask, xdata);                  return 0;          } -        afr_mkdir (frame, this, loc, mode, params); +        afr_mkdir (frame, this, loc, mode, umask, xdata);          return 0;  } @@ -1846,7 +1844,7 @@ pump_mkdir (call_frame_t *frame, xlator_t *this,  static int32_t  pump_unlink (call_frame_t *frame,               xlator_t *this, -             loc_t *loc) +             loc_t *loc, int xflag, dict_t *xdata)  {          afr_private_t *priv  = NULL;  	priv = this->private; @@ -1855,10 +1853,10 @@ pump_unlink (call_frame_t *frame,                              default_unlink_cbk,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->unlink, -                            loc); +                            loc, xflag, xdata);                  return 0;          } -        afr_unlink (frame, this, loc); +        afr_unlink (frame, this, loc, xflag, xdata);          return 0;  } @@ -1866,7 +1864,7 @@ pump_unlink (call_frame_t *frame,  static int  pump_rmdir (call_frame_t *frame, xlator_t *this, -            loc_t *loc, int flags) +            loc_t *loc, int flags, dict_t *xdata)  {          afr_private_t *priv  = NULL; @@ -1876,11 +1874,11 @@ pump_rmdir (call_frame_t *frame, xlator_t *this,                  STACK_WIND (frame, default_rmdir_cbk,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->rmdir, -                            loc, flags); +                            loc, flags, xdata);                  return 0;          } -        afr_rmdir (frame, this, loc, flags); +        afr_rmdir (frame, this, loc, flags, xdata);          return 0;  } @@ -1889,7 +1887,7 @@ pump_rmdir (call_frame_t *frame, xlator_t *this,  int  pump_symlink (call_frame_t *frame, xlator_t *this, -              const char *linkpath, loc_t *loc, dict_t *params) +              const char *linkpath, loc_t *loc, mode_t umask, dict_t *xdata)  {          afr_private_t *priv  = NULL;  	priv = this->private; @@ -1897,10 +1895,10 @@ pump_symlink (call_frame_t *frame, xlator_t *this,                  STACK_WIND (frame, default_symlink_cbk,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->symlink, -                            linkpath, loc, params); +                            linkpath, loc, umask, xdata);                  return 0;          } -        afr_symlink (frame, this, linkpath, loc, params); +        afr_symlink (frame, this, linkpath, loc, umask, xdata);          return 0;  } @@ -1910,7 +1908,7 @@ static int32_t  pump_rename (call_frame_t *frame,               xlator_t *this,               loc_t *oldloc, -             loc_t *newloc) +             loc_t *newloc, dict_t *xdata)  {          afr_private_t *priv  = NULL;  	priv = this->private; @@ -1919,10 +1917,10 @@ pump_rename (call_frame_t *frame,                              default_rename_cbk,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->rename, -                            oldloc, newloc); +                            oldloc, newloc, xdata);                  return 0;          } -        afr_rename (frame, this, oldloc, newloc); +        afr_rename (frame, this, oldloc, newloc, xdata);          return 0;  } @@ -1932,7 +1930,7 @@ static int32_t  pump_link (call_frame_t *frame,             xlator_t *this,             loc_t *oldloc, -           loc_t *newloc) +           loc_t *newloc, dict_t *xdata)  {          afr_private_t *priv  = NULL;  	priv = this->private; @@ -1941,10 +1939,10 @@ pump_link (call_frame_t *frame,                              default_link_cbk,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->link, -                            oldloc, newloc); +                            oldloc, newloc, xdata);                  return 0;          } -        afr_link (frame, this, oldloc, newloc); +        afr_link (frame, this, oldloc, newloc, xdata);          return 0;  } @@ -1953,7 +1951,7 @@ pump_link (call_frame_t *frame,  static int32_t  pump_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 umask, fd_t *fd, dict_t *xdata)  {          afr_private_t *priv  = NULL;  	priv = this->private; @@ -1961,10 +1959,10 @@ pump_create (call_frame_t *frame, xlator_t *this,                  STACK_WIND (frame, default_create_cbk,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->create, -                            loc, flags, mode, fd, params); +                            loc, flags, mode, umask, fd, xdata);                  return 0;          } -        afr_create (frame, this, loc, flags, mode, fd, params); +        afr_create (frame, this, loc, flags, mode, umask, fd, xdata);          return 0;  } @@ -1974,8 +1972,7 @@ static int32_t  pump_open (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)  {          afr_private_t *priv  = NULL;  	priv = this->private; @@ -1984,10 +1981,10 @@ pump_open (call_frame_t *frame,                              default_open_cbk,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->open, -                            loc, flags, fd, wbflags); +                            loc, flags, fd, xdata);                  return 0;          } -        afr_open (frame, this, loc, flags, fd, wbflags); +        afr_open (frame, this, loc, flags, fd, xdata);          return 0;  } @@ -2000,7 +1997,7 @@ pump_writev (call_frame_t *frame,               struct iovec *vector,               int32_t count,               off_t off, uint32_t flags, -             struct iobref *iobref) +             struct iobref *iobref, dict_t *xdata)  {          afr_private_t *priv  = NULL;  	priv = this->private; @@ -2013,19 +2010,19 @@ pump_writev (call_frame_t *frame,                              vector,                              count,                              off, flags, -                            iobref); +                            iobref, xdata);                  return 0;          } -        afr_writev (frame, this, fd, vector, count, off, flags, iobref); -        return 0; +        afr_writev (frame, this, fd, vector, count, off, flags, iobref, xdata); +        return 0;  }  static int32_t  pump_flush (call_frame_t *frame,              xlator_t *this, -            fd_t *fd) +            fd_t *fd, dict_t *xdata)  {          afr_private_t *priv  = NULL;  	priv = this->private; @@ -2034,10 +2031,10 @@ pump_flush (call_frame_t *frame,                              default_flush_cbk,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->flush, -                            fd); +                            fd, xdata);                  return 0;          } -        afr_flush (frame, this, fd); +        afr_flush (frame, this, fd, xdata);          return 0;  } @@ -2047,7 +2044,7 @@ static int32_t  pump_fsync (call_frame_t *frame,              xlator_t *this,              fd_t *fd, -            int32_t flags) +            int32_t flags, dict_t *xdata)  {          afr_private_t *priv  = NULL;  	priv = this->private; @@ -2057,10 +2054,10 @@ pump_fsync (call_frame_t *frame,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->fsync,                              fd, -                            flags); +                            flags, xdata);                  return 0;          } -        afr_fsync (frame, this, fd, flags); +        afr_fsync (frame, this, fd, flags, xdata);          return 0;  } @@ -2069,7 +2066,7 @@ pump_fsync (call_frame_t *frame,  static int32_t  pump_opendir (call_frame_t *frame,                xlator_t *this, -              loc_t *loc, fd_t *fd) +              loc_t *loc, fd_t *fd, dict_t *xdata)  {          afr_private_t *priv  = NULL;  	priv = this->private; @@ -2078,10 +2075,10 @@ pump_opendir (call_frame_t *frame,                              default_opendir_cbk,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->opendir, -                            loc, fd); +                            loc, fd, xdata);                  return 0;          } -        afr_opendir (frame, this, loc, fd); +        afr_opendir (frame, this, loc, fd, xdata);          return 0;  } @@ -2091,7 +2088,7 @@ static int32_t  pump_fsyncdir (call_frame_t *frame,                 xlator_t *this,                 fd_t *fd, -               int32_t flags) +               int32_t flags, dict_t *xdata)  {          afr_private_t *priv  = NULL;  	priv = this->private; @@ -2101,10 +2098,10 @@ pump_fsyncdir (call_frame_t *frame,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->fsyncdir,                              fd, -                            flags); +                            flags, xdata);                  return 0;          } -        afr_fsyncdir (frame, this, fd, flags); +        afr_fsyncdir (frame, this, fd, flags, xdata);          return 0;  } @@ -2115,7 +2112,7 @@ pump_xattrop (call_frame_t *frame,                xlator_t *this,                loc_t *loc,                gf_xattrop_flags_t flags, -              dict_t *dict) +              dict_t *dict, dict_t *xdata)  {          afr_private_t *priv  = NULL;  	priv = this->private; @@ -2126,10 +2123,10 @@ pump_xattrop (call_frame_t *frame,                              FIRST_CHILD(this)->fops->xattrop,                              loc,                              flags, -                            dict); +                            dict, xdata);                  return 0;          } -        afr_xattrop (frame, this, loc, flags, dict); +        afr_xattrop (frame, this, loc, flags, dict, xdata);          return 0;  } @@ -2139,7 +2136,7 @@ pump_fxattrop (call_frame_t *frame,                 xlator_t *this,                 fd_t *fd,                 gf_xattrop_flags_t flags, -               dict_t *dict) +               dict_t *dict, dict_t *xdata)  {          afr_private_t *priv  = NULL;  	priv = this->private; @@ -2150,10 +2147,10 @@ pump_fxattrop (call_frame_t *frame,                              FIRST_CHILD(this)->fops->fxattrop,                              fd,                              flags, -                            dict); +                            dict, xdata);                  return 0;          } -        afr_fxattrop (frame, this, fd, flags, dict); +        afr_fxattrop (frame, this, fd, flags, dict, xdata);          return 0;  } @@ -2163,7 +2160,7 @@ static int32_t  pump_removexattr (call_frame_t *frame,                    xlator_t *this,                    loc_t *loc, -                  const char *name) +                  const char *name, dict_t *xdata)  {          afr_private_t *priv     = NULL;          int            op_errno = -1; @@ -2181,14 +2178,14 @@ pump_removexattr (call_frame_t *frame,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->removexattr,                              loc, -                            name); +                            name, xdata);                  return 0;          } -        afr_removexattr (frame, this, loc, name); +        afr_removexattr (frame, this, loc, name, xdata);   out:          if (op_errno) -                AFR_STACK_UNWIND (removexattr, frame, -1, op_errno); +                AFR_STACK_UNWIND (removexattr, frame, -1, op_errno, NULL);          return 0;  } @@ -2200,7 +2197,7 @@ pump_readdir (call_frame_t *frame,                xlator_t *this,                fd_t *fd,                size_t size, -              off_t off) +              off_t off, dict_t *xdata)  {          afr_private_t *priv  = NULL;  	priv = this->private; @@ -2209,10 +2206,10 @@ pump_readdir (call_frame_t *frame,                              default_readdir_cbk,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->readdir, -                            fd, size, off); +                            fd, size, off, xdata);                  return 0;          } -        afr_readdir (frame, this, fd, size, off); +        afr_readdir (frame, this, fd, size, off, xdata);          return 0;  } @@ -2269,7 +2266,7 @@ pump_setattr (call_frame_t *frame,                xlator_t *this,                loc_t *loc,                struct iatt *stbuf, -              int32_t valid) +              int32_t valid, dict_t *xdata)  {          afr_private_t *priv  = NULL;  	priv = this->private; @@ -2278,10 +2275,10 @@ pump_setattr (call_frame_t *frame,                              default_setattr_cbk,                              FIRST_CHILD (this),                              FIRST_CHILD (this)->fops->setattr, -                            loc, stbuf, valid); +                            loc, stbuf, valid, xdata);                  return 0;          } -        afr_setattr (frame, this, loc, stbuf, valid); +        afr_setattr (frame, this, loc, stbuf, valid, xdata);          return 0;  } @@ -2292,7 +2289,7 @@ pump_fsetattr (call_frame_t *frame,                 xlator_t *this,                 fd_t *fd,                 struct iatt *stbuf, -               int32_t valid) +               int32_t valid, dict_t *xdata)  {          afr_private_t *priv  = NULL;  	priv = this->private; @@ -2301,10 +2298,10 @@ pump_fsetattr (call_frame_t *frame,                              default_fsetattr_cbk,                              FIRST_CHILD (this),                              FIRST_CHILD (this)->fops->fsetattr, -                            fd, stbuf, valid); +                            fd, stbuf, valid, xdata);                  return 0;          } -        afr_fsetattr (frame, this, fd, stbuf, valid); +        afr_fsetattr (frame, this, fd, stbuf, valid, xdata);          return 0;  } diff --git a/xlators/cluster/dht/src/dht-common.c b/xlators/cluster/dht/src/dht-common.c index 059246d97..f16ecb1b6 100644 --- a/xlators/cluster/dht/src/dht-common.c +++ b/xlators/cluster/dht/src/dht-common.c @@ -114,7 +114,7 @@ out:  int  dht_lookup_selfheal_cbk (call_frame_t *frame, void *cookie,                           xlator_t *this, -                         int op_ret, int op_errno) +                         int op_ret, int op_errno, dict_t *xdata)  {          dht_local_t  *local = NULL;          dht_layout_t *layout = NULL; @@ -380,7 +380,8 @@ dht_discover (call_frame_t *frame, xlator_t *this, loc_t *loc)          return 0;  err: -        DHT_STACK_UNWIND (lookup, frame, -1, op_errno, NULL, NULL, NULL, NULL); +        DHT_STACK_UNWIND (lookup, frame, -1, op_errno, NULL, NULL, NULL, +                          NULL);          return 0;  } @@ -673,7 +674,8 @@ dht_lookup_linkfile_create_cbk (call_frame_t *frame, void *cookie,                                  xlator_t *this,                                  int32_t op_ret, int32_t op_errno,                                  inode_t *inode, struct iatt *stbuf, -                                struct iatt *preparent, struct iatt *postparent) +                                struct iatt *preparent, struct iatt *postparent, +                                dict_t *xdata)  {          dht_local_t  *local = NULL;          xlator_t     *cached_subvol = NULL; @@ -836,7 +838,8 @@ dht_lookup_everywhere_done (call_frame_t *frame, xlator_t *this)  int  dht_lookup_unlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                         int op_ret, int op_errno, -                       struct iatt *preparent, struct iatt *postparent) +                       struct iatt *preparent, struct iatt *postparent, +                       dict_t *xdata)  {          int  this_call_cnt = 0; @@ -955,7 +958,7 @@ unlock:                                  "deleting stale linkfile %s on %s",                                  loc->path, subvol->name);                          STACK_WIND (frame, dht_lookup_unlink_cbk, -                                    subvol, subvol->fops->unlink, loc); +                                    subvol, subvol->fops->unlink, loc, 0, NULL);                          return 0;                  }          } @@ -1447,7 +1450,8 @@ dht_lookup (call_frame_t *frame, xlator_t *this,  err:          op_errno = (op_errno == -1) ? errno : op_errno; -        DHT_STACK_UNWIND (lookup, frame, -1, op_errno, NULL, NULL, NULL, NULL); +        DHT_STACK_UNWIND (lookup, frame, -1, op_errno, NULL, NULL, NULL, +                          NULL);          return 0;  } @@ -1455,7 +1459,7 @@ err:  int  dht_unlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  int op_ret, int op_errno, struct iatt *preparent, -                struct iatt *postparent) +                struct iatt *postparent, dict_t *xdata)  {          dht_local_t  *local = NULL;          call_frame_t *prev  = NULL; @@ -1486,7 +1490,7 @@ unlock:          UNLOCK (&frame->lock);          DHT_STACK_UNWIND (unlink, frame, local->op_ret, local->op_errno, -                          &local->preparent, &local->postparent); +                          &local->preparent, &local->postparent, NULL);          return 0;  } @@ -1495,7 +1499,7 @@ unlock:  int  dht_unlink_linkfile_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                           int op_ret, int op_errno, struct iatt *preparent, -                         struct iatt *postparent) +                         struct iatt *postparent, dict_t *xdata)  {          dht_local_t  *local = NULL;          call_frame_t *prev = NULL; @@ -1534,19 +1538,19 @@ unlock:          STACK_WIND (frame, dht_unlink_cbk,                      cached_subvol, cached_subvol->fops->unlink, -                    &local->loc); +                    &local->loc, local->flags, NULL);          return 0;  err:          DHT_STACK_UNWIND (unlink, frame, -1, local->op_errno, -                          NULL, NULL); +                          NULL, NULL, NULL);          return 0;  }  static int  dht_ufo_xattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                   int op_ret, int op_errno) +                   int op_ret, int op_errno, dict_t *xdata)  {          dht_local_t  *local = NULL;          int           this_call_cnt = 0; @@ -1571,7 +1575,8 @@ unlock:          this_call_cnt = dht_frame_return (frame);          if (is_last_call (this_call_cnt)) { -                DHT_STACK_UNWIND (setxattr, frame, local->op_ret, local->op_errno); +                DHT_STACK_UNWIND (setxattr, frame, local->op_ret, +                                  local->op_errno, NULL);          }          return 0; @@ -1580,7 +1585,7 @@ unlock:  int  dht_err_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -             int op_ret, int op_errno) +             int op_ret, int op_errno, dict_t *xdata)  {          dht_local_t  *local = NULL;          int           this_call_cnt = 0; @@ -1606,7 +1611,8 @@ unlock:          this_call_cnt = dht_frame_return (frame);          if (is_last_call (this_call_cnt)) { -                DHT_STACK_UNWIND (setxattr, frame, local->op_ret, local->op_errno); +                DHT_STACK_UNWIND (setxattr, frame, local->op_ret, +                                  local->op_errno, NULL);          }          return 0; @@ -1650,7 +1656,7 @@ dht_fill_pathinfo_xattr (xlator_t *this, dht_local_t *local,  int  dht_vgetxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                           int op_ret, int op_errno, dict_t *xattr) +                   int op_ret, int op_errno, dict_t *xattr, dict_t *xdata)  {          dht_local_t *local         = NULL;          int          ret           = 0; @@ -1734,7 +1740,8 @@ dht_vgetxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  if (local->xattr_val)                          GF_FREE (local->xattr_val); -                DHT_STACK_UNWIND (getxattr, frame, op_ret, op_errno, dict); +                DHT_STACK_UNWIND (getxattr, frame, op_ret, op_errno, dict, +                                  xdata);                  if (dict)                          dict_unref (dict); @@ -1753,7 +1760,7 @@ dht_vgetxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  /* This will happen if there pending */                  STACK_WIND (frame, dht_vgetxattr_cbk, local->hashed_subvol,                              local->hashed_subvol->fops->getxattr, -                            &local->loc, local->key); +                            &local->loc, local->key, NULL);                  return 0;          } @@ -1761,13 +1768,14 @@ dht_vgetxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          gf_log ("this->name", GF_LOG_ERROR, "Unable to find hashed_subvol"                  " for path %s", local->xattr_val); -        DHT_STACK_UNWIND (getxattr, frame, -1, op_errno, dict); +        DHT_STACK_UNWIND (getxattr, frame, -1, op_errno, dict, xdata);          return 0;  }  int  dht_linkinfo_getxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                           int op_ret, int op_errno, dict_t *xattr) +                           int op_ret, int op_errno, dict_t *xattr, +                           dict_t *xdata)  {          int   ret   = 0;          char *value = NULL; @@ -1782,14 +1790,14 @@ dht_linkinfo_getxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  }          } -        DHT_STACK_UNWIND (getxattr, frame, op_ret, op_errno, xattr); +        DHT_STACK_UNWIND (getxattr, frame, op_ret, op_errno, xattr, xdata);          return 0;  }  int  dht_getxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                  int op_ret, int op_errno, dict_t *xattr) +                  int op_ret, int op_errno, dict_t *xattr, dict_t *xdata)  {          int             this_call_cnt = 0;          dht_local_t     *local = NULL; @@ -1822,23 +1830,24 @@ dht_getxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          }  out:          if (is_last_call (this_call_cnt)) { -                DHT_STACK_UNWIND (getxattr, frame, local->op_ret, op_errno, local->xattr); +                DHT_STACK_UNWIND (getxattr, frame, local->op_ret, op_errno, +                                  local->xattr, NULL);          }          return 0;  }  int32_t  dht_getxattr_unwind (call_frame_t *frame, -                     int op_ret, int op_errno, dict_t *dict) +                     int op_ret, int op_errno, dict_t *dict, dict_t *xdata)  { -        DHT_STACK_UNWIND (getxattr, frame, op_ret, op_errno, dict); +        DHT_STACK_UNWIND (getxattr, frame, op_ret, op_errno, dict, xdata);          return 0;  }  int  dht_getxattr (call_frame_t *frame, xlator_t *this, -              loc_t *loc, const char *key) +              loc_t *loc, const char *key, dict_t *xdata)  {          xlator_t     *subvol        = NULL;          xlator_t     *hashed_subvol = NULL; @@ -1890,7 +1899,7 @@ dht_getxattr (call_frame_t *frame, xlator_t *this,                  local->call_cnt = 1;                  STACK_WIND (frame, dht_vgetxattr_cbk, cached_subvol, -                            cached_subvol->fops->getxattr, loc, key); +                            cached_subvol->fops->getxattr, loc, key, NULL);                  return 0;          } @@ -1918,7 +1927,7 @@ dht_getxattr (call_frame_t *frame, xlator_t *this,                  if (hashed_subvol) {                          STACK_WIND (frame, dht_linkinfo_getxattr_cbk, hashed_subvol,                                      hashed_subvol->fops->getxattr, loc, -                                    GF_XATTR_PATHINFO_KEY); +                                    GF_XATTR_PATHINFO_KEY, NULL);                          return 0;                  }                  op_errno = ENODATA; @@ -1983,20 +1992,20 @@ dht_getxattr (call_frame_t *frame, xlator_t *this,                  subvol = layout->list[i].xlator;                  STACK_WIND (frame, dht_getxattr_cbk,                              subvol, subvol->fops->getxattr, -                            loc, key); +                            loc, key, NULL);          }          return 0;  err:          op_errno = (op_errno == -1) ? errno : op_errno; -        DHT_STACK_UNWIND (getxattr, frame, -1, op_errno, NULL); +        DHT_STACK_UNWIND (getxattr, frame, -1, op_errno, NULL, NULL);          return 0;  }  int  dht_fgetxattr (call_frame_t *frame, xlator_t *this, -               fd_t *fd, const char *key) +               fd_t *fd, const char *key, dict_t *xdata)  {          xlator_t     *subvol        = NULL;          dht_local_t  *local         = NULL; @@ -2044,20 +2053,20 @@ dht_fgetxattr (call_frame_t *frame, xlator_t *this,                  subvol = layout->list[i].xlator;                  STACK_WIND (frame, dht_getxattr_cbk,                              subvol, subvol->fops->fgetxattr, -                            fd, key); +                            fd, key, NULL);          }          return 0;  err:          op_errno = (op_errno == -1) ? errno : op_errno; -        DHT_STACK_UNWIND (fgetxattr, frame, -1, op_errno, NULL); +        DHT_STACK_UNWIND (fgetxattr, frame, -1, op_errno, NULL, NULL);          return 0;  }  int  dht_fsetxattr (call_frame_t *frame, xlator_t *this, -               fd_t *fd, dict_t *xattr, int flags) +               fd_t *fd, dict_t *xattr, int flags, dict_t *xdata)  {          xlator_t     *subvol   = NULL;          dht_local_t  *local    = NULL; @@ -2089,13 +2098,13 @@ dht_fsetxattr (call_frame_t *frame, xlator_t *this,          local->call_cnt = 1;          STACK_WIND (frame, dht_err_cbk, subvol, subvol->fops->fsetxattr, -                    fd, xattr, flags); +                    fd, xattr, flags, NULL);          return 0;  err:          op_errno = (op_errno == -1) ? errno : op_errno; -        DHT_STACK_UNWIND (fsetxattr, frame, -1, op_errno); +        DHT_STACK_UNWIND (fsetxattr, frame, -1, op_errno, NULL);          return 0;  } @@ -2103,16 +2112,18 @@ err:  static int  dht_common_setxattr_cbk (call_frame_t *frame, void *cookie, -                         xlator_t *this, int32_t op_ret, int32_t op_errno) +                         xlator_t *this, int32_t op_ret, int32_t op_errno, +                         dict_t *xdata)  { -        DHT_STACK_UNWIND (setxattr, frame, op_ret, op_errno); +        DHT_STACK_UNWIND (setxattr, frame, op_ret, op_errno, xdata);          return 0;  }  int  dht_checking_pathinfo_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                           int op_ret, int op_errno, dict_t *xattr) +                           int op_ret, int op_errno, dict_t *xattr, +                           dict_t *xdata)  {          int           i     = -1;          int           ret   = -1; @@ -2144,7 +2155,7 @@ dht_checking_pathinfo_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  out:          this_call_cnt = dht_frame_return (frame);          if (is_last_call (this_call_cnt)) { -                DHT_STACK_UNWIND (setxattr, frame, local->op_ret, ENOTSUP); +                DHT_STACK_UNWIND (setxattr, frame, local->op_ret, ENOTSUP, NULL);          }          return 0; @@ -2152,7 +2163,7 @@ out:  int  dht_setxattr (call_frame_t *frame, xlator_t *this, -              loc_t *loc, dict_t *xattr, int flags) +              loc_t *loc, dict_t *xattr, int flags, dict_t *xdata)  {          xlator_t     *subvol   = NULL;          dht_local_t  *local    = NULL; @@ -2217,7 +2228,7 @@ dht_setxattr (call_frame_t *frame, xlator_t *this,                          STACK_WIND (frame, dht_ufo_xattr_cbk,                                      layout->list[i].xlator,                                      layout->list[i].xlator->fops->setxattr, -                                    loc, xattr, flags); +                                    loc, xattr, flags, NULL);                  }                  return 0;          } @@ -2286,7 +2297,7 @@ dht_setxattr (call_frame_t *frame, xlator_t *this,                          STACK_WIND (frame, dht_checking_pathinfo_cbk,                                      conf->subvolumes[i],                                      conf->subvolumes[i]->fops->getxattr, -                                    loc, GF_XATTR_PATHINFO_KEY); +                                    loc, GF_XATTR_PATHINFO_KEY, NULL);                  }                  return 0;          } @@ -2325,14 +2336,14 @@ dht_setxattr (call_frame_t *frame, xlator_t *this,                  STACK_WIND (frame, dht_err_cbk,                              layout->list[i].xlator,                              layout->list[i].xlator->fops->setxattr, -                            loc, xattr, flags); +                            loc, xattr, flags, xdata);          }          return 0;  err:          op_errno = (op_errno == -1) ? errno : op_errno; -        DHT_STACK_UNWIND (setxattr, frame, -1, op_errno); +        DHT_STACK_UNWIND (setxattr, frame, -1, op_errno, NULL);          return 0;  } @@ -2340,7 +2351,7 @@ err:  int  dht_removexattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                     int op_ret, int op_errno) +                     int op_ret, int op_errno, dict_t *xdata)  {          dht_local_t  *local = NULL;          int           this_call_cnt = 0; @@ -2366,7 +2377,8 @@ unlock:          this_call_cnt = dht_frame_return (frame);          if (is_last_call (this_call_cnt)) { -                DHT_STACK_UNWIND (removexattr, frame, local->op_ret, local->op_errno); +                DHT_STACK_UNWIND (removexattr, frame, local->op_ret, +                                  local->op_errno, NULL);          }          return 0; @@ -2375,7 +2387,7 @@ unlock:  int  dht_removexattr (call_frame_t *frame, xlator_t *this, -                 loc_t *loc, const char *key) +                 loc_t *loc, const char *key, dict_t *xdata)  {          xlator_t     *subvol = NULL;          int           op_errno = -1; @@ -2424,21 +2436,21 @@ dht_removexattr (call_frame_t *frame, xlator_t *this,                  STACK_WIND (frame, dht_removexattr_cbk,                              layout->list[i].xlator,                              layout->list[i].xlator->fops->removexattr, -                            loc, key); +                            loc, key, NULL);          }          return 0;  err:          op_errno = (op_errno == -1) ? errno : op_errno; -        DHT_STACK_UNWIND (removexattr, frame, -1, op_errno); +        DHT_STACK_UNWIND (removexattr, frame, -1, op_errno, NULL);          return 0;  }  int  dht_fremovexattr (call_frame_t *frame, xlator_t *this, -                  fd_t *fd, const char *key) +                  fd_t *fd, const char *key, dict_t *xdata)  {          xlator_t     *subvol = NULL;          int           op_errno = -1; @@ -2485,14 +2497,14 @@ dht_fremovexattr (call_frame_t *frame, xlator_t *this,                  STACK_WIND (frame, dht_removexattr_cbk,                              layout->list[i].xlator,                              layout->list[i].xlator->fops->fremovexattr, -                            fd, key); +                            fd, key, NULL);          }          return 0;  err:          op_errno = (op_errno == -1) ? errno : op_errno; -        DHT_STACK_UNWIND (fremovexattr, frame, -1, op_errno); +        DHT_STACK_UNWIND (fremovexattr, frame, -1, op_errno, NULL);          return 0;  } @@ -2500,7 +2512,7 @@ err:  int  dht_fd_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -            int op_ret, int op_errno, fd_t *fd) +            int op_ret, int op_errno, fd_t *fd, dict_t *xdata)  {          dht_local_t  *local = NULL;          int           this_call_cnt = 0; @@ -2527,7 +2539,7 @@ unlock:          this_call_cnt = dht_frame_return (frame);          if (is_last_call (this_call_cnt))                  DHT_STACK_UNWIND (open, frame, local->op_ret, local->op_errno, -                                  local->fd); +                                  local->fd, NULL);          return 0;  } @@ -2557,7 +2569,7 @@ dht_normalize_stats (struct statvfs *buf, unsigned long bsize,  int  dht_statfs_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                int op_ret, int op_errno, struct statvfs *statvfs) +                int op_ret, int op_errno, struct statvfs *statvfs, dict_t *xdata)  {          dht_local_t *local         = NULL;          int          this_call_cnt = 0; @@ -2603,14 +2615,14 @@ unlock:          this_call_cnt = dht_frame_return (frame);          if (is_last_call (this_call_cnt))                  DHT_STACK_UNWIND (statfs, frame, local->op_ret, local->op_errno, -                                  &local->statvfs); +                                  &local->statvfs, xdata);          return 0;  }  int -dht_statfs (call_frame_t *frame, xlator_t *this, loc_t *loc) +dht_statfs (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *xdata)  {          xlator_t     *subvol = NULL;          dht_local_t  *local  = NULL; @@ -2639,7 +2651,8 @@ dht_statfs (call_frame_t *frame, xlator_t *this, loc_t *loc)                  for (i = 0; i < conf->subvolume_cnt; i++) {                          STACK_WIND (frame, dht_statfs_cbk,                                      conf->subvolumes[i], -                                    conf->subvolumes[i]->fops->statfs, loc); +                                    conf->subvolumes[i]->fops->statfs, loc, +                                    xdata);                  }                  return 0;          } @@ -2655,20 +2668,21 @@ dht_statfs (call_frame_t *frame, xlator_t *this, loc_t *loc)          local->call_cnt = 1;          STACK_WIND (frame, dht_statfs_cbk, -                    subvol, subvol->fops->statfs, loc); +                    subvol, subvol->fops->statfs, loc, xdata);          return 0;  err:          op_errno = (op_errno == -1) ? errno : op_errno; -        DHT_STACK_UNWIND (statfs, frame, -1, op_errno, NULL); +        DHT_STACK_UNWIND (statfs, frame, -1, op_errno, NULL, NULL);          return 0;  }  int -dht_opendir (call_frame_t *frame, xlator_t *this, loc_t *loc, fd_t *fd) +dht_opendir (call_frame_t *frame, xlator_t *this, loc_t *loc, fd_t *fd, +             dict_t *xdata)  {          dht_local_t  *local  = NULL;          dht_conf_t   *conf = NULL; @@ -2695,14 +2709,14 @@ dht_opendir (call_frame_t *frame, xlator_t *this, loc_t *loc, fd_t *fd)                  STACK_WIND (frame, dht_fd_cbk,                              conf->subvolumes[i],                              conf->subvolumes[i]->fops->opendir, -                            loc, fd); +                            loc, fd, xdata);          }          return 0;  err:          op_errno = (op_errno == -1) ? errno : op_errno; -        DHT_STACK_UNWIND (opendir, frame, -1, op_errno, NULL); +        DHT_STACK_UNWIND (opendir, frame, -1, op_errno, NULL, NULL);          return 0;  } @@ -2710,7 +2724,7 @@ err:  int  dht_readdirp_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int op_ret, -                  int op_errno, gf_dirent_t *orig_entries) +                  int op_errno, gf_dirent_t *orig_entries, dict_t *xdata)  {          dht_local_t  *local = NULL;          gf_dirent_t   entries; @@ -2811,7 +2825,7 @@ unwind:          if (op_ret < 0)                  op_ret = 0; -        DHT_STACK_UNWIND (readdirp, frame, op_ret, op_errno, &entries); +        DHT_STACK_UNWIND (readdirp, frame, op_ret, op_errno, &entries, NULL);          gf_dirent_free (&entries); @@ -2822,7 +2836,8 @@ unwind:  int  dht_readdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                 int op_ret, int op_errno, gf_dirent_t *orig_entries) +                 int op_ret, int op_errno, gf_dirent_t *orig_entries, +                 dict_t *xdata)  {          dht_local_t  *local = NULL;          gf_dirent_t   entries; @@ -2899,7 +2914,7 @@ done:                  STACK_WIND (frame, dht_readdir_cbk,                              next_subvol, next_subvol->fops->readdir, -                            local->fd, local->size, next_offset); +                            local->fd, local->size, next_offset, NULL);                  return 0;          } @@ -2907,7 +2922,7 @@ unwind:          if (op_ret < 0)                  op_ret = 0; -        DHT_STACK_UNWIND (readdir, frame, op_ret, op_errno, &entries); +        DHT_STACK_UNWIND (readdir, frame, op_ret, op_errno, &entries, NULL);          gf_dirent_free (&entries); @@ -2962,14 +2977,14 @@ dht_do_readdir (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size,                              fd, size, xoff, local->xattr);          } else {                  STACK_WIND (frame, dht_readdir_cbk, xvol, xvol->fops->readdir, -                            fd, size, xoff); +                            fd, size, xoff, local->xattr);          }          return 0;  err:          op_errno = (op_errno == -1) ? errno : op_errno; -        DHT_STACK_UNWIND (readdir, frame, -1, op_errno, NULL); +        DHT_STACK_UNWIND (readdir, frame, -1, op_errno, NULL, NULL);          return 0;  } @@ -2977,7 +2992,7 @@ err:  int  dht_readdir (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size, -             off_t yoff) +             off_t yoff, dict_t *xdata)  {          int          op = GF_FOP_READDIR;          dht_conf_t  *conf = NULL; @@ -3014,7 +3029,7 @@ dht_readdirp (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size,  int  dht_fsyncdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                  int op_ret, int op_errno) +                  int op_ret, int op_errno, dict_t *xdata)  {          dht_local_t  *local = NULL;          int           this_call_cnt = 0; @@ -3034,14 +3049,16 @@ dht_fsyncdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          this_call_cnt = dht_frame_return (frame);          if (is_last_call (this_call_cnt)) -                DHT_STACK_UNWIND (fsyncdir, frame, local->op_ret, local->op_errno); +                DHT_STACK_UNWIND (fsyncdir, frame, local->op_ret, +                                  local->op_errno, xdata);          return 0;  }  int -dht_fsyncdir (call_frame_t *frame, xlator_t *this, fd_t *fd, int datasync) +dht_fsyncdir (call_frame_t *frame, xlator_t *this, fd_t *fd, +              int datasync, dict_t *xdata)  {          dht_local_t  *local  = NULL;          dht_conf_t   *conf = NULL; @@ -3068,14 +3085,14 @@ dht_fsyncdir (call_frame_t *frame, xlator_t *this, fd_t *fd, int datasync)                  STACK_WIND (frame, dht_fsyncdir_cbk,                              conf->subvolumes[i],                              conf->subvolumes[i]->fops->fsyncdir, -                            fd, datasync); +                            fd, datasync, xdata);          }          return 0;  err:          op_errno = (op_errno == -1) ? errno : op_errno; -        DHT_STACK_UNWIND (fsyncdir, frame, -1, op_errno); +        DHT_STACK_UNWIND (fsyncdir, frame, -1, op_errno, NULL);          return 0;  } @@ -3085,7 +3102,7 @@ int  dht_newfile_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                   int op_ret, int op_errno,                   inode_t *inode, struct iatt *stbuf, struct iatt *preparent, -                 struct iatt *postparent) +                 struct iatt *postparent, dict_t *xdata)  {          call_frame_t *prev = NULL;          int           ret = -1; @@ -3128,8 +3145,8 @@ out:           */          DHT_STRIP_PHASE1_FLAGS (stbuf); -        DHT_STACK_UNWIND (mknod, frame, op_ret, op_errno, inode, stbuf, preparent, -                          postparent); +        DHT_STACK_UNWIND (mknod, frame, op_ret, op_errno, inode, stbuf, +                          preparent, postparent, xdata);          return 0;  } @@ -3138,7 +3155,8 @@ dht_mknod_linkfile_create_cbk (call_frame_t *frame, void *cookie,                                 xlator_t *this,                                 int32_t op_ret, int32_t op_errno,                                 inode_t *inode, struct iatt *stbuf, -                               struct iatt *preparent, struct iatt *postparent) +                               struct iatt *preparent, struct iatt *postparent, +                               dict_t *xdata)  {          dht_local_t  *local = NULL;          xlator_t     *cached_subvol = NULL; @@ -3151,18 +3169,19 @@ dht_mknod_linkfile_create_cbk (call_frame_t *frame, void *cookie,          STACK_WIND (frame, dht_newfile_cbk,                      cached_subvol, cached_subvol->fops->mknod, -                    &local->loc, local->mode, local->rdev, +                    &local->loc, local->mode, local->rdev, local->umask,                      local->params);          return 0;  err: -        DHT_STACK_UNWIND (mknod, frame, -1, op_errno, NULL, NULL, NULL, NULL); +        DHT_STACK_UNWIND (mknod, frame, -1, op_errno, NULL, NULL, NULL, NULL, +                          NULL);          return 0;  }  int  dht_mknod (call_frame_t *frame, xlator_t *this, -           loc_t *loc, mode_t mode, dev_t rdev, dict_t *params) +           loc_t *loc, mode_t mode, dev_t rdev, mode_t umask, dict_t *params)  {          xlator_t    *subvol = NULL;          int          op_errno = -1; @@ -3196,7 +3215,7 @@ dht_mknod (call_frame_t *frame, xlator_t *this,                  STACK_WIND (frame, dht_newfile_cbk,                              subvol, subvol->fops->mknod, -                            loc, mode, rdev, params); +                            loc, mode, rdev, umask, params);          } else {                  avail_subvol = dht_free_disk_available_subvol (this, subvol);                  if (avail_subvol != subvol) { @@ -3207,7 +3226,7 @@ dht_mknod (call_frame_t *frame, xlator_t *this,                          local->cached_subvol = avail_subvol;                          local->mode = mode;                          local->rdev = rdev; - +                        local->umask = umask;                          dht_linkfile_create (frame,                                               dht_mknod_linkfile_create_cbk,                                               avail_subvol, subvol, loc); @@ -3217,7 +3236,7 @@ dht_mknod (call_frame_t *frame, xlator_t *this,                          STACK_WIND (frame, dht_newfile_cbk,                                      subvol, subvol->fops->mknod, -                                    loc, mode, rdev, params); +                                    loc, mode, rdev, umask, params);                  }          } @@ -3226,7 +3245,7 @@ dht_mknod (call_frame_t *frame, xlator_t *this,  err:          op_errno = (op_errno == -1) ? errno : op_errno;          DHT_STACK_UNWIND (mknod, frame, -1, op_errno, -                          NULL, NULL, NULL, NULL); +                          NULL, NULL, NULL, NULL, NULL);          return 0;  } @@ -3234,7 +3253,7 @@ err:  int  dht_symlink (call_frame_t *frame, xlator_t *this, -             const char *linkname, loc_t *loc, dict_t *params) +             const char *linkname, loc_t *loc, mode_t umask, dict_t *params)  {          xlator_t    *subvol = NULL;          int          op_errno = -1; @@ -3264,21 +3283,22 @@ dht_symlink (call_frame_t *frame, xlator_t *this,          STACK_WIND (frame, dht_newfile_cbk,                      subvol, subvol->fops->symlink, -                    linkname, loc, params); +                    linkname, loc, umask, params);          return 0;  err:          op_errno = (op_errno == -1) ? errno : op_errno;          DHT_STACK_UNWIND (link, frame, -1, op_errno, -                          NULL, NULL, NULL, NULL); +                          NULL, NULL, NULL, NULL, NULL);          return 0;  }  int -dht_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc) +dht_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc, int xflag, +            dict_t *xdata)  {          xlator_t    *cached_subvol = NULL;          xlator_t    *hashed_subvol = NULL; @@ -3296,7 +3316,7 @@ dht_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc)                          local->loc.path, cached_subvol->name, loc->path);                  STACK_WIND (frame, dht_unlink_cbk,                              cached_subvol, cached_subvol->fops->unlink, -                            &local->loc); +                            &local->loc, xflag, xdata);                  goto done;          } @@ -3324,18 +3344,21 @@ dht_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc)                  goto err;          } +        local->flags = xflag;          if (hashed_subvol != cached_subvol) {                  STACK_WIND (frame, dht_unlink_linkfile_cbk, -                            hashed_subvol, hashed_subvol->fops->unlink, loc); +                            hashed_subvol, hashed_subvol->fops->unlink, loc, +                            xflag, xdata);          } else {                  STACK_WIND (frame, dht_unlink_cbk, -                            cached_subvol, cached_subvol->fops->unlink, loc); +                            cached_subvol, cached_subvol->fops->unlink, loc, +                            xflag, xdata);          }  done:          return 0;  err:          op_errno = (op_errno == -1) ? errno : op_errno; -        DHT_STACK_UNWIND (unlink, frame, -1, op_errno, NULL, NULL); +        DHT_STACK_UNWIND (unlink, frame, -1, op_errno, NULL, NULL, NULL);          return 0;  } @@ -3345,7 +3368,7 @@ int  dht_link_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                int op_ret, int op_errno,                inode_t *inode, struct iatt *stbuf, struct iatt *preparent, -              struct iatt *postparent) +              struct iatt *postparent, dict_t *xdata)  {          call_frame_t *prev = NULL;          dht_layout_t *layout = NULL; @@ -3371,7 +3394,7 @@ dht_link_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  out:          DHT_STRIP_PHASE1_FLAGS (stbuf);          DHT_STACK_UNWIND (link, frame, op_ret, op_errno, inode, stbuf, preparent, -                          postparent); +                          postparent, NULL);          return 0;  } @@ -3381,7 +3404,8 @@ int  dht_link_linkfile_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                         int op_ret, int op_errno,                         inode_t *inode, struct iatt *stbuf, -                       struct iatt *preparent, struct iatt *postparent) +                       struct iatt *preparent, struct iatt *postparent, +                       dict_t *xdata)  {          dht_local_t  *local = NULL;          xlator_t     *srcvol = NULL; @@ -3393,14 +3417,14 @@ dht_link_linkfile_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          srcvol = local->linkfile.srcvol;          STACK_WIND (frame, dht_link_cbk, srcvol, srcvol->fops->link, -                    &local->loc, &local->loc2); +                    &local->loc, &local->loc2, xdata);          return 0;  err:          DHT_STRIP_PHASE1_FLAGS (stbuf);          DHT_STACK_UNWIND (link, frame, op_ret, op_errno, inode, stbuf, preparent, -                          postparent); +                          postparent, NULL);          return 0;  } @@ -3408,7 +3432,7 @@ err:  int  dht_link (call_frame_t *frame, xlator_t *this, -          loc_t *oldloc, loc_t *newloc) +          loc_t *oldloc, loc_t *newloc, dict_t *xdata)  {          xlator_t    *cached_subvol = NULL;          xlator_t    *hashed_subvol = NULL; @@ -3458,14 +3482,14 @@ dht_link (call_frame_t *frame, xlator_t *this,          } else {                  STACK_WIND (frame, dht_link_cbk,                              cached_subvol, cached_subvol->fops->link, -                            oldloc, newloc); +                            oldloc, newloc, xdata);          }          return 0;  err:          op_errno = (op_errno == -1) ? errno : op_errno; -        DHT_STACK_UNWIND (link, frame, -1, op_errno, NULL, NULL, NULL, NULL); +        DHT_STACK_UNWIND (link, frame, -1, op_errno, NULL, NULL, NULL, NULL, NULL);          return 0;  } @@ -3475,7 +3499,7 @@ int  dht_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  int op_ret, int op_errno,                  fd_t *fd, inode_t *inode, struct iatt *stbuf, -                struct iatt *preparent, struct iatt *postparent) +                struct iatt *preparent, struct iatt *postparent, dict_t *xdata)  {          call_frame_t *prev = NULL;          int           ret = -1; @@ -3511,7 +3535,7 @@ dht_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  out:          DHT_STRIP_PHASE1_FLAGS (stbuf);          DHT_STACK_UNWIND (create, frame, op_ret, op_errno, fd, inode, stbuf, preparent, -                          postparent); +                          postparent, NULL);          return 0;  } @@ -3521,7 +3545,8 @@ dht_create_linkfile_create_cbk (call_frame_t *frame, void *cookie,                                  xlator_t *this,                                  int32_t op_ret, int32_t op_errno,                                  inode_t *inode, struct iatt *stbuf, -                                struct iatt *preparent, struct iatt *postparent) +                                struct iatt *preparent, struct iatt *postparent, +                                dict_t *xdata)  {          dht_local_t  *local = NULL;          xlator_t     *cached_subvol = NULL; @@ -3535,18 +3560,19 @@ dht_create_linkfile_create_cbk (call_frame_t *frame, void *cookie,          STACK_WIND (frame, dht_create_cbk,                      cached_subvol, cached_subvol->fops->create,                      &local->loc, local->flags, local->mode, -                    local->fd, local->params); +                    local->umask, local->fd, local->params);          return 0;  err: -        DHT_STACK_UNWIND (create, frame, -1, op_errno, NULL, NULL, NULL, NULL, NULL); +        DHT_STACK_UNWIND (create, frame, -1, op_errno, NULL, NULL, NULL, +                          NULL, NULL, NULL);          return 0;  }  int  dht_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 umask, fd_t *fd, dict_t *params)  {          int          op_errno = -1;          xlator_t    *subvol = NULL; @@ -3572,7 +3598,7 @@ dht_create (call_frame_t *frame, xlator_t *this,                          local->loc.path, subvol->name, loc->path);                  STACK_WIND (frame, dht_create_cbk,                              subvol, subvol->fops->create, -                            &local->loc, flags, mode, fd, params); +                            &local->loc, flags, mode, umask, fd, params);                  goto done;          } @@ -3590,7 +3616,7 @@ dht_create (call_frame_t *frame, xlator_t *this,                          "creating %s on %s", loc->path, subvol->name);                  STACK_WIND (frame, dht_create_cbk,                              subvol, subvol->fops->create, -                            loc, flags, mode, fd, params); +                            loc, flags, mode, umask, fd, params);                  goto done;          }          /* Choose the minimum filled volume, and create the @@ -3600,7 +3626,7 @@ dht_create (call_frame_t *frame, xlator_t *this,                  local->params = dict_ref (params);                  local->flags = flags;                  local->mode = mode; - +                local->umask = umask;                  local->cached_subvol = avail_subvol;                  local->hashed_subvol = subvol;                  gf_log (this->name, GF_LOG_TRACE, @@ -3615,13 +3641,14 @@ dht_create (call_frame_t *frame, xlator_t *this,                  "creating %s on %s", loc->path, subvol->name);          STACK_WIND (frame, dht_create_cbk,                      subvol, subvol->fops->create, -                    loc, flags, mode, fd, params); +                    loc, flags, mode, umask, fd, params);  done:          return 0;  err:          op_errno = (op_errno == -1) ? errno : op_errno; -        DHT_STACK_UNWIND (create, frame, -1, op_errno, NULL, NULL, NULL, NULL, NULL); +        DHT_STACK_UNWIND (create, frame, -1, op_errno, NULL, NULL, NULL, +                          NULL, NULL, NULL);          return 0;  } @@ -3630,7 +3657,7 @@ err:  int  dht_mkdir_selfheal_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)  {          dht_local_t   *local = NULL;          dht_layout_t  *layout = NULL; @@ -3648,7 +3675,7 @@ dht_mkdir_selfheal_cbk (call_frame_t *frame, void *cookie,          DHT_STACK_UNWIND (mkdir, frame, op_ret, op_errno,                            local->inode, &local->stbuf, &local->preparent, -                          &local->postparent); +                          &local->postparent, NULL);          return 0;  } @@ -3656,7 +3683,7 @@ dht_mkdir_selfheal_cbk (call_frame_t *frame, void *cookie,  int  dht_mkdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                 int op_ret, int op_errno, inode_t *inode, struct iatt *stbuf, -               struct iatt *preparent, struct iatt *postparent) +               struct iatt *preparent, struct iatt *postparent, dict_t *xdata)  {          dht_local_t  *local = NULL;          int           this_call_cnt = 0; @@ -3709,7 +3736,8 @@ int  dht_mkdir_hashed_cbk (call_frame_t *frame, void *cookie,                        xlator_t *this, int op_ret, int op_errno,                        inode_t *inode, struct iatt *stbuf, -                      struct iatt *preparent, struct iatt *postparent) +                      struct iatt *preparent, struct iatt *postparent, +                      dict_t *xdata)  {          dht_local_t  *local = NULL;          int           ret = -1; @@ -3766,19 +3794,20 @@ dht_mkdir_hashed_cbk (call_frame_t *frame, void *cookie,                          continue;                  STACK_WIND (frame, dht_mkdir_cbk,                              conf->subvolumes[i], -                            conf->subvolumes[i]->fops->mkdir, -                            &local->loc, local->mode, local->params); +                            conf->subvolumes[i]->fops->mkdir, &local->loc, +                            local->mode, local->umask, local->params);          }          return 0;  err: -        DHT_STACK_UNWIND (mkdir, frame, -1, op_errno, NULL, NULL, NULL, NULL); +        DHT_STACK_UNWIND (mkdir, frame, -1, op_errno, NULL, NULL, NULL, +                          NULL, NULL);          return 0;  }   int  dht_mkdir (call_frame_t *frame, xlator_t *this, -           loc_t *loc, mode_t mode, dict_t *params) +           loc_t *loc, mode_t mode, mode_t umask, dict_t *params)  {          dht_local_t  *local  = NULL;          dht_conf_t   *conf = NULL; @@ -3814,6 +3843,7 @@ dht_mkdir (call_frame_t *frame, xlator_t *this,          local->hashed_subvol = hashed_subvol;          local->mode = mode; +        local->umask = umask;          local->params = dict_ref (params);          local->inode  = inode_ref (loc->inode); @@ -3826,13 +3856,14 @@ dht_mkdir (call_frame_t *frame, xlator_t *this,          STACK_WIND (frame, dht_mkdir_hashed_cbk,                      hashed_subvol,                      hashed_subvol->fops->mkdir, -                    loc, mode, params); +                    loc, mode, umask, params);          return 0;  err:          op_errno = (op_errno == -1) ? errno : op_errno; -        DHT_STACK_UNWIND (mkdir, frame, -1, op_errno, NULL, NULL, NULL, NULL); +        DHT_STACK_UNWIND (mkdir, frame, -1, op_errno, NULL, NULL, NULL, +                          NULL, NULL);          return 0;  } @@ -3840,14 +3871,14 @@ err:  int  dht_rmdir_selfheal_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                        int op_ret, int op_errno) +                        int op_ret, int op_errno, dict_t *xdata)  {          dht_local_t  *local = NULL;          local = frame->local;          DHT_STACK_UNWIND (rmdir, frame, local->op_ret, local->op_errno, -                          &local->preparent, &local->postparent); +                          &local->preparent, &local->postparent, NULL);          return 0;  } @@ -3856,7 +3887,7 @@ dht_rmdir_selfheal_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  dht_rmdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                 int op_ret, int op_errno, struct iatt *preparent, -               struct iatt *postparent) +               struct iatt *postparent, dict_t *xdata)  {          dht_local_t  *local = NULL;          int           this_call_cnt = 0; @@ -3912,7 +3943,7 @@ unlock:                          DHT_STACK_UNWIND (rmdir, frame, local->op_ret,                                            local->op_errno, &local->preparent, -                                          &local->postparent); +                                          &local->postparent, NULL);                  }          } @@ -3941,14 +3972,14 @@ dht_rmdir_do (call_frame_t *frame, xlator_t *this)                  STACK_WIND (frame, dht_rmdir_cbk,                              conf->subvolumes[i],                              conf->subvolumes[i]->fops->rmdir, -                            &local->loc, local->flags); +                            &local->loc, local->flags, NULL);          }          return 0;  err:          DHT_STACK_UNWIND (rmdir, frame, local->op_ret, local->op_errno, -                          &local->preparent, &local->postparent); +                          &local->preparent, &local->postparent, NULL);          return 0;  } @@ -3956,7 +3987,7 @@ err:  int  dht_rmdir_linkfile_unlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                                 int op_ret, int op_errno, struct iatt *preparent, -                               struct iatt *postparent) +                               struct iatt *postparent, dict_t *xdata)  {          dht_local_t    *local = NULL;          call_frame_t   *prev = NULL; @@ -4026,7 +4057,7 @@ dht_rmdir_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          }          STACK_WIND (frame, dht_rmdir_linkfile_unlink_cbk, -                    src, src->fops->unlink, &local->loc); +                    src, src->fops->unlink, &local->loc, 0, NULL);          return 0;  err: @@ -4125,7 +4156,8 @@ err:  int  dht_rmdir_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)  {          dht_local_t  *local = NULL;          int           this_call_cnt = -1; @@ -4169,7 +4201,7 @@ dht_rmdir_readdirp_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  dht_rmdir_opendir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                       int op_ret, int op_errno, fd_t *fd) +                       int op_ret, int op_errno, fd_t *fd, dict_t *xdata)  {          dht_local_t  *local = NULL;          int           this_call_cnt = -1; @@ -4225,7 +4257,8 @@ err:  int -dht_rmdir (call_frame_t *frame, xlator_t *this, loc_t *loc, int flags) +dht_rmdir (call_frame_t *frame, xlator_t *this, loc_t *loc, int flags, +           dict_t *xdata)  {          dht_local_t  *local  = NULL;          dht_conf_t   *conf = NULL; @@ -4264,7 +4297,7 @@ dht_rmdir (call_frame_t *frame, xlator_t *this, loc_t *loc, int flags)                  STACK_WIND (frame, dht_rmdir_opendir_cbk,                              conf->subvolumes[i],                              conf->subvolumes[i]->fops->opendir, -                            loc, local->fd); +                            loc, local->fd, NULL);          }          return 0; @@ -4272,17 +4305,17 @@ dht_rmdir (call_frame_t *frame, xlator_t *this, loc_t *loc, int flags)  err:          op_errno = (op_errno == -1) ? errno : op_errno;          DHT_STACK_UNWIND (rmdir, frame, -1, op_errno, -                          NULL, NULL); +                          NULL, NULL, NULL);          return 0;  }  int  dht_entrylk_cbk (call_frame_t *frame, void *cookie, -                 xlator_t *this, int32_t op_ret, int32_t op_errno) +                 xlator_t *this, int32_t op_ret, int32_t op_errno, dict_t *xdata)  { -        DHT_STACK_UNWIND (entrylk, frame, op_ret, op_errno); +        DHT_STACK_UNWIND (entrylk, frame, op_ret, op_errno, xdata);          return 0;  } @@ -4290,7 +4323,7 @@ dht_entrylk_cbk (call_frame_t *frame, void *cookie,  int  dht_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)  {          xlator_t     *subvol = NULL;          int           op_errno = -1; @@ -4320,13 +4353,13 @@ dht_entrylk (call_frame_t *frame, xlator_t *this,          STACK_WIND (frame, dht_entrylk_cbk,                      subvol, subvol->fops->entrylk, -                    volume, loc, basename, cmd, type); +                    volume, loc, basename, cmd, type, xdata);          return 0;  err:          op_errno = (op_errno == -1) ? errno : op_errno; -        DHT_STACK_UNWIND (entrylk, frame, -1, op_errno); +        DHT_STACK_UNWIND (entrylk, frame, -1, op_errno, NULL);          return 0;  } @@ -4334,10 +4367,10 @@ err:  int  dht_fentrylk_cbk (call_frame_t *frame, void *cookie, -                  xlator_t *this, int32_t op_ret, int32_t op_errno) +                  xlator_t *this, int32_t op_ret, int32_t op_errno, dict_t *xdata)  { -        DHT_STACK_UNWIND (fentrylk, frame, op_ret, op_errno); +        DHT_STACK_UNWIND (fentrylk, frame, op_ret, op_errno, NULL);          return 0;  } @@ -4345,7 +4378,7 @@ dht_fentrylk_cbk (call_frame_t *frame, void *cookie,  int  dht_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)  {          xlator_t     *subvol = NULL;          int           op_errno = -1; @@ -4364,13 +4397,13 @@ dht_fentrylk (call_frame_t *frame, xlator_t *this,          STACK_WIND (frame, dht_fentrylk_cbk,                      subvol, subvol->fops->fentrylk, -                    volume, fd, basename, cmd, type); +                    volume, fd, basename, cmd, type, xdata);          return 0;  err:          op_errno = (op_errno == -1) ? errno : op_errno; -        DHT_STACK_UNWIND (fentrylk, frame, -1, op_errno); +        DHT_STACK_UNWIND (fentrylk, frame, -1, op_errno, NULL);          return 0;  } diff --git a/xlators/cluster/dht/src/dht-common.h b/xlators/cluster/dht/src/dht-common.h index d7689cc7f..61687aacc 100644 --- a/xlators/cluster/dht/src/dht-common.h +++ b/xlators/cluster/dht/src/dht-common.h @@ -38,7 +38,8 @@  typedef int (*dht_selfheal_dir_cbk_t) (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);  typedef int (*dht_defrag_cbk_fn_t) (xlator_t        *this, call_frame_t *frame,                                      int              ret); @@ -74,7 +75,6 @@ typedef enum {  struct dht_rebalance_ {          xlator_t            *from_subvol;          xlator_t            *target_node; -        int32_t              wbflags;          off_t                offset;          size_t               size;          int32_t              flags; @@ -83,6 +83,7 @@ struct dht_rebalance_ {          struct iovec        *vector;          struct iatt          stbuf;          dht_defrag_cbk_fn_t  target_op_fn; +        dict_t              *xdata;  };  struct dht_local { @@ -142,6 +143,7 @@ struct dht_local {          int32_t flags;          mode_t  mode;          dev_t   rdev; +        mode_t  umask;          /* need for file-info */          char   *xattr_val; @@ -166,6 +168,7 @@ struct dht_local {          glusterfs_fop_t      fop;          struct dht_rebalance_ rebalance; +  };  typedef struct dht_local dht_local_t; @@ -397,9 +400,6 @@ dht_selfheal_restore (call_frame_t       *frame, dht_selfheal_dir_cbk_t cbk,  int  dht_layout_sort_volname (dht_layout_t *layout); -int dht_rename (call_frame_t *frame, xlator_t *this, -                loc_t *oldloc, loc_t *newloc); -  int dht_get_du_info (call_frame_t *frame, xlator_t *this, loc_t *loc);  gf_boolean_t dht_is_subvol_filled (xlator_t *this, xlator_t *subvol); @@ -407,7 +407,7 @@ xlator_t *dht_free_disk_available_subvol (xlator_t *this, xlator_t *subvol);  int       dht_get_du_info_for_subvol (xlator_t *this, int subvol_idx);  int dht_layout_preset (xlator_t *this, xlator_t *subvol, inode_t *inode); -int           dht_layout_set (xlator_t *this, inode_t *inode, dht_layout_t *layout); +int           dht_layout_set (xlator_t *this, inode_t *inode, dht_layout_t *layout);;  void          dht_layout_unref (xlator_t *this, dht_layout_t *layout);  dht_layout_t *dht_layout_ref (xlator_t *this, dht_layout_t *layout);  xlator_t     *dht_first_up_subvol (xlator_t *this); @@ -422,7 +422,8 @@ int                                     dht_rename_cleanup (call_frame_t *frame)  int dht_rename_links_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                            int32_t           op_ret, int32_t op_errno,                            inode_t          *inode, struct iatt *stbuf, -                          struct iatt      *preparent, struct iatt *postparent); +                          struct iatt      *preparent, struct iatt *postparent, +                          dict_t *xdata);  int dht_fix_directory_layout (call_frame_t *frame,                                dht_selfheal_dir_cbk_t  dir_cbk, @@ -445,73 +446,73 @@ int32_t dht_lookup (call_frame_t *frame,  int32_t dht_stat (call_frame_t *frame,                    xlator_t *this, -                  loc_t    *loc); +                  loc_t    *loc, dict_t *xdata);  int32_t dht_fstat (call_frame_t *frame,                     xlator_t *this, -                   fd_t     *fd); +                   fd_t     *fd, dict_t *xdata);  int32_t dht_truncate (call_frame_t *frame,                        xlator_t *this,                        loc_t    *loc, -                      off_t     offset); +                      off_t     offset, dict_t *xdata);  int32_t dht_ftruncate (call_frame_t *frame,                         xlator_t *this,                         fd_t     *fd, -                       off_t     offset); +                       off_t     offset, dict_t *xdata);  int32_t dht_access (call_frame_t *frame,                      xlator_t *this,                      loc_t    *loc, -                    int32_t   mask); +                    int32_t   mask, dict_t *xdata);  int32_t dht_readlink (call_frame_t *frame,                        xlator_t *this,                        loc_t    *loc, -                      size_t    size); +                      size_t    size, dict_t *xdata); -int32_t dht_mknod (call_frame_t *frame, xlator_t *this, -                   loc_t    *loc, mode_t mode, dev_t rdev, dict_t *params); +int32_t dht_mknod (call_frame_t *frame, xlator_t *this, loc_t *loc, +                   mode_t mode, dev_t rdev, mode_t umask, dict_t *xdata);  int32_t dht_mkdir (call_frame_t *frame, xlator_t *this, -                   loc_t    *loc, mode_t mode, dict_t *params); +                   loc_t *loc, mode_t mode, mode_t umask, dict_t *xdata);  int32_t dht_unlink (call_frame_t *frame,                      xlator_t *this, -                    loc_t    *loc); +                    loc_t    *loc, int xflag, dict_t *xdata);  int32_t dht_rmdir (call_frame_t *frame, xlator_t *this, -                   loc_t    *loc, int flags); +                   loc_t    *loc, int flags, dict_t *xdata);  int32_t dht_symlink (call_frame_t   *frame, xlator_t *this, -                     const char *linkpath, loc_t *loc, dict_t *params); +                     const char *linkpath, loc_t *loc, mode_t umask, +                     dict_t *xdata);  int32_t dht_rename (call_frame_t *frame,                      xlator_t *this,                      loc_t    *oldloc, -                    loc_t    *newloc); +                    loc_t    *newloc, dict_t *xdata);  int32_t dht_link (call_frame_t *frame,                    xlator_t *this,                    loc_t    *oldloc, -                  loc_t    *newloc); +                  loc_t    *newloc, dict_t *xdata);  int32_t dht_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 umask, fd_t     *fd, dict_t *params);  int32_t dht_open (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);  int32_t dht_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);  int32_t dht_writev (call_frame_t      *frame,                      xlator_t      *this, @@ -520,87 +521,87 @@ int32_t dht_writev (call_frame_t      *frame,                      int32_t        count,                      off_t          offset,                      uint32_t       flags, -                    struct iobref *iobref); +                    struct iobref *iobref, dict_t *xdata);  int32_t dht_flush (call_frame_t *frame,                     xlator_t *this, -                   fd_t     *fd); +                   fd_t     *fd, dict_t *xdata);  int32_t dht_fsync (call_frame_t *frame,                     xlator_t *this,                     fd_t     *fd, -                   int32_t   datasync); +                   int32_t   datasync, dict_t *xdata);  int32_t dht_opendir (call_frame_t *frame,                       xlator_t *this, -                     loc_t    *loc, fd_t *fd); +                     loc_t    *loc, fd_t *fd, dict_t *xdata);  int32_t dht_fsyncdir (call_frame_t *frame,                        xlator_t *this,                        fd_t     *fd, -                      int32_t   datasync); +                      int32_t   datasync, dict_t *xdata);  int32_t dht_statfs (call_frame_t *frame,                      xlator_t *this, -                    loc_t    *loc); +                    loc_t    *loc, dict_t *xdata);  int32_t dht_setxattr (call_frame_t *frame,                        xlator_t *this,                        loc_t    *loc,                        dict_t   *dict, -                      int32_t   flags); +                      int32_t   flags, dict_t *xdata);  int32_t dht_getxattr (call_frame_t   *frame,                        xlator_t   *this,                        loc_t      *loc, -                      const char *name); +                      const char *name, dict_t *xdata);  int32_t dht_fsetxattr (call_frame_t *frame,                         xlator_t *this,                         fd_t     *fd,                         dict_t   *dict, -                       int32_t   flags); +                       int32_t   flags, dict_t *xdata);  int32_t dht_fgetxattr (call_frame_t   *frame,                         xlator_t   *this,                         fd_t       *fd, -                       const char *name); +                       const char *name, dict_t *xdata);  int32_t dht_removexattr (call_frame_t   *frame,                           xlator_t   *this,                           loc_t      *loc, -                         const char *name); +                         const char *name, dict_t *xdata);  int32_t dht_fremovexattr (call_frame_t   *frame,                            xlator_t   *this,                            fd_t      *fd, -                          const char *name); +                          const char *name, dict_t *xdata);  int32_t dht_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);  int32_t dht_inodelk (call_frame_t *frame, xlator_t *this,                       const char      *volume, loc_t *loc, int32_t cmd, -                     struct gf_flock *flock); +                     struct gf_flock *flock, dict_t *xdata);  int32_t dht_finodelk (call_frame_t        *frame, xlator_t *this,                        const char      *volume, fd_t *fd, int32_t cmd, -                      struct gf_flock *flock); +                      struct gf_flock *flock, dict_t *xdata);  int32_t dht_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);  int32_t dht_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);  int32_t dht_readdir (call_frame_t  *frame,                       xlator_t *this,                       fd_t     *fd, -                     size_t    size, off_t off); +                     size_t    size, off_t off, dict_t *xdata);  int32_t dht_readdirp (call_frame_t *frame,                        xlator_t *this, @@ -611,19 +612,19 @@ int32_t dht_xattrop (call_frame_t           *frame,                       xlator_t           *this,                       loc_t              *loc,                       gf_xattrop_flags_t  flags, -                     dict_t             *dict); +                     dict_t             *dict, dict_t *xdata);  int32_t dht_fxattrop (call_frame_t *frame,                        xlator_t           *this,                        fd_t               *fd,                        gf_xattrop_flags_t  flags, -                      dict_t             *dict); +                      dict_t             *dict, dict_t *xdata);  int32_t dht_forget (xlator_t *this, inode_t *inode);  int32_t dht_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);  int32_t dht_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);  int32_t dht_notify (xlator_t *this, int32_t event, void *data, ...); @@ -647,11 +648,12 @@ int dht_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int dht_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                      int op_ret, int op_errno,                      fd_t *fd, inode_t *inode, struct iatt *stbuf, -                    struct iatt *preparent, struct iatt *postparent); +                    struct iatt *preparent, struct iatt *postparent, +                    dict_t *xdata);  int dht_newfile_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                       int op_ret, int op_errno,                       inode_t *inode, struct iatt *stbuf, struct iatt *preparent, -                     struct iatt *postparent); +                     struct iatt *postparent, dict_t *xdata);  int  gf_defrag_status_get (gf_defrag_info_t *defrag, dict_t *dict); diff --git a/xlators/cluster/dht/src/dht-diskusage.c b/xlators/cluster/dht/src/dht-diskusage.c index 0200695d2..767510fac 100644 --- a/xlators/cluster/dht/src/dht-diskusage.c +++ b/xlators/cluster/dht/src/dht-diskusage.c @@ -35,7 +35,8 @@  int  dht_du_info_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -		 int op_ret, int op_errno, struct statvfs *statvfs) +		 int op_ret, int op_errno, struct statvfs *statvfs, +                 dict_t *xdata)  {  	dht_conf_t    *conf         = NULL;  	call_frame_t  *prev          = NULL; @@ -129,7 +130,7 @@ dht_get_du_info_for_subvol (xlator_t *this, int subvol_idx)  	STACK_WIND (statfs_frame, dht_du_info_cbk,  		    conf->subvolumes[subvol_idx],  		    conf->subvolumes[subvol_idx]->fops->statfs, -		    &tmp_loc); +		    &tmp_loc, NULL);  	return 0;  err: @@ -177,7 +178,7 @@ dht_get_du_info (call_frame_t *frame, xlator_t *this, loc_t *loc)  			STACK_WIND (statfs_frame, dht_du_info_cbk,  				    conf->subvolumes[i],  				    conf->subvolumes[i]->fops->statfs, -				    &tmp_loc); +				    &tmp_loc, NULL);  		}  		conf->last_stat_fetch.tv_sec = tv.tv_sec; diff --git a/xlators/cluster/dht/src/dht-inode-read.c b/xlators/cluster/dht/src/dht-inode-read.c index 3ec6f4ba2..6732f2397 100644 --- a/xlators/cluster/dht/src/dht-inode-read.c +++ b/xlators/cluster/dht/src/dht-inode-read.c @@ -34,7 +34,7 @@ int dht_fsync2 (xlator_t *this, call_frame_t *frame, int ret);  int  dht_open_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -              int op_ret, int op_errno, fd_t *fd) +              int op_ret, int op_errno, fd_t *fd, dict_t *xdata)  {          dht_local_t  *local = NULL;          call_frame_t *prev = NULL; @@ -61,7 +61,7 @@ dht_open_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  return 0;  out: -        DHT_STACK_UNWIND (open, frame, op_ret, op_errno, local->fd); +        DHT_STACK_UNWIND (open, frame, op_ret, op_errno, local->fd, xdata);          return 0;  } @@ -86,17 +86,17 @@ dht_open2 (xlator_t *this, call_frame_t *frame, int op_ret)          STACK_WIND (frame, dht_open_cbk, subvol, subvol->fops->open,                      &local->loc, local->rebalance.flags, local->fd, -                    local->rebalance.wbflags); +                    NULL);          return 0;  out: -        DHT_STACK_UNWIND (stat, frame, -1, op_errno, NULL); +        DHT_STACK_UNWIND (stat, frame, -1, op_errno, NULL, NULL);          return 0;  }  int  dht_open (call_frame_t *frame, xlator_t *this, -          loc_t *loc, int flags, fd_t *fd, int wbflags) +          loc_t *loc, int flags, fd_t *fd, dict_t *xdata)  {          xlator_t     *subvol = NULL;          int           op_errno = -1; @@ -120,25 +120,24 @@ dht_open (call_frame_t *frame, xlator_t *this,                  goto err;          } -        local->rebalance.wbflags = wbflags;          local->rebalance.flags = flags;          local->call_cnt = 1;          STACK_WIND (frame, dht_open_cbk, subvol, subvol->fops->open, -                    loc, flags, fd, wbflags); +                    loc, flags, fd, xdata);          return 0;  err:          op_errno = (op_errno == -1) ? errno : op_errno; -        DHT_STACK_UNWIND (open, frame, -1, op_errno, NULL); +        DHT_STACK_UNWIND (open, frame, -1, op_errno, NULL, NULL);          return 0;  }  int  dht_file_attr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                   int op_ret, int op_errno, struct iatt *stbuf) +                   int op_ret, int op_errno, struct iatt *stbuf, dict_t *xdata)  {          uint64_t      tmp_subvol = 0;          dht_local_t  *local = NULL; @@ -183,7 +182,7 @@ dht_file_attr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  out:          DHT_STRIP_PHASE1_FLAGS (stbuf); -        DHT_STACK_UNWIND (stat, frame, op_ret, op_errno, stbuf); +        DHT_STACK_UNWIND (stat, frame, op_ret, op_errno, stbuf, xdata);  err:          return 0;  } @@ -208,21 +207,21 @@ dht_attr2 (xlator_t *this, call_frame_t *frame, int op_ret)          if (local->fop == GF_FOP_FSTAT) {                  STACK_WIND (frame, dht_file_attr_cbk, subvol, -                            subvol->fops->fstat, local->fd); +                            subvol->fops->fstat, local->fd, NULL);          } else {                  STACK_WIND (frame, dht_file_attr_cbk, subvol, -                            subvol->fops->stat, &local->loc); +                            subvol->fops->stat, &local->loc, NULL);          }          return 0;  out: -        DHT_STACK_UNWIND (stat, frame, -1, op_errno, NULL); +        DHT_STACK_UNWIND (stat, frame, -1, op_errno, NULL, NULL);          return 0;  }  int  dht_attr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -              int op_ret, int op_errno, struct iatt *stbuf) +              int op_ret, int op_errno, struct iatt *stbuf, dict_t *xdata)  {          dht_local_t  *local = NULL;          int           this_call_cnt = 0; @@ -257,14 +256,14 @@ out:          this_call_cnt = dht_frame_return (frame);          if (is_last_call (this_call_cnt)) {                  DHT_STACK_UNWIND (stat, frame, local->op_ret, local->op_errno, -                                  &local->stbuf); +                                  &local->stbuf, xdata);          }  err:          return 0;  }  int -dht_stat (call_frame_t *frame, xlator_t *this, loc_t *loc) +dht_stat (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *xdata)  {          xlator_t     *subvol = NULL;          int           op_errno = -1; @@ -300,7 +299,7 @@ dht_stat (call_frame_t *frame, xlator_t *this, loc_t *loc)                  subvol = local->cached_subvol;                  STACK_WIND (frame, dht_file_attr_cbk, subvol, -                            subvol->fops->stat, loc); +                            subvol->fops->stat, loc, xdata);                  return 0;          } @@ -312,21 +311,21 @@ dht_stat (call_frame_t *frame, xlator_t *this, loc_t *loc)                  STACK_WIND (frame, dht_attr_cbk,                              subvol, subvol->fops->stat, -                            loc); +                            loc, xdata);          }          return 0;  err:          op_errno = (op_errno == -1) ? errno : op_errno; -        DHT_STACK_UNWIND (stat, frame, -1, op_errno, NULL); +        DHT_STACK_UNWIND (stat, frame, -1, op_errno, NULL, NULL);          return 0;  }  int -dht_fstat (call_frame_t *frame, xlator_t *this, fd_t *fd) +dht_fstat (call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *xdata)  {          xlator_t     *subvol = NULL;          int           op_errno = -1; @@ -360,7 +359,7 @@ dht_fstat (call_frame_t *frame, xlator_t *this, fd_t *fd)                  subvol = local->cached_subvol;                  STACK_WIND (frame, dht_file_attr_cbk, subvol, -                            subvol->fops->fstat, fd); +                            subvol->fops->fstat, fd, xdata);                  return 0;          } @@ -371,14 +370,14 @@ dht_fstat (call_frame_t *frame, xlator_t *this, fd_t *fd)                  subvol = layout->list[i].xlator;                  STACK_WIND (frame, dht_attr_cbk,                              subvol, subvol->fops->fstat, -                            fd); +                            fd, xdata);          }          return 0;  err:          op_errno = (op_errno == -1) ? errno : op_errno; -        DHT_STACK_UNWIND (fstat, frame, -1, op_errno, NULL); +        DHT_STACK_UNWIND (fstat, frame, -1, op_errno, NULL, NULL);          return 0;  } @@ -387,7 +386,7 @@ int  dht_readv_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                 int op_ret, int op_errno,                 struct iovec *vector, int count, struct iatt *stbuf, -               struct iobref *iobref) +               struct iobref *iobref, dict_t *xdata)  {          dht_local_t *local      = NULL;          int          ret        = 0; @@ -424,7 +423,7 @@ dht_readv_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  out:          DHT_STRIP_PHASE1_FLAGS (stbuf);          DHT_STACK_UNWIND (readv, frame, op_ret, op_errno, vector, count, stbuf, -                          iobref); +                          iobref, xdata);          return 0;  } @@ -449,18 +448,18 @@ dht_readv2 (xlator_t *this, call_frame_t *frame, int op_ret)          STACK_WIND (frame, dht_readv_cbk, subvol, subvol->fops->readv,                      local->fd, local->rebalance.size, local->rebalance.offset, -                    local->rebalance.flags); +                    local->rebalance.flags, NULL);          return 0;  out: -        DHT_STACK_UNWIND (readv, frame, -1, op_errno, NULL, 0, NULL, NULL); +        DHT_STACK_UNWIND (readv, frame, -1, op_errno, NULL, 0, NULL, NULL, NULL);          return 0;  }  int  dht_readv (call_frame_t *frame, xlator_t *this, -           fd_t *fd, size_t size, off_t off, uint32_t flags) +           fd_t *fd, size_t size, off_t off, uint32_t flags, dict_t *xdata)  {          xlator_t     *subvol = NULL;          int           op_errno = -1; @@ -491,20 +490,20 @@ dht_readv (call_frame_t *frame, xlator_t *this,          STACK_WIND (frame, dht_readv_cbk,                      subvol, subvol->fops->readv, -                    fd, size, off, flags); +                    fd, size, off, flags, xdata);          return 0;  err:          op_errno = (op_errno == -1) ? errno : op_errno; -        DHT_STACK_UNWIND (readv, frame, -1, op_errno, NULL, 0, NULL, NULL); +        DHT_STACK_UNWIND (readv, frame, -1, op_errno, NULL, 0, NULL, NULL, NULL);          return 0;  }  int  dht_access_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                int op_ret, int op_errno) +                int op_ret, int op_errno, dict_t *xdata)  {          int          ret = -1;          dht_local_t *local = NULL; @@ -523,7 +522,7 @@ dht_access_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          }  out: -        DHT_STACK_UNWIND (access, frame, op_ret, op_errno); +        DHT_STACK_UNWIND (access, frame, op_ret, op_errno, xdata);          return 0;  } @@ -546,18 +545,19 @@ dht_access2 (xlator_t *this, call_frame_t *frame, int op_ret)          subvol = local->cached_subvol;          STACK_WIND (frame, dht_access_cbk, subvol, subvol->fops->access, -                    &local->loc, local->rebalance.flags); +                    &local->loc, local->rebalance.flags, NULL);          return 0;  out: -        DHT_STACK_UNWIND (access, frame, -1, op_errno); +        DHT_STACK_UNWIND (access, frame, -1, op_errno, NULL);          return 0;  }  int -dht_access (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t mask) +dht_access (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t mask, +            dict_t *xdata)  {          xlator_t     *subvol = NULL;          int           op_errno = -1; @@ -586,13 +586,13 @@ dht_access (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t mask)          }          STACK_WIND (frame, dht_access_cbk, subvol, subvol->fops->access, -                    loc, mask); +                    loc, mask, xdata);          return 0;  err:          op_errno = (op_errno == -1) ? errno : op_errno; -        DHT_STACK_UNWIND (access, frame, -1, op_errno); +        DHT_STACK_UNWIND (access, frame, -1, op_errno, NULL);          return 0;  } @@ -600,7 +600,7 @@ err:  int  dht_flush_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -               int op_ret, int op_errno) +               int op_ret, int op_errno, dict_t *xdata)  {          dht_local_t  *local = NULL;          int           ret = -1; @@ -620,7 +620,7 @@ dht_flush_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          }  out: -        DHT_STACK_UNWIND (flush, frame, op_ret, op_errno); +        DHT_STACK_UNWIND (flush, frame, op_ret, op_errno, xdata);          return 0;  } @@ -645,20 +645,19 @@ dht_flush2 (xlator_t *this, call_frame_t *frame, int op_ret)          local->call_cnt = 2; /* This is the second attempt */          STACK_WIND (frame, dht_flush_cbk, -                    subvol, subvol->fops->flush, local->fd); +                    subvol, subvol->fops->flush, local->fd, NULL);          return 0;  }  int -dht_flush (call_frame_t *frame, xlator_t *this, fd_t *fd) +dht_flush (call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *xdata)  {          xlator_t     *subvol = NULL;          int           op_errno = -1;          dht_local_t  *local = NULL; -          VALIDATE_OR_GOTO (frame, err);          VALIDATE_OR_GOTO (this, err);          VALIDATE_OR_GOTO (fd, err); @@ -680,13 +679,13 @@ dht_flush (call_frame_t *frame, xlator_t *this, fd_t *fd)          local->call_cnt = 1;          STACK_WIND (frame, dht_flush_cbk, -                    subvol, subvol->fops->flush, fd); +                    subvol, subvol->fops->flush, fd, xdata);          return 0;  err:          op_errno = (op_errno == -1) ? errno : op_errno; -        DHT_STACK_UNWIND (flush, frame, -1, op_errno); +        DHT_STACK_UNWIND (flush, frame, -1, op_errno, NULL);          return 0;  } @@ -694,7 +693,8 @@ err:  int  dht_fsync_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int op_ret, -               int op_errno, struct iatt *prebuf, struct iatt *postbuf) +               int op_errno, struct iatt *prebuf, struct iatt *postbuf, +               dict_t *xdata)  {          dht_local_t  *local = NULL;          call_frame_t *prev = NULL; @@ -745,7 +745,7 @@ out:          DHT_STRIP_PHASE1_FLAGS (postbuf);          DHT_STRIP_PHASE1_FLAGS (prebuf);          DHT_STACK_UNWIND (fsync, frame, op_ret, op_errno, -                          prebuf, postbuf); +                          prebuf, postbuf, xdata);          return 0;  } @@ -770,19 +770,19 @@ dht_fsync2 (xlator_t *this, call_frame_t *frame, int op_ret)          local->call_cnt = 2; /* This is the second attempt */          STACK_WIND (frame, dht_fsync_cbk, subvol, subvol->fops->fsync, -                    local->fd, local->rebalance.flags); +                    local->fd, local->rebalance.flags, NULL);          return 0;  }  int -dht_fsync (call_frame_t *frame, xlator_t *this, fd_t *fd, int datasync) +dht_fsync (call_frame_t *frame, xlator_t *this, fd_t *fd, int datasync, +           dict_t *xdata)  {          xlator_t     *subvol = NULL;          int           op_errno = -1;          dht_local_t  *local = NULL; -          VALIDATE_OR_GOTO (frame, err);          VALIDATE_OR_GOTO (this, err);          VALIDATE_OR_GOTO (fd, err); @@ -800,13 +800,13 @@ dht_fsync (call_frame_t *frame, xlator_t *this, fd_t *fd, int datasync)          subvol = local->cached_subvol;          STACK_WIND (frame, dht_fsync_cbk, subvol, subvol->fops->fsync, -                    fd, datasync); +                    fd, datasync, xdata);          return 0;  err:          op_errno = (op_errno == -1) ? errno : op_errno; -        DHT_STACK_UNWIND (fsync, frame, -1, op_errno, NULL, NULL); +        DHT_STACK_UNWIND (fsync, frame, -1, op_errno, NULL, NULL, NULL);          return 0;  } @@ -817,9 +817,9 @@ err:     phase 2 of migration */  int  dht_lk_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -            int op_ret, int op_errno, struct gf_flock *flock) +            int op_ret, int op_errno, struct gf_flock *flock, dict_t *xdata)  { -        DHT_STACK_UNWIND (lk, frame, op_ret, op_errno, flock); +        DHT_STACK_UNWIND (lk, frame, op_ret, op_errno, flock, xdata);          return 0;  } @@ -827,7 +827,7 @@ dht_lk_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  dht_lk (call_frame_t *frame, xlator_t *this, -        fd_t *fd, int cmd, struct gf_flock *flock) +        fd_t *fd, int cmd, struct gf_flock *flock, dict_t *xdata)  {          xlator_t     *subvol = NULL;          int           op_errno = -1; @@ -847,13 +847,13 @@ dht_lk (call_frame_t *frame, xlator_t *this,          /* TODO: for rebalance, we need to preserve the fop arguments */          STACK_WIND (frame, dht_lk_cbk, subvol, subvol->fops->lk, fd, -                    cmd, flock); +                    cmd, flock, xdata);          return 0;  err:          op_errno = (op_errno == -1) ? errno : op_errno; -        DHT_STACK_UNWIND (lk, frame, -1, op_errno, NULL); +        DHT_STACK_UNWIND (lk, frame, -1, op_errno, NULL, NULL);          return 0;  } @@ -861,7 +861,8 @@ err:  /* Symlinks are currently not migrated, so no need for any check here */  int  dht_readlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                  int op_ret, int op_errno, const char *path, struct iatt *stbuf) +                  int op_ret, int op_errno, const char *path, +                  struct iatt *stbuf, dict_t *xdata)  {          dht_local_t *local = NULL; @@ -876,14 +877,15 @@ dht_readlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  err:          DHT_STRIP_PHASE1_FLAGS (stbuf); -        DHT_STACK_UNWIND (readlink, frame, op_ret, op_errno, path, stbuf); +        DHT_STACK_UNWIND (readlink, frame, op_ret, op_errno, path, stbuf, xdata);          return 0;  }  int -dht_readlink (call_frame_t *frame, xlator_t *this, loc_t *loc, size_t size) +dht_readlink (call_frame_t *frame, xlator_t *this, loc_t *loc, size_t size, +              dict_t *xdata)  {          xlator_t     *subvol = NULL;          int           op_errno = -1; @@ -911,13 +913,13 @@ dht_readlink (call_frame_t *frame, xlator_t *this, loc_t *loc, size_t size)          STACK_WIND (frame, dht_readlink_cbk,                      subvol, subvol->fops->readlink, -                    loc, size); +                    loc, size, xdata);          return 0;  err:          op_errno = (op_errno == -1) ? errno : op_errno; -        DHT_STACK_UNWIND (readlink, frame, -1, op_errno, NULL, NULL); +        DHT_STACK_UNWIND (readlink, frame, -1, op_errno, NULL, NULL, NULL);          return 0;  } @@ -928,16 +930,16 @@ err:  int  dht_xattrop_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)  { -        DHT_STACK_UNWIND (xattrop, frame, op_ret, op_errno, dict); +        DHT_STACK_UNWIND (xattrop, frame, op_ret, op_errno, dict, xdata);          return 0;  }  int  dht_xattrop (call_frame_t *frame, xlator_t *this, loc_t *loc, -             gf_xattrop_flags_t flags, dict_t *dict) +             gf_xattrop_flags_t flags, dict_t *dict, dict_t *xdata)  {          xlator_t     *subvol = NULL;          int           op_errno = -1; @@ -968,13 +970,13 @@ dht_xattrop (call_frame_t *frame, xlator_t *this, loc_t *loc,          STACK_WIND (frame,                      dht_xattrop_cbk,                      subvol, subvol->fops->xattrop, -                    loc, flags, dict); +                    loc, flags, dict, xdata);          return 0;  err:          op_errno = (op_errno == -1) ? errno : op_errno; -        DHT_STACK_UNWIND (xattrop, frame, -1, op_errno, NULL); +        DHT_STACK_UNWIND (xattrop, frame, -1, op_errno, NULL, NULL);          return 0;  } @@ -982,16 +984,16 @@ err:  int  dht_fxattrop_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)  { -        DHT_STACK_UNWIND (fxattrop, frame, op_ret, op_errno, dict); +        DHT_STACK_UNWIND (fxattrop, frame, op_ret, op_errno, dict, xdata);          return 0;  }  int  dht_fxattrop (call_frame_t *frame, xlator_t *this, -              fd_t *fd, gf_xattrop_flags_t flags, dict_t *dict) +              fd_t *fd, gf_xattrop_flags_t flags, dict_t *dict, dict_t *xdata)  {          xlator_t     *subvol = NULL;          int           op_errno = -1; @@ -1011,13 +1013,13 @@ dht_fxattrop (call_frame_t *frame, xlator_t *this,          STACK_WIND (frame,                      dht_fxattrop_cbk,                      subvol, subvol->fops->fxattrop, -                    fd, flags, dict); +                    fd, flags, dict, xdata);          return 0;  err:          op_errno = (op_errno == -1) ? errno : op_errno; -        DHT_STACK_UNWIND (fxattrop, frame, -1, op_errno, NULL); +        DHT_STACK_UNWIND (fxattrop, frame, -1, op_errno, NULL, NULL);          return 0;  } @@ -1025,17 +1027,17 @@ err:  int  dht_inodelk_cbk (call_frame_t *frame, void *cookie, -                 xlator_t *this, int32_t op_ret, int32_t op_errno) +                 xlator_t *this, int32_t op_ret, int32_t op_errno, dict_t *xdata)  { -        DHT_STACK_UNWIND (inodelk, frame, op_ret, op_errno); +        DHT_STACK_UNWIND (inodelk, frame, op_ret, op_errno, xdata);          return 0;  }  int32_t -dht_inodelk (call_frame_t *frame, xlator_t *this, -             const char *volume, loc_t *loc, int32_t cmd, struct gf_flock *lock) +dht_inodelk (call_frame_t *frame, xlator_t *this, const char *volume, +             loc_t *loc, int32_t cmd, struct gf_flock *lock, dict_t *xdata)  {          xlator_t     *subvol = NULL;          int           op_errno = -1; @@ -1067,31 +1069,31 @@ dht_inodelk (call_frame_t *frame, xlator_t *this,          STACK_WIND (frame,                      dht_inodelk_cbk,                      subvol, subvol->fops->inodelk, -                    volume, loc, cmd, lock); +                    volume, loc, cmd, lock, xdata);          return 0;  err:          op_errno = (op_errno == -1) ? errno : op_errno; -        DHT_STACK_UNWIND (inodelk, frame, -1, op_errno); +        DHT_STACK_UNWIND (inodelk, frame, -1, op_errno, NULL);          return 0;  }  int -dht_finodelk_cbk (call_frame_t *frame, void *cookie, -                  xlator_t *this, int32_t op_ret, int32_t op_errno) +dht_finodelk_cbk (call_frame_t *frame, void *cookie, xlator_t *this, +                  int32_t op_ret, int32_t op_errno, dict_t *xdata)  { -        DHT_STACK_UNWIND (finodelk, frame, op_ret, op_errno); +        DHT_STACK_UNWIND (finodelk, frame, op_ret, op_errno, xdata);          return 0;  }  int -dht_finodelk (call_frame_t *frame, xlator_t *this, -              const char *volume, fd_t *fd, int32_t cmd, struct gf_flock *lock) +dht_finodelk (call_frame_t *frame, xlator_t *this, const char *volume, +              fd_t *fd, int32_t cmd, struct gf_flock *lock, dict_t *xdata)  {          xlator_t     *subvol = NULL;          int           op_errno = -1; @@ -1109,16 +1111,14 @@ dht_finodelk (call_frame_t *frame, xlator_t *this,          } -        STACK_WIND (frame, -                    dht_finodelk_cbk, -                    subvol, subvol->fops->finodelk, -                    volume, fd, cmd, lock); +        STACK_WIND (frame, dht_finodelk_cbk, subvol, subvol->fops->finodelk, +                    volume, fd, cmd, lock, xdata);          return 0;  err:          op_errno = (op_errno == -1) ? errno : op_errno; -        DHT_STACK_UNWIND (finodelk, frame, -1, op_errno); +        DHT_STACK_UNWIND (finodelk, frame, -1, op_errno, NULL);          return 0;  } diff --git a/xlators/cluster/dht/src/dht-inode-write.c b/xlators/cluster/dht/src/dht-inode-write.c index 2f59e7c94..5561ad0f6 100644 --- a/xlators/cluster/dht/src/dht-inode-write.c +++ b/xlators/cluster/dht/src/dht-inode-write.c @@ -32,7 +32,7 @@ int dht_setattr2 (xlator_t *this, call_frame_t *frame, int ret);  int  dht_writev_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  int op_ret, int op_errno, struct iatt *prebuf, -                struct iatt *postbuf) +                struct iatt *postbuf, dict_t *xdata)  {          dht_local_t *local = NULL;          int          ret   = -1; @@ -85,7 +85,8 @@ out:          DHT_STRIP_PHASE1_FLAGS (postbuf);          DHT_STRIP_PHASE1_FLAGS (prebuf); -        DHT_STACK_UNWIND (writev, frame, op_ret, op_errno, prebuf, postbuf); +        DHT_STACK_UNWIND (writev, frame, op_ret, op_errno, prebuf, postbuf, +                          xdata);          return 0;  } @@ -113,7 +114,7 @@ dht_writev2 (xlator_t *this, call_frame_t *frame, int op_ret)                      subvol, subvol->fops->writev,                      local->fd, local->rebalance.vector, local->rebalance.count,                      local->rebalance.offset, local->rebalance.flags, -                    local->rebalance.iobref); +                    local->rebalance.iobref, NULL);          return 0;  } @@ -121,7 +122,7 @@ dht_writev2 (xlator_t *this, call_frame_t *frame, int op_ret)  int  dht_writev (call_frame_t *frame, xlator_t *this, fd_t *fd,              struct iovec *vector, int count, off_t off, uint32_t flags, -            struct iobref *iobref) +            struct iobref *iobref, dict_t *xdata)  {          xlator_t     *subvol = NULL;          int           op_errno = -1; @@ -156,13 +157,13 @@ dht_writev (call_frame_t *frame, xlator_t *this, fd_t *fd,          STACK_WIND (frame, dht_writev_cbk,                      subvol, subvol->fops->writev, -                    fd, vector, count, off, flags, iobref); +                    fd, vector, count, off, flags, iobref, xdata);          return 0;  err:          op_errno = (op_errno == -1) ? errno : op_errno; -        DHT_STACK_UNWIND (writev, frame, -1, op_errno, NULL, NULL); +        DHT_STACK_UNWIND (writev, frame, -1, op_errno, NULL, NULL, NULL);          return 0;  } @@ -172,7 +173,7 @@ err:  int  dht_truncate_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                    int op_ret, int op_errno, struct iatt *prebuf, -                  struct iatt *postbuf) +                  struct iatt *postbuf, dict_t *xdata)  {          dht_local_t  *local = NULL;          call_frame_t *prev = NULL; @@ -231,7 +232,7 @@ out:          DHT_STRIP_PHASE1_FLAGS (postbuf);          DHT_STRIP_PHASE1_FLAGS (prebuf);          DHT_STACK_UNWIND (truncate, frame, op_ret, op_errno, -                          prebuf, postbuf); +                          prebuf, postbuf, xdata);  err:          return 0;  } @@ -260,18 +261,19 @@ dht_truncate2 (xlator_t *this, call_frame_t *frame, int op_ret)          if (local->fop == GF_FOP_TRUNCATE) {                  STACK_WIND (frame, dht_truncate_cbk, subvol,                              subvol->fops->truncate, &local->loc, -                            local->rebalance.offset); +                            local->rebalance.offset, NULL);          } else {                  STACK_WIND (frame, dht_truncate_cbk, subvol,                              subvol->fops->ftruncate, local->fd, -                            local->rebalance.offset); +                            local->rebalance.offset, NULL);          }          return 0;  }  int -dht_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, off_t offset) +dht_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, off_t offset, +              dict_t *xdata)  {          xlator_t     *subvol = NULL;          int           op_errno = -1; @@ -301,19 +303,20 @@ dht_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, off_t offset)          STACK_WIND (frame, dht_truncate_cbk,                      subvol, subvol->fops->truncate, -                    loc, offset); +                    loc, offset, xdata);          return 0;  err:          op_errno = (op_errno == -1) ? errno : op_errno; -        DHT_STACK_UNWIND (truncate, frame, -1, op_errno, NULL, NULL); +        DHT_STACK_UNWIND (truncate, frame, -1, op_errno, NULL, NULL, NULL);          return 0;  }  int -dht_ftruncate (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset) +dht_ftruncate (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset, +               dict_t *xdata)  {          xlator_t     *subvol = NULL;          int           op_errno = -1; @@ -341,13 +344,13 @@ dht_ftruncate (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset)          STACK_WIND (frame, dht_truncate_cbk,                      subvol, subvol->fops->ftruncate, -                    fd, offset); +                    fd, offset, xdata);          return 0;  err:          op_errno = (op_errno == -1) ? errno : op_errno; -        DHT_STACK_UNWIND (ftruncate, frame, -1, op_errno, NULL, NULL); +        DHT_STACK_UNWIND (ftruncate, frame, -1, op_errno, NULL, NULL, NULL);          return 0;  } @@ -356,7 +359,7 @@ err:  int  dht_file_setattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                        int op_ret, int op_errno, struct iatt *prebuf, -                      struct iatt *postbuf) +                      struct iatt *postbuf, dict_t *xdata)  {          dht_local_t  *local = NULL;          call_frame_t *prev = NULL; @@ -393,7 +396,7 @@ out:          DHT_STRIP_PHASE1_FLAGS (postbuf);          DHT_STRIP_PHASE1_FLAGS (prebuf);          DHT_STACK_UNWIND (setattr, frame, op_ret, op_errno, -                          prebuf, postbuf); +                          prebuf, postbuf, xdata);          return 0;  } @@ -421,11 +424,13 @@ dht_setattr2 (xlator_t *this, call_frame_t *frame, int op_ret)          if (local->fop == GF_FOP_SETATTR) {                  STACK_WIND (frame, dht_file_setattr_cbk, subvol,                              subvol->fops->setattr, &local->loc, -                            &local->rebalance.stbuf, local->rebalance.flags); +                            &local->rebalance.stbuf, local->rebalance.flags, +                            NULL);          } else {                  STACK_WIND (frame, dht_file_setattr_cbk, subvol,                              subvol->fops->fsetattr, local->fd, -                            &local->rebalance.stbuf, local->rebalance.flags); +                            &local->rebalance.stbuf, local->rebalance.flags, +                            NULL);          }          return 0; @@ -436,7 +441,7 @@ dht_setattr2 (xlator_t *this, call_frame_t *frame, int op_ret)  int  dht_setattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                   int op_ret, int op_errno, struct iatt *statpre, -                 struct iatt *statpost) +                 struct iatt *statpost, dict_t *xdata)  {          dht_local_t  *local = NULL;          int           this_call_cnt = 0; @@ -467,7 +472,7 @@ unlock:          this_call_cnt = dht_frame_return (frame);          if (is_last_call (this_call_cnt))                  DHT_STACK_UNWIND (setattr, frame, local->op_ret, local->op_errno, -                                  &local->prebuf, &local->stbuf); +                                  &local->prebuf, &local->stbuf, xdata);          return 0;  } @@ -475,7 +480,7 @@ unlock:  int  dht_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)  {          xlator_t     *subvol = NULL;          dht_layout_t *layout = NULL; @@ -521,7 +526,7 @@ dht_setattr (call_frame_t *frame, xlator_t *this, loc_t *loc,                  STACK_WIND (frame, dht_file_setattr_cbk, subvol,                              subvol->fops->setattr, -                            loc, stbuf, valid); +                            loc, stbuf, valid, xdata);                  return 0;          } @@ -532,14 +537,14 @@ dht_setattr (call_frame_t *frame, xlator_t *this, loc_t *loc,                  STACK_WIND (frame, dht_setattr_cbk,                              layout->list[i].xlator,                              layout->list[i].xlator->fops->setattr, -                            loc, stbuf, valid); +                            loc, stbuf, valid, xdata);          }          return 0;  err:          op_errno = (op_errno == -1) ? errno : op_errno; -        DHT_STACK_UNWIND (setattr, frame, -1, op_errno, NULL, NULL); +        DHT_STACK_UNWIND (setattr, frame, -1, op_errno, NULL, NULL, NULL);          return 0;  } @@ -547,7 +552,7 @@ err:  int  dht_fsetattr (call_frame_t *frame, xlator_t *this, fd_t *fd, struct iatt *stbuf, -              int32_t valid) +              int32_t valid, dict_t *xdata)  {          xlator_t     *subvol = NULL;          dht_layout_t *layout = NULL; @@ -592,7 +597,7 @@ dht_fsetattr (call_frame_t *frame, xlator_t *this, fd_t *fd, struct iatt *stbuf,                  STACK_WIND (frame, dht_file_setattr_cbk, subvol,                              subvol->fops->fsetattr, -                            fd, stbuf, valid); +                            fd, stbuf, valid, xdata);                  return 0;          } @@ -603,14 +608,14 @@ dht_fsetattr (call_frame_t *frame, xlator_t *this, fd_t *fd, struct iatt *stbuf,                  STACK_WIND (frame, dht_setattr_cbk,                              layout->list[i].xlator,                              layout->list[i].xlator->fops->fsetattr, -                            fd, stbuf, valid); +                            fd, stbuf, valid, xdata);          }          return 0;  err:          op_errno = (op_errno == -1) ? errno : op_errno; -        DHT_STACK_UNWIND (fsetattr, frame, -1, op_errno, NULL, NULL); +        DHT_STACK_UNWIND (fsetattr, frame, -1, op_errno, NULL, NULL, NULL);          return 0;  } diff --git a/xlators/cluster/dht/src/dht-linkfile.c b/xlators/cluster/dht/src/dht-linkfile.c index d8ce49ddf..acdd24913 100644 --- a/xlators/cluster/dht/src/dht-linkfile.c +++ b/xlators/cluster/dht/src/dht-linkfile.c @@ -34,14 +34,15 @@ int  dht_linkfile_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                           int op_ret, int op_errno, inode_t *inode,                           struct iatt *stbuf, struct iatt *preparent, -                         struct iatt *postparent) +                         struct iatt *postparent, dict_t *xdata)  {          dht_local_t  *local = NULL;          local = frame->local;          local->linkfile.linkfile_cbk (frame, cookie, this, op_ret, op_errno, -                                      inode, stbuf, preparent, postparent); +                                      inode, stbuf, preparent, postparent, +                                      xdata);          return 0;  } @@ -91,7 +92,7 @@ dht_linkfile_create (call_frame_t *frame, fop_mknod_cbk_t linkfile_cbk,          STACK_WIND (frame, dht_linkfile_create_cbk,                      fromvol, fromvol->fops->mknod, loc, -                    S_IFREG | DHT_LINKFILE_MODE, 0, dict); +                    S_IFREG | DHT_LINKFILE_MODE, 0, 0, dict);          if (need_unref && dict)                  dict_unref (dict); @@ -99,7 +100,7 @@ dht_linkfile_create (call_frame_t *frame, fop_mknod_cbk_t linkfile_cbk,          return 0;  out:          local->linkfile.linkfile_cbk (frame, NULL, frame->this, -1, ENOMEM, -                                      loc->inode, NULL, NULL, NULL); +                                      loc->inode, NULL, NULL, NULL, NULL);          if (need_unref && dict)                  dict_unref (dict); @@ -111,7 +112,8 @@ out:  int  dht_linkfile_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)  {          dht_local_t   *local = NULL;          call_frame_t  *prev = NULL; @@ -155,7 +157,7 @@ dht_linkfile_unlink (call_frame_t *frame, xlator_t *this,          STACK_WIND (unlink_frame, dht_linkfile_unlink_cbk,                      subvol, subvol->fops->unlink, -                    &unlink_local->loc); +                    &unlink_local->loc, 0, NULL);          return 0;  err: diff --git a/xlators/cluster/dht/src/dht-rebalance.c b/xlators/cluster/dht/src/dht-rebalance.c index eaf5e89ce..783d153d0 100644 --- a/xlators/cluster/dht/src/dht-rebalance.c +++ b/xlators/cluster/dht/src/dht-rebalance.c @@ -936,7 +936,7 @@ rebalance_task_completion (int op_ret, call_frame_t *sync_frame, void *data)                  op_errno = EPERM;          } -        DHT_STACK_UNWIND (setxattr, sync_frame, op_ret, op_errno); +        DHT_STACK_UNWIND (setxattr, sync_frame, op_ret, op_errno, NULL);          return 0;  } diff --git a/xlators/cluster/dht/src/dht-rename.c b/xlators/cluster/dht/src/dht-rename.c index fa06de711..af8f50774 100644 --- a/xlators/cluster/dht/src/dht-rename.c +++ b/xlators/cluster/dht/src/dht-rename.c @@ -35,7 +35,8 @@ int  dht_rename_dir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                      int32_t op_ret, int32_t op_errno, struct iatt *stbuf,                      struct iatt *preoldparent, struct iatt *postoldparent, -                    struct iatt *prenewparent, struct iatt *postnewparent) +                    struct iatt *prenewparent, struct iatt *postnewparent, +                    dict_t *xdata)  {          dht_local_t  *local = NULL;          int           this_call_cnt = 0; @@ -84,7 +85,7 @@ unwind:                  DHT_STACK_UNWIND (rename, frame, local->op_ret, local->op_errno,                                    &local->stbuf, &local->preoldparent,                                    &local->postoldparent, -                                  &local->preparent, &local->postparent); +                                  &local->preparent, &local->postparent, xdata);          }          return 0; @@ -97,7 +98,7 @@ dht_rename_hashed_dir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                             struct iatt *preoldparent,                             struct iatt *postoldparent,                             struct iatt *prenewparent, -                           struct iatt *postnewparent) +                           struct iatt *postnewparent, dict_t *xdata)  {          dht_conf_t   *conf = NULL;          dht_local_t  *local = NULL; @@ -147,7 +148,7 @@ dht_rename_hashed_dir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  STACK_WIND (frame, dht_rename_dir_cbk,                              conf->subvolumes[i],                              conf->subvolumes[i]->fops->rename, -                            &local->loc, &local->loc2); +                            &local->loc, &local->loc2, NULL);                  if (!--call_cnt)                          break;          } @@ -164,7 +165,7 @@ unwind:          DHT_STACK_UNWIND (rename, frame, local->op_ret, local->op_errno,                            &local->stbuf, &local->preoldparent,                            &local->postoldparent, -                          &local->preparent, &local->postparent); +                          &local->preparent, &local->postparent, NULL);          return 0;  } @@ -185,19 +186,20 @@ dht_rename_dir_do (call_frame_t *frame, xlator_t *this)          STACK_WIND (frame, dht_rename_hashed_dir_cbk,                      local->dst_hashed,                      local->dst_hashed->fops->rename, -                    &local->loc, &local->loc2); +                    &local->loc, &local->loc2, NULL);          return 0;  err:          DHT_STACK_UNWIND (rename, frame, local->op_ret, local->op_errno, NULL, NULL, -                          NULL, NULL, NULL); +                          NULL, NULL, NULL, NULL);          return 0;  }  int  dht_rename_readdir_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)  {          dht_local_t  *local = NULL;          int           this_call_cnt = -1; @@ -226,7 +228,7 @@ dht_rename_readdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  dht_rename_opendir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                        int op_ret, int op_errno, fd_t *fd) +                        int op_ret, int op_errno, fd_t *fd, dict_t *xdata)  {          dht_local_t  *local = NULL;          int           this_call_cnt = -1; @@ -246,7 +248,7 @@ dht_rename_opendir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          STACK_WIND (frame, dht_rename_readdir_cbk,                      prev->this, prev->this->fops->readdir, -                    local->fd, 4096, 0); +                    local->fd, 4096, 0, NULL);          return 0; @@ -302,14 +304,15 @@ dht_rename_dir (call_frame_t *frame, xlator_t *this)                  STACK_WIND (frame, dht_rename_opendir_cbk,                              conf->subvolumes[i],                              conf->subvolumes[i]->fops->opendir, -                            &local->loc2, local->fd); +                            &local->loc2, local->fd, NULL);          }          return 0;  err:          op_errno = (op_errno == -1) ? errno : op_errno; -        DHT_STACK_UNWIND (rename, frame, -1, op_errno, NULL, NULL, NULL, NULL, NULL); +        DHT_STACK_UNWIND (rename, frame, -1, op_errno, NULL, NULL, NULL, NULL, +                          NULL, NULL);          return 0;  } @@ -317,7 +320,7 @@ err:  int  dht_rename_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)  {          dht_local_t  *local = NULL;          call_frame_t *prev = NULL; @@ -350,7 +353,7 @@ dht_rename_unlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  DHT_STACK_UNWIND (rename, frame, local->op_ret, local->op_errno,                                    &local->stbuf, &local->preoldparent,                                    &local->postoldparent, &local->preparent, -                                  &local->postparent); +                                  &local->postparent, NULL);          }  out: @@ -398,7 +401,7 @@ dht_rename_cleanup (call_frame_t *frame)                          local->loc.path, dst_hashed->name, src_cached->name);                  STACK_WIND (frame, dht_rename_unlink_cbk,                              dst_hashed, dst_hashed->fops->unlink, -                            &local->loc); +                            &local->loc, 0, NULL);          }          if (src_cached != dst_hashed) { @@ -407,7 +410,7 @@ dht_rename_cleanup (call_frame_t *frame)                          local->loc2.path, src_cached->name);                  STACK_WIND (frame, dht_rename_unlink_cbk,                              src_cached, src_cached->fops->unlink, -                            &local->loc2); +                            &local->loc2, 0, NULL);          }          return 0; @@ -422,7 +425,7 @@ nolinks:          DHT_STACK_UNWIND (rename, frame, local->op_ret, local->op_errno,                            &local->stbuf, &local->preoldparent,                            &local->postoldparent, &local->preparent, -                          &local->postparent); +                          &local->postparent, NULL);          return 0;  } @@ -430,9 +433,10 @@ nolinks:  int  dht_rename_links_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                      int32_t op_ret, int32_t op_errno, -                      inode_t *inode, struct iatt *stbuf, -                      struct iatt *preparent, struct iatt *postparent) +                             int32_t op_ret, int32_t op_errno, +                             inode_t *inode, struct iatt *stbuf, +                             struct iatt *preparent, struct iatt *postparent, +                             dict_t *xdata)  {          call_frame_t *prev = NULL;          dht_local_t  *local = NULL; @@ -456,7 +460,8 @@ int  dht_rename_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  int32_t op_ret, int32_t op_errno, struct iatt *stbuf,                  struct iatt *preoldparent, struct iatt *postoldparent, -                struct iatt *prenewparent, struct iatt *postnewparent) +                struct iatt *prenewparent, struct iatt *postnewparent, +                dict_t *xdata)  {          dht_local_t  *local = NULL;          call_frame_t *prev = NULL; @@ -545,7 +550,7 @@ err:                  STACK_WIND (frame, dht_rename_unlink_cbk,                              src_cached, src_cached->fops->unlink, -                            &local->loc); +                            &local->loc, 0, NULL);          }          if (src_hashed != rename_subvol && src_hashed != src_cached) { @@ -555,7 +560,7 @@ err:                  STACK_WIND (frame, dht_rename_unlink_cbk,                              src_hashed, src_hashed->fops->unlink, -                            &local->loc); +                            &local->loc, 0, NULL);          }          if (dst_cached @@ -567,7 +572,7 @@ err:                  STACK_WIND (frame, dht_rename_unlink_cbk,                              dst_cached, dst_cached->fops->unlink, -                            &local->loc2); +                            &local->loc2, 0, NULL);          }          return 0; @@ -581,7 +586,7 @@ unwind:          DHT_STACK_UNWIND (rename, frame, local->op_ret, local->op_errno,                            &local->stbuf, &local->preoldparent,                            &local->postoldparent, &local->preparent, -                          &local->postparent); +                          &local->postparent, NULL);          return 0; @@ -621,7 +626,7 @@ dht_do_rename (call_frame_t *frame)          STACK_WIND (frame, dht_rename_cbk,                      rename_subvol, rename_subvol->fops->rename, -                    &local->loc, &local->loc2); +                    &local->loc, &local->loc2, NULL);          return 0;  } @@ -631,7 +636,8 @@ int  dht_rename_links_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                        int32_t op_ret, int32_t op_errno,                        inode_t *inode, struct iatt *stbuf, -                      struct iatt *preparent, struct iatt *postparent) +                      struct iatt *preparent, struct iatt *postparent, +                      dict_t *xdata)  {          dht_local_t  *local = NULL;          call_frame_t *prev = NULL; @@ -670,7 +676,8 @@ cleanup:  int  dht_rename_unlink_links_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)  {  	dht_local_t  *local = NULL;  	call_frame_t *prev = NULL; @@ -733,7 +740,7 @@ dht_rename_create_links (call_frame_t *frame)  		STACK_WIND (frame, dht_rename_unlink_links_cbk,  			    dst_hashed, dst_hashed->fops->unlink, -			    &local->loc2); +			    &local->loc2, 0, NULL);                  return 0;          } @@ -760,7 +767,7 @@ dht_rename_create_links (call_frame_t *frame)  			local->loc2.path, src_cached->name);  		STACK_WIND (frame, dht_rename_links_cbk,  			    src_cached, src_cached->fops->link, -			    &local->loc, &local->loc2); +			    &local->loc, &local->loc2, NULL);  	}  nolinks: @@ -775,7 +782,7 @@ nolinks:  int  dht_rename (call_frame_t *frame, xlator_t *this, -            loc_t *oldloc, loc_t *newloc) +            loc_t *oldloc, loc_t *newloc, dict_t *xdata)  {          xlator_t    *src_cached = NULL;          xlator_t    *src_hashed = NULL; @@ -857,7 +864,8 @@ dht_rename (call_frame_t *frame, xlator_t *this,  err:          op_errno = (op_errno == -1) ? errno : op_errno; -        DHT_STACK_UNWIND (rename, frame, -1, op_errno, NULL, NULL, NULL, NULL, NULL); +        DHT_STACK_UNWIND (rename, frame, -1, op_errno, NULL, NULL, NULL, NULL, +                          NULL, NULL);          return 0;  } diff --git a/xlators/cluster/dht/src/dht-selfheal.c b/xlators/cluster/dht/src/dht-selfheal.c index 6f6d02671..2ca340295 100644 --- a/xlators/cluster/dht/src/dht-selfheal.c +++ b/xlators/cluster/dht/src/dht-selfheal.c @@ -82,7 +82,7 @@ dht_selfheal_dir_finish (call_frame_t *frame, xlator_t *this, int ret)          local = frame->local;          local->selfheal.dir_cbk (frame, NULL, frame->this, ret, -                                 local->op_errno); +                                 local->op_errno, NULL);          return 0;  } @@ -90,7 +90,7 @@ dht_selfheal_dir_finish (call_frame_t *frame, xlator_t *this, int ret)  int  dht_selfheal_dir_xattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                            int op_ret, int op_errno) +                            int op_ret, int op_errno, dict_t *xdata)  {          dht_local_t  *local = NULL;          call_frame_t *prev = NULL; @@ -183,7 +183,7 @@ dht_selfheal_dir_xattr_persubvol (call_frame_t *frame, loc_t *loc,          STACK_WIND (frame, dht_selfheal_dir_xattr_cbk,                      subvol, subvol->fops->setxattr, -                    loc, xattr, 0); +                    loc, xattr, 0, NULL);          dict_unref (xattr); @@ -197,7 +197,7 @@ err:                  GF_FREE (disk_layout);          dht_selfheal_dir_xattr_cbk (frame, subvol, frame->this, -                                    -1, ENOMEM); +                                    -1, ENOMEM, NULL);          return 0;  } @@ -275,7 +275,7 @@ dht_selfheal_dir_xattr (call_frame_t *frame, loc_t *loc, dht_layout_t *layout)  int  dht_selfheal_dir_setattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                                int op_ret, int op_errno, struct iatt *statpre, -                              struct iatt *statpost) +                              struct iatt *statpost, dict_t *xdata)  {          dht_local_t   *local = NULL;          dht_layout_t  *layout = NULL; @@ -329,7 +329,7 @@ dht_selfheal_dir_setattr (call_frame_t *frame, loc_t *loc, struct iatt *stbuf,                          STACK_WIND (frame, dht_selfheal_dir_setattr_cbk,                                      layout->list[i].xlator,                                      layout->list[i].xlator->fops->setattr, -                                    loc, stbuf, valid); +                                    loc, stbuf, valid, NULL);                  }          } @@ -340,7 +340,8 @@ int  dht_selfheal_dir_mkdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                              int op_ret, int op_errno,                              inode_t *inode, struct iatt *stbuf, -                            struct iatt *preparent, struct iatt *postparent) +                            struct iatt *preparent, struct iatt *postparent, +                            dict_t *xdata)  {          dht_local_t   *local = NULL;          dht_layout_t  *layout = NULL; @@ -442,7 +443,7 @@ dht_selfheal_dir_mkdir (call_frame_t *frame, loc_t *loc,                                      loc,                                      st_mode_from_ia (local->stbuf.ia_prot,                                                       local->stbuf.ia_type), -                                    dict); +                                    0, dict);                  }          } diff --git a/xlators/cluster/dht/src/nufa.c b/xlators/cluster/dht/src/nufa.c index 951fe4e04..56ee12908 100644 --- a/xlators/cluster/dht/src/nufa.c +++ b/xlators/cluster/dht/src/nufa.c @@ -44,7 +44,6 @@ nufa_local_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          int           call_cnt    = 0;          int           ret         = 0; -          conf  = this->private;          prev  = cookie; @@ -141,7 +140,7 @@ out:  err:          DHT_STACK_UNWIND (lookup, frame, op_ret, op_errno, -                          inode, stbuf, xattr, NULL); +                          inode, stbuf, xattr, postparent);          return 0;  } @@ -260,7 +259,8 @@ nufa_lookup (call_frame_t *frame, xlator_t *this,  err:          op_errno = (op_errno == -1) ? errno : op_errno; -        DHT_STACK_UNWIND (lookup, frame, -1, op_errno, NULL, NULL, NULL, NULL); +        DHT_STACK_UNWIND (lookup, frame, -1, op_errno, NULL, NULL, NULL, +                          NULL);          return 0;  } @@ -269,7 +269,7 @@ nufa_create_linkfile_create_cbk (call_frame_t *frame, void *cookie,                                   xlator_t *this, int op_ret, int op_errno,                                   inode_t *inode, struct iatt *stbuf,                                   struct iatt *preparent, -                                 struct iatt *postparent) +                                 struct iatt *postparent, dict_t *xdata)  {          dht_local_t  *local = NULL; @@ -280,21 +280,21 @@ nufa_create_linkfile_create_cbk (call_frame_t *frame, void *cookie,          STACK_WIND (frame, dht_create_cbk,                      local->cached_subvol, local->cached_subvol->fops->create, -                    &local->loc, local->flags, local->mode, local->fd, -                    local->params); +                    &local->loc, local->flags, local->mode, local->umask, +                    local->fd, local->params);          return 0;  err:          DHT_STACK_UNWIND (create, frame, -1, op_errno, -                          NULL, NULL, NULL, NULL, NULL); +                          NULL, NULL, NULL, NULL, NULL, NULL);          return 0;  }  int  nufa_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 umask, fd_t *fd, dict_t *params)  {          dht_local_t *local = NULL;          dht_conf_t  *conf  = NULL; @@ -337,7 +337,7 @@ nufa_create (call_frame_t *frame, xlator_t *this,                  local->params = dict_ref (params);                  local->mode = mode;                  local->flags = flags; - +                local->umask = umask;                  local->cached_subvol = avail_subvol;                  dht_linkfile_create (frame,                                       nufa_create_linkfile_create_cbk, @@ -350,14 +350,14 @@ nufa_create (call_frame_t *frame, xlator_t *this,          STACK_WIND (frame, dht_create_cbk,                      subvol, subvol->fops->create, -                    loc, flags, mode, fd, params); +                    loc, flags, mode, umask, fd, params);          return 0;  err:          op_errno = (op_errno == -1) ? errno : op_errno;          DHT_STACK_UNWIND (create, frame, -1, op_errno, -                          NULL, NULL, NULL, NULL, NULL); +                          NULL, NULL, NULL, NULL, NULL, NULL);          return 0;  } @@ -366,7 +366,7 @@ int  nufa_mknod_linkfile_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                           int op_ret, int op_errno, inode_t *inode,                           struct iatt *stbuf, struct iatt *preparent, -                         struct iatt *postparent) +                         struct iatt *postparent, dict_t *xdata)  {          dht_local_t  *local = NULL; @@ -377,7 +377,7 @@ nufa_mknod_linkfile_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                              local->cached_subvol,                              local->cached_subvol->fops->mknod,                              &local->loc, local->mode, local->rdev, -                            local->params); +                            local->umask, local->params);                  return 0;          } @@ -386,14 +386,14 @@ nufa_mknod_linkfile_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          WIPE (preparent);          DHT_STACK_UNWIND (link, frame, op_ret, op_errno, -                          inode, stbuf, preparent, postparent); +                          inode, stbuf, preparent, postparent, xdata);          return 0;  }  int  nufa_mknod (call_frame_t *frame, xlator_t *this, -            loc_t *loc, mode_t mode, dev_t rdev, dict_t *params) +            loc_t *loc, mode_t mode, dev_t rdev, mode_t umask, dict_t *params)  {          dht_local_t *local = NULL;          dht_conf_t  *conf  = NULL; @@ -437,6 +437,7 @@ nufa_mknod (call_frame_t *frame, xlator_t *this,                  local->params = dict_ref (params);                  local->mode = mode; +                local->umask = umask;                  local->rdev = rdev;                  local->cached_subvol = avail_subvol; @@ -450,14 +451,14 @@ nufa_mknod (call_frame_t *frame, xlator_t *this,          STACK_WIND (frame, dht_newfile_cbk,                      subvol, subvol->fops->mknod, -                    loc, mode, rdev, params); +                    loc, mode, rdev, umask, params);          return 0;  err:          op_errno = (op_errno == -1) ? errno : op_errno;          DHT_STACK_UNWIND (mknod, frame, -1, op_errno, -                          NULL, NULL, NULL, NULL); +                          NULL, NULL, NULL, NULL, NULL);          return 0;  } diff --git a/xlators/cluster/dht/src/switch.c b/xlators/cluster/dht/src/switch.c index 1451e011e..e129bf01b 100644 --- a/xlators/cluster/dht/src/switch.c +++ b/xlators/cluster/dht/src/switch.c @@ -366,7 +366,8 @@ switch_lookup (call_frame_t *frame, xlator_t *this,  err:          op_errno = (op_errno == -1) ? errno : op_errno; -        DHT_STACK_UNWIND (lookup, frame, -1, op_errno, NULL, NULL, NULL, NULL); +        DHT_STACK_UNWIND (lookup, frame, -1, op_errno, +                          NULL, NULL, NULL, NULL);          return 0;  } @@ -375,7 +376,7 @@ switch_create_linkfile_create_cbk (call_frame_t *frame, void *cookie,                                     xlator_t *this, int op_ret, int op_errno,                                     inode_t *inode, struct iatt *stbuf,                                     struct iatt *preparent, -                                   struct iatt *postparent) +                                   struct iatt *postparent, dict_t *xdata)  {          dht_local_t  *local = NULL; @@ -386,21 +387,21 @@ switch_create_linkfile_create_cbk (call_frame_t *frame, void *cookie,          STACK_WIND (frame, dht_create_cbk,                      local->cached_subvol, local->cached_subvol->fops->create, -                    &local->loc, local->flags, local->mode, local->fd, -                    local->params); +                    &local->loc, local->flags, local->mode, local->umask, +                    local->fd, local->params);          return 0;  err:          DHT_STACK_UNWIND (create, frame, -1, op_errno, -                          NULL, NULL, NULL, NULL, NULL); +                          NULL, NULL, NULL, NULL, NULL, NULL);          return 0;  }  int  switch_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 umask, fd_t *fd, dict_t *params)  {          dht_local_t *local = NULL;          dht_conf_t  *conf  = NULL; @@ -441,7 +442,7 @@ switch_create (call_frame_t *frame, xlator_t *this,                  /* create a link file instead of actual file */                  local->mode = mode;                  local->flags = flags; - +                local->umask = umask;                  local->cached_subvol = avail_subvol;                  dht_linkfile_create (frame,                                       switch_create_linkfile_create_cbk, @@ -454,14 +455,14 @@ switch_create (call_frame_t *frame, xlator_t *this,          STACK_WIND (frame, dht_create_cbk,                      subvol, subvol->fops->create, -                    loc, flags, mode, fd, params); +                    loc, flags, mode, umask, fd, params);          return 0;  err:          op_errno = (op_errno == -1) ? errno : op_errno;          DHT_STACK_UNWIND (create, frame, -1, op_errno, -                          NULL, NULL, NULL, NULL, NULL); +                          NULL, NULL, NULL, NULL, NULL, NULL);          return 0;  } @@ -470,7 +471,7 @@ int  switch_mknod_linkfile_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                             int op_ret, int op_errno, inode_t *inode,                             struct iatt *stbuf, struct iatt *preparent, -                           struct iatt *postparent) +                           struct iatt *postparent, dict_t *xdata)  {          dht_local_t  *local = NULL; @@ -481,20 +482,20 @@ switch_mknod_linkfile_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                              local->cached_subvol,                              local->cached_subvol->fops->mknod,                              &local->loc, local->mode, local->rdev, -                            local->params); +                            local->umask, local->params);                  return 0;          }          DHT_STACK_UNWIND (link, frame, op_ret, op_errno, -                          inode, stbuf, preparent, postparent); +                          inode, stbuf, preparent, postparent, xdata);          return 0;  }  int -switch_mknod (call_frame_t *frame, xlator_t *this, -              loc_t *loc, mode_t mode, dev_t rdev, dict_t *params) +switch_mknod (call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode, +              dev_t rdev, mode_t umask, dict_t *params)  {          dht_local_t *local = NULL;          dht_conf_t  *conf  = NULL; @@ -537,6 +538,7 @@ switch_mknod (call_frame_t *frame, xlator_t *this,                  local->params = dict_ref (params);                  local->mode = mode; +                local->umask = umask;                  local->rdev = rdev;                  local->cached_subvol = avail_subvol; @@ -550,14 +552,14 @@ switch_mknod (call_frame_t *frame, xlator_t *this,          STACK_WIND (frame, dht_newfile_cbk,                      subvol, subvol->fops->mknod, -                    loc, mode, rdev, params); +                    loc, mode, rdev, umask, params);          return 0;  err:          op_errno = (op_errno == -1) ? errno : op_errno;          DHT_STACK_UNWIND (mknod, frame, -1, op_errno, -                          NULL, NULL, NULL, NULL); +                          NULL, NULL, NULL, NULL, NULL);          return 0;  } diff --git a/xlators/cluster/stripe/src/Makefile.am b/xlators/cluster/stripe/src/Makefile.am index 0db3c9eeb..8c48d3410 100644 --- a/xlators/cluster/stripe/src/Makefile.am +++ b/xlators/cluster/stripe/src/Makefile.am @@ -4,7 +4,9 @@ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/cluster  stripe_la_LDFLAGS = -module -avoidversion -stripe_la_SOURCES = stripe.c $(top_builddir)/xlators/lib/src/libxlator.c +stripe_la_SOURCES = stripe.c stripe-helpers.c \ +	$(top_builddir)/xlators/lib/src/libxlator.c +  stripe_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la  noinst_HEADERS = stripe.h stripe-mem-types.h $(top_builddir)/xlators/lib/src/libxlator.h diff --git a/xlators/cluster/stripe/src/stripe-helpers.c b/xlators/cluster/stripe/src/stripe-helpers.c new file mode 100644 index 000000000..93a97cda8 --- /dev/null +++ b/xlators/cluster/stripe/src/stripe-helpers.c @@ -0,0 +1,507 @@ +/* +  Copyright (c) 2012 Red Hat, Inc. <http://www.redhat.com> +  This file is part of GlusterFS. + +  GlusterFS is free software; you can redistribute it and/or modify +  it under the terms of the GNU General Public License as published +  by the Free Software Foundation; either version 3 of the License, +  or (at your option) any later version. + +  GlusterFS is distributed in the hope that it will be useful, but +  WITHOUT ANY WARRANTY; without even the implied warranty of +  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU +  General Public License for more details. + +  You should have received a copy of the GNU General Public License +  along with this program.  If not, see +  <http://www.gnu.org/licenses/>. +*/ + +#include <fnmatch.h> + +#include "stripe.h" +#include "byte-order.h" + +void +stripe_local_wipe (stripe_local_t *local) +{ +        if (!local) +                goto out; + +        loc_wipe (&local->loc); +        loc_wipe (&local->loc2); + +        if (local->fd) +                fd_unref (local->fd); + +        if (local->inode) +                inode_unref (local->inode); + +        if (local->xattr) +                dict_unref (local->xattr); + +        if (local->xdata) +                dict_unref (local->xdata); + +out: +        return; +} + + + +void +stripe_aggregate (dict_t *this, char *key, data_t *value, void *data) +{ +        dict_t  *dst  = NULL; +        int64_t *ptr  = 0, *size = NULL; +        int32_t  ret  = -1; + +        dst = data; + +        if (strcmp (key, GF_XATTR_QUOTA_SIZE_KEY) == 0) { +                ret = dict_get_bin (dst, key, (void **)&size); +                if (ret < 0) { +                        size = GF_CALLOC (1, sizeof (int64_t), +                                          gf_common_mt_char); +                        if (size == NULL) { +                                gf_log ("stripe", GF_LOG_WARNING, +                                        "memory allocation failed"); +                                goto out; +                        } +                        ret = dict_set_bin (dst, key, size, sizeof (int64_t)); +                        if (ret < 0) { +                                gf_log ("stripe", GF_LOG_WARNING, +                                        "stripe aggregate dict set failed"); +                                GF_FREE (size); +                                goto out; +                        } +                } + +                ptr = data_to_bin (value); +                if (ptr == NULL) { +                        gf_log ("stripe", GF_LOG_WARNING, "data to bin failed"); +                        goto out; +                } + +                *size = hton64 (ntoh64 (*size) + ntoh64 (*ptr)); +        } else if (strcmp (key, GF_CONTENT_KEY)) { +                /* No need to aggregate 'CONTENT' data */ +                ret = dict_set (dst, key, value); +                if (ret) +                        gf_log ("stripe", GF_LOG_WARNING, "xattr dict set failed"); +        } + +out: +        return; +} + + +void +stripe_aggregate_xattr (dict_t *dst, dict_t *src) +{ +        if ((dst == NULL) || (src == NULL)) { +                goto out; +        } + +        dict_foreach (src, stripe_aggregate, dst); +out: +        return; +} + + +int32_t +stripe_xattr_aggregate (char *buffer, stripe_local_t *local, int32_t *total) +{ +        int32_t              i     = 0; +        int32_t              ret   = -1; +        int32_t              len   = 0; +        char                *sbuf  = NULL; +        stripe_xattr_sort_t *xattr = NULL; + +        if (!buffer || !local || !local->xattr_list) +                goto out; + +        sbuf = buffer; + +        for (i = 0; i < local->nallocs; i++) { +                xattr = local->xattr_list + i; +                len = xattr->xattr_len; + +                if (len && xattr && xattr->xattr_value) { +                        memcpy (buffer, xattr->xattr_value, len); +                        buffer += len; +                        *buffer++ = ' '; +                } +        } + +        *--buffer = '\0'; +        if (total) +                *total = buffer - sbuf; +        ret = 0; + + out: +        return ret; +} + +int32_t +stripe_free_xattr_str (stripe_local_t *local) +{ +        int32_t              i     = 0; +        int32_t              ret   = -1; +        stripe_xattr_sort_t *xattr = NULL; + +        if (!local || !local->xattr_list) +                goto out; + +        for (i = 0; i < local->nallocs; i++) { +                xattr = local->xattr_list + i; + +                if (xattr && xattr->xattr_value) +                        GF_FREE (xattr->xattr_value); +        } + +        ret = 0; + out: +        return ret; +} + + +int32_t +stripe_fill_pathinfo_xattr (xlator_t *this, stripe_local_t *local, +                            char **xattr_serz) +{ +        int      ret             = -1; +        int32_t  padding         = 0; +        int32_t  tlen            = 0; +        char stripe_size_str[20] = {0,}; +        char    *pathinfo_serz   = NULL; + +        if (!local) { +                gf_log (this->name, GF_LOG_ERROR, "Possible NULL deref"); +                goto out; +        } + +        (void) snprintf (stripe_size_str, 20, "%ld", +                         (local->fctx) ? local->fctx->stripe_size : 0); + +        /* extra bytes for decorations (brackets and <>'s) */ +        padding = strlen (this->name) + strlen (STRIPE_PATHINFO_HEADER) +                + strlen (stripe_size_str) + 7; +        local->xattr_total_len += (padding + 2); + +        pathinfo_serz = GF_CALLOC (local->xattr_total_len, sizeof (char), +                                   gf_common_mt_char); +        if (!pathinfo_serz) +                goto out; + +        /* xlator info */ +        (void) sprintf (pathinfo_serz, "(<"STRIPE_PATHINFO_HEADER"%s:[%s]> ", +                        this->name, stripe_size_str); + +        ret = stripe_xattr_aggregate (pathinfo_serz + padding, local, &tlen); +        if (ret) { +                gf_log (this->name, GF_LOG_ERROR, +                        "Cannot aggregate pathinfo list"); +                goto out; +        } + +        *(pathinfo_serz + padding + tlen) = ')'; +        *(pathinfo_serz + padding + tlen + 1) = '\0'; + +        *xattr_serz = pathinfo_serz; + +        ret = 0; + out: +        return ret; +} + +/** + * stripe_get_matching_bs - Get the matching block size for the given path. + */ +int32_t +stripe_get_matching_bs (const char *path, stripe_private_t *priv) +{ +        struct stripe_options *trav       = NULL; +        uint64_t               block_size = 0; + +        GF_VALIDATE_OR_GOTO ("stripe", priv, out); +        GF_VALIDATE_OR_GOTO ("stripe", path, out); + +        LOCK (&priv->lock); +        { +                block_size = priv->block_size; +                trav = priv->pattern; +                while (trav) { +                        if (!fnmatch (trav->path_pattern, path, FNM_NOESCAPE)) { +                                block_size = trav->block_size; +                                break; +                        } +                        trav = trav->next; +                } +        } +        UNLOCK (&priv->lock); + +out: +        return block_size; +} + + + +int32_t +stripe_ctx_handle (xlator_t *this, call_frame_t *prev, stripe_local_t *local, +                   dict_t *dict) +{ +        char            key[256]       = {0,}; +        data_t         *data            = NULL; +        int32_t         index           = 0; +        stripe_private_t *priv          = NULL; +        int32_t         ret             = -1; + +        priv = this->private; + + +        if (!local->fctx) { +                local->fctx =  GF_CALLOC (1, sizeof (stripe_fd_ctx_t), +                                         gf_stripe_mt_stripe_fd_ctx_t); +                if (!local->fctx) { +                        local->op_errno = ENOMEM; +                        local->op_ret = -1; +                        goto out; +                } + +                local->fctx->static_array = 0; +        } +        /* Stripe block size */ +        sprintf (key, "trusted.%s.stripe-size", this->name); +        data = dict_get (dict, key); +        if (!data) { +                local->xattr_self_heal_needed = 1; +                gf_log (this->name, GF_LOG_ERROR, +                        "Failed to get stripe-size"); +                goto out; +        } else { +                if (!local->fctx->stripe_size) { +                        local->fctx->stripe_size = +                                     data_to_int64 (data); +                } + +                if (local->fctx->stripe_size != data_to_int64 (data)) { +                        gf_log (this->name, GF_LOG_WARNING, +                                "stripe-size mismatch in blocks"); +                        local->xattr_self_heal_needed = 1; +                } +        } + +        /* Stripe count */ +        sprintf (key, "trusted.%s.stripe-count", this->name); +        data = dict_get (dict, key); + +        if (!data) { +                local->xattr_self_heal_needed = 1; +                gf_log (this->name, GF_LOG_ERROR, +                        "Failed to get stripe-count"); +                goto out; +        } +        if (!local->fctx->xl_array) { +                local->fctx->stripe_count = data_to_int32 (data); +                if (!local->fctx->stripe_count) { +                        gf_log (this->name, GF_LOG_ERROR, +                                "error with stripe-count xattr"); +                        local->op_ret   = -1; +                        local->op_errno = EIO; +                        goto out; +                } + +                local->fctx->xl_array = GF_CALLOC (local->fctx->stripe_count, +                                                   sizeof (xlator_t *), +                                                   gf_stripe_mt_xlator_t); + +                if (!local->fctx->xl_array) { +                        local->op_errno = ENOMEM; +                        local->op_ret   = -1; +                        goto out; +                } +        } +        if (local->fctx->stripe_count != data_to_int32 (data)) { +                gf_log (this->name, GF_LOG_ERROR, +                        "error with stripe-count xattr (%d != %d)", +                        local->fctx->stripe_count, data_to_int32 (data)); +                local->op_ret   = -1; +                local->op_errno = EIO; +                goto out; +        } + +        /* index */ +        sprintf (key, "trusted.%s.stripe-index", this->name); +        data = dict_get (dict, key); +        if (!data) { +                local->xattr_self_heal_needed = 1; +                gf_log (this->name, GF_LOG_ERROR, +                        "Failed to get stripe-index"); +                goto out; +        } +        index = data_to_int32 (data); +        if (index > priv->child_count) { +                gf_log (this->name, GF_LOG_ERROR, +                        "error with stripe-index xattr (%d)", index); +                local->op_ret   = -1; +                local->op_errno = EIO; +                goto out; +        } +        if (local->fctx->xl_array) { +                if (!local->fctx->xl_array[index]) +                        local->fctx->xl_array[index] = prev->this; +        } +        ret = 0; +out: +        return ret; +} + +int32_t +stripe_xattr_request_build (xlator_t *this, dict_t *dict, uint64_t stripe_size, +                            uint32_t stripe_count, uint32_t stripe_index) +{ +        char            key[256]       = {0,}; +        int32_t         ret             = -1; + +        sprintf (key, "trusted.%s.stripe-size", this->name); +        ret = dict_set_int64 (dict, key, stripe_size); +        if (ret) { +                gf_log (this->name, GF_LOG_WARNING, +                        "failed to set %s in xattr_req dict", key); +                goto out; +        } + +        sprintf (key, "trusted.%s.stripe-count", this->name); +        ret = dict_set_int32 (dict, key, stripe_count); +        if (ret) { +                gf_log (this->name, GF_LOG_WARNING, +                        "failed to set %s in xattr_req dict", key); +                goto out; +        } + +        sprintf (key, "trusted.%s.stripe-index", this->name); +        ret = dict_set_int32 (dict, key, stripe_index); +        if (ret) { +                gf_log (this->name, GF_LOG_WARNING, +                        "failed to set %s in xattr_req dict", key); +                goto out; +        } +out: +        return ret; +} + + +static int +set_default_block_size (stripe_private_t *priv, char *num) +{ + +        int             ret = -1; +        GF_VALIDATE_OR_GOTO ("stripe", THIS, out); +        GF_VALIDATE_OR_GOTO (THIS->name, priv, out); +        GF_VALIDATE_OR_GOTO (THIS->name, num, out); + + +        if (gf_string2bytesize (num, &priv->block_size) != 0) { +                gf_log (THIS->name, GF_LOG_ERROR, +                        "invalid number format \"%s\"", num); +                goto out; +        } + +        ret = 0; + + out: +        return ret; + +} + + +int +set_stripe_block_size (xlator_t *this, stripe_private_t *priv, char *data) +{ +        int                    ret = -1; +        char                  *tmp_str = NULL; +        char                  *tmp_str1 = NULL; +        char                  *dup_str = NULL; +        char                  *stripe_str = NULL; +        char                  *pattern = NULL; +        char                  *num = NULL; +        struct stripe_options *temp_stripeopt = NULL; +        struct stripe_options *stripe_opt = NULL; + +        if (!this || !priv || !data) +                goto out; + +        /* Get the pattern for striping. +           "option block-size *avi:10MB" etc */ +        stripe_str = strtok_r (data, ",", &tmp_str); +        while (stripe_str) { +                dup_str = gf_strdup (stripe_str); +                stripe_opt = GF_CALLOC (1, sizeof (struct stripe_options), +                                        gf_stripe_mt_stripe_options); +                if (!stripe_opt) { +                        GF_FREE (dup_str); +                        goto out; +                } + +                pattern = strtok_r (dup_str, ":", &tmp_str1); +                num = strtok_r (NULL, ":", &tmp_str1); +                if (!num) { +                        num = pattern; +                        pattern = "*"; +                        ret = set_default_block_size (priv, num); +                        if (ret) +                                goto out; +                } +                if (gf_string2bytesize (num, &stripe_opt->block_size) != 0) { +                        gf_log (this->name, GF_LOG_ERROR, +                                "invalid number format \"%s\"", num); +                        goto out; +                } + +                if (stripe_opt->block_size < STRIPE_MIN_BLOCK_SIZE) { +                        gf_log (this->name, GF_LOG_ERROR, "Invalid Block-size: " +                                "%s. Should be atleast 512 bytes", num); +                        goto out; +                } +                if (stripe_opt->block_size % 512) { +                        gf_log (this->name, GF_LOG_ERROR, "Block-size: %s should" +                                " be a multiple of 512 bytes", num); +                        goto out; +                } + +                memcpy (stripe_opt->path_pattern, pattern, strlen (pattern)); + +                gf_log (this->name, GF_LOG_DEBUG, +                        "block-size : pattern %s : size %"PRId64, +                        stripe_opt->path_pattern, stripe_opt->block_size); + +                if (priv->pattern) +                        temp_stripeopt = NULL; +                else +                        temp_stripeopt = priv->pattern; +                priv->pattern = stripe_opt; +                stripe_opt->next = temp_stripeopt; + +                stripe_str = strtok_r (NULL, ",", &tmp_str); +                GF_FREE (dup_str); +        } + +        ret = 0; +out: +        return ret; +} + +int32_t +stripe_iatt_merge (struct iatt *from, struct iatt *to) +{ +        if (to->ia_size < from->ia_size) +                to->ia_size = from->ia_size; +        if (to->ia_mtime < from->ia_mtime) +                to->ia_mtime = from->ia_mtime; +        if (to->ia_ctime < from->ia_ctime) +                to->ia_ctime = from->ia_ctime; +        if (to->ia_atime < from->ia_atime) +                to->ia_atime = from->ia_atime; +        return 0; +} diff --git a/xlators/cluster/stripe/src/stripe.c b/xlators/cluster/stripe/src/stripe.c index c3f1b483f..aa65eb4fb 100644 --- a/xlators/cluster/stripe/src/stripe.c +++ b/xlators/cluster/stripe/src/stripe.c @@ -39,215 +39,13 @@  #include "byte-order.h"  #include "statedump.h" -#define STRIPE_MIN_BLOCK_SIZE 16*GF_UNIT_KB -  struct volume_options options[]; -void -stripe_local_wipe (stripe_local_t *local) -{ -        if (!local) -                goto out; - -        loc_wipe (&local->loc); -        loc_wipe (&local->loc2); - -        if (local->fd) -                fd_unref (local->fd); - -        if (local->inode) -                inode_unref (local->inode); - -        if (local->xattr) -                dict_unref (local->xattr); - -        if (local->dict) -                dict_unref (local->dict); - -out: -        return; -} - -/** - * stripe_get_matching_bs - Get the matching block size for the given path. - */ -int32_t -stripe_get_matching_bs (const char *path, stripe_private_t *priv) -{ -        struct stripe_options *trav       = NULL; -        uint64_t               block_size = 0; - -        GF_VALIDATE_OR_GOTO ("stripe", priv, out); -        GF_VALIDATE_OR_GOTO ("stripe", path, out); - -        LOCK (&priv->lock); -        { -                block_size = priv->block_size; -                trav = priv->pattern; -                while (trav) { -                        if (!fnmatch (trav->path_pattern, path, FNM_NOESCAPE)) { -                                block_size = trav->block_size; -                                break; -                        } -                        trav = trav->next; -                } -        } -        UNLOCK (&priv->lock); - -out: -        return block_size; -} - - - -int32_t -stripe_ctx_handle (xlator_t *this, call_frame_t *prev, stripe_local_t *local, -                   dict_t *dict) -{ -        char            key[256]       = {0,}; -        data_t         *data            = NULL; -        int32_t         index           = 0; -        stripe_private_t *priv          = NULL; -        int32_t         ret             = -1; - -        priv = this->private; - - -        if (!local->fctx) { -                local->fctx =  GF_CALLOC (1, sizeof (stripe_fd_ctx_t), -                                         gf_stripe_mt_stripe_fd_ctx_t); -                if (!local->fctx) { -                        local->op_errno = ENOMEM; -                        local->op_ret = -1; -                        goto out; -                } - -                local->fctx->static_array = 0; -        } -        /* Stripe block size */ -        sprintf (key, "trusted.%s.stripe-size", this->name); -        data = dict_get (dict, key); -        if (!data) { -                local->xattr_self_heal_needed = 1; -                gf_log (this->name, GF_LOG_ERROR, -                        "Failed to get stripe-size"); -                goto out; -        } else { -                if (!local->fctx->stripe_size) { -                        local->fctx->stripe_size = -                                     data_to_int64 (data); -                } - -                if (local->fctx->stripe_size != data_to_int64 (data)) { -                        gf_log (this->name, GF_LOG_WARNING, -                                "stripe-size mismatch in blocks"); -                        local->xattr_self_heal_needed = 1; -                } -        } - -        /* Stripe count */ -        sprintf (key, "trusted.%s.stripe-count", this->name); -        data = dict_get (dict, key); - -        if (!data) { -                local->xattr_self_heal_needed = 1; -                gf_log (this->name, GF_LOG_ERROR, -                        "Failed to get stripe-count"); -                goto out; -        } -        if (!local->fctx->xl_array) { -                local->fctx->stripe_count = data_to_int32 (data); -                if (!local->fctx->stripe_count) { -                        gf_log (this->name, GF_LOG_ERROR, -                                "error with stripe-count xattr"); -                        local->op_ret   = -1; -                        local->op_errno = EIO; -                        goto out; -                } - -                local->fctx->xl_array = GF_CALLOC (local->fctx->stripe_count, -                                                   sizeof (xlator_t *), -                                                   gf_stripe_mt_xlator_t); - -                if (!local->fctx->xl_array) { -                        local->op_errno = ENOMEM; -                        local->op_ret   = -1; -                        goto out; -                } -        } -        if (local->fctx->stripe_count != data_to_int32 (data)) { -                gf_log (this->name, GF_LOG_ERROR, -                        "error with stripe-count xattr (%d != %d)", -                        local->fctx->stripe_count, data_to_int32 (data)); -                local->op_ret   = -1; -                local->op_errno = EIO; -                goto out; -        } - -        /* index */ -        sprintf (key, "trusted.%s.stripe-index", this->name); -        data = dict_get (dict, key); -        if (!data) { -                local->xattr_self_heal_needed = 1; -                gf_log (this->name, GF_LOG_ERROR, -                        "Failed to get stripe-index"); -                goto out; -        } -        index = data_to_int32 (data); -        if (index > priv->child_count) { -                gf_log (this->name, GF_LOG_ERROR, -                        "error with stripe-index xattr (%d)", index); -                local->op_ret   = -1; -                local->op_errno = EIO; -                goto out; -        } -        if (local->fctx->xl_array) { -                if (!local->fctx->xl_array[index]) -                        local->fctx->xl_array[index] = prev->this; -        } -        ret = 0; -out: -        return ret; -} - -int32_t -stripe_xattr_request_build (xlator_t *this, dict_t *dict, uint64_t stripe_size, -                            uint32_t stripe_count, uint32_t stripe_index) -{ -        char            key[256]       = {0,}; -        int32_t         ret             = -1; - -        sprintf (key, "trusted.%s.stripe-size", this->name); -        ret = dict_set_int64 (dict, key, stripe_size); -        if (ret) { -                gf_log (this->name, GF_LOG_WARNING, -                        "failed to set %s in xattr_req dict", key); -                goto out; -        } - -        sprintf (key, "trusted.%s.stripe-count", this->name); -        ret = dict_set_int32 (dict, key, stripe_count); -        if (ret) { -                gf_log (this->name, GF_LOG_WARNING, -                        "failed to set %s in xattr_req dict", key); -                goto out; -        } - -        sprintf (key, "trusted.%s.stripe-index", this->name); -        ret = dict_set_int32 (dict, key, stripe_index); -        if (ret) { -                gf_log (this->name, GF_LOG_WARNING, -                        "failed to set %s in xattr_req dict", key); -                goto out; -        } -out: -        return ret; -}  int32_t  stripe_sh_chown_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)  {          int             callcnt = -1;          stripe_local_t *local   = NULL; @@ -276,7 +74,7 @@ int32_t  stripe_sh_make_entry_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)  {          stripe_local_t *local = NULL;          call_frame_t    *prev = NULL; @@ -291,7 +89,7 @@ stripe_sh_make_entry_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          STACK_WIND (frame, stripe_sh_chown_cbk, prev->this,                      prev->this->fops->setattr, &local->loc, -                    &local->stbuf, (GF_SET_ATTR_UID | GF_SET_ATTR_GID)); +                    &local->stbuf, (GF_SET_ATTR_UID | GF_SET_ATTR_GID), NULL);  out:          return 0; @@ -305,7 +103,7 @@ stripe_entry_self_heal (call_frame_t *frame, xlator_t *this,          call_frame_t     *rframe = NULL;          stripe_local_t   *rlocal = NULL;          stripe_private_t *priv   = NULL; -        dict_t           *dict   = NULL; +        dict_t           *xdata  = NULL;          int               ret    = 0;          if (!local || !this || !frame) { @@ -332,11 +130,11 @@ stripe_entry_self_heal (call_frame_t *frame, xlator_t *this,          loc_copy (&rlocal->loc, &local->loc);          memcpy (&rlocal->stbuf, &local->stbuf, sizeof (struct iatt)); -        dict = dict_new (); -        if (!dict) +        xdata = dict_new (); +        if (!xdata)                  goto out; -        ret = dict_set_static_bin (dict, "gfid-req", local->stbuf.ia_gfid, 16); +        ret = dict_set_static_bin (xdata, "gfid-req", local->stbuf.ia_gfid, 16);          if (ret)                  gf_log (this->name, GF_LOG_WARNING,                          "%s: failed to set gfid-req", local->loc.path); @@ -347,97 +145,38 @@ stripe_entry_self_heal (call_frame_t *frame, xlator_t *this,                                      trav->xlator, trav->xlator->fops->mknod,                                      &local->loc,                                      st_mode_from_ia (local->stbuf.ia_prot, -                                                     local->stbuf.ia_type), 0, -                                    dict); +                                                     local->stbuf.ia_type), +                                    0, 0, xdata);                  }                  if (IA_ISDIR (local->stbuf.ia_type)) {                          STACK_WIND (rframe, stripe_sh_make_entry_cbk,                                      trav->xlator, trav->xlator->fops->mkdir, -                                    &local->loc, st_mode_from_ia (local->stbuf.ia_prot, -                                                                  local->stbuf.ia_type), -                                    dict); +                                    &local->loc, +                                    st_mode_from_ia (local->stbuf.ia_prot, +                                                     local->stbuf.ia_type), +                                    0, xdata);                  }                  trav = trav->next;          } -        if (dict) -                dict_unref (dict); +        if (xdata) +                dict_unref (xdata);          return 0;  out:          if (rframe)                  STRIPE_STACK_DESTROY (rframe); -        if (dict) -                dict_unref (dict); +        if (xdata) +                dict_unref (xdata);          return 0;  } -void -stripe_aggregate (dict_t *this, char *key, data_t *value, void *data) -{ -        dict_t  *dst  = NULL; -        int64_t *ptr  = 0, *size = NULL; -        int32_t  ret  = -1; - -        dst = data; - -        if (strcmp (key, GF_XATTR_QUOTA_SIZE_KEY) == 0) { -                ret = dict_get_bin (dst, key, (void **)&size); -                if (ret < 0) { -                        size = GF_CALLOC (1, sizeof (int64_t), -                                          gf_common_mt_char); -                        if (size == NULL) { -                                gf_log ("stripe", GF_LOG_WARNING, -                                        "memory allocation failed"); -                                goto out; -                        } -                        ret = dict_set_bin (dst, key, size, sizeof (int64_t)); -                        if (ret < 0) { -                                gf_log ("stripe", GF_LOG_WARNING, -                                        "stripe aggregate dict set failed"); -                                GF_FREE (size); -                                goto out; -                        } -                } - -                ptr = data_to_bin (value); -                if (ptr == NULL) { -                        gf_log ("stripe", GF_LOG_WARNING, "data to bin failed"); -                        goto out; -                } - -                *size = hton64 (ntoh64 (*size) + ntoh64 (*ptr)); -        } else if (strcmp (key, GF_CONTENT_KEY)) { -                /* No need to aggregate 'CONTENT' data */ -                ret = dict_set (dst, key, value); -                if (ret) -                        gf_log ("stripe", GF_LOG_WARNING, "xattr dict set failed"); -        } - -out: -        return; -} - - -void -stripe_aggregate_xattr (dict_t *dst, dict_t *src) -{ -        if ((dst == NULL) || (src == NULL)) { -                goto out; -        } - -        dict_foreach (src, stripe_aggregate, dst); -out: -        return; -} - -  int32_t  stripe_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)  {          int32_t         callcnt     = 0;          stripe_local_t *local       = NULL; @@ -475,7 +214,7 @@ stripe_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          local->op_ret = 0;                          if (IA_ISREG (buf->ia_type)) {                                  ret = stripe_ctx_handle (this, prev, local, -                                                         dict); +                                                         xdata);                                  if (ret)                                          gf_log (this->name, GF_LOG_ERROR,                                                   "Error getting fctx info from" @@ -486,21 +225,21 @@ stripe_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                                  local->stbuf      = *buf;                                  local->postparent = *postparent;                                  local->inode = inode_ref (inode); -                                local->dict = dict_ref (dict); +                                local->xdata = dict_ref (xdata);                                  if (local->xattr) { -                                        stripe_aggregate_xattr (local->dict, +                                        stripe_aggregate_xattr (local->xdata,                                                                  local->xattr);                                          dict_unref (local->xattr);                                          local->xattr = NULL;                                  }                          } -                        if (!local->dict && !local->xattr) { -                                local->xattr = dict_ref (dict); -                        } else if (local->dict) { -                                stripe_aggregate_xattr (local->dict, dict); +                        if (!local->xdata && !local->xattr) { +                                local->xattr = dict_ref (xdata); +                        } else if (local->xdata) { +                                stripe_aggregate_xattr (local->xdata, xdata);                          } else if (local->xattr) { -                                stripe_aggregate_xattr (local->xattr, dict); +                                stripe_aggregate_xattr (local->xattr, xdata);                          }                          local->stbuf_blocks      += buf->ia_blocks; @@ -543,7 +282,7 @@ stripe_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  STRIPE_STACK_UNWIND (lookup, frame, local->op_ret,                                       local->op_errno, local->inode, -                                     &local->stbuf, local->dict, +                                     &local->stbuf, local->xdata,                                       &local->postparent);          }  out: @@ -552,7 +291,7 @@ out:  int32_t  stripe_lookup (call_frame_t *frame, xlator_t *this, loc_t *loc, -               dict_t *xattr_req) +               dict_t *xdata)  {          stripe_local_t   *local    = NULL;          xlator_list_t    *trav     = NULL; @@ -585,18 +324,19 @@ stripe_lookup (call_frame_t *frame, xlator_t *this, loc_t *loc,          if (tmpctx)                  local->fctx = (stripe_fd_ctx_t*) (long)tmpctx; -        if (xattr_req && dict_get (xattr_req, GF_CONTENT_KEY)) { -                ret = dict_get_int64 (xattr_req, GF_CONTENT_KEY, &filesize); +        /* quick-read friendly changes */ +        if (xdata && dict_get (xdata, GF_CONTENT_KEY)) { +                ret = dict_get_int64 (xdata, GF_CONTENT_KEY, &filesize);                  if (!ret && (filesize > priv->block_size)) -                        dict_del (xattr_req, GF_CONTENT_KEY); +                        dict_del (xdata, GF_CONTENT_KEY);          }          /* get stripe-size xattr on lookup. This would be required for           * open/read/write/pathinfo calls. Hence we send down the request           * even when type == IA_INVAL */ -        if (xattr_req && (IA_ISREG (loc->inode->ia_type) || +        if (xdata && (IA_ISREG (loc->inode->ia_type) ||              (loc->inode->ia_type == IA_INVAL))) { -                ret = stripe_xattr_request_build (this, xattr_req, 8, 4, 4); +                ret = stripe_xattr_request_build (this, xdata, 8, 4, 4);                  if (ret)                          gf_log (this->name , GF_LOG_ERROR, "Failed to build"                                  " xattr request for %s", loc->path); @@ -608,8 +348,7 @@ stripe_lookup (call_frame_t *frame, xlator_t *this, loc_t *loc,          local->call_count = priv->child_count;          while (trav) {                  STACK_WIND (frame, stripe_lookup_cbk, trav->xlator, -                            trav->xlator->fops->lookup, -                            loc, xattr_req); +                            trav->xlator->fops->lookup, loc, xdata);                  trav = trav->next;          } @@ -622,7 +361,7 @@ err:  int32_t  stripe_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)  {          int32_t         callcnt = 0;          stripe_local_t *local = NULL; @@ -673,14 +412,14 @@ stripe_stat_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  }                  STRIPE_STACK_UNWIND (stat, frame, local->op_ret, -                                     local->op_errno, &local->stbuf); +                                     local->op_errno, &local->stbuf, NULL);          }  out:          return 0;  }  int32_t -stripe_stat (call_frame_t *frame, xlator_t *this, loc_t *loc) +stripe_stat (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *xdata)  {          xlator_list_t    *trav = NULL;          stripe_local_t   *local = NULL; @@ -713,21 +452,21 @@ stripe_stat (call_frame_t *frame, xlator_t *this, loc_t *loc)          while (trav) {                  STACK_WIND (frame, stripe_stat_cbk, trav->xlator, -                            trav->xlator->fops->stat, loc); +                            trav->xlator->fops->stat, loc, NULL);                  trav = trav->next;          }          return 0;  err: -        STRIPE_STACK_UNWIND (stat, frame, -1, op_errno, NULL); +        STRIPE_STACK_UNWIND (stat, frame, -1, op_errno, NULL, NULL);          return 0;  }  int32_t  stripe_statfs_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                   int32_t op_ret, int32_t op_errno, struct statvfs *stbuf) +                   int32_t op_ret, int32_t op_errno, struct statvfs *stbuf, dict_t *xdata)  {          stripe_local_t *local = NULL;          int32_t         callcnt = 0; @@ -765,14 +504,14 @@ stripe_statfs_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          if (!callcnt) {                  STRIPE_STACK_UNWIND (statfs, frame, local->op_ret, -                                     local->op_errno, &local->statvfs_buf); +                                     local->op_errno, &local->statvfs_buf, NULL);          }  out:          return 0;  }  int32_t -stripe_statfs (call_frame_t *frame, xlator_t *this, loc_t *loc) +stripe_statfs (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *xdata)  {          stripe_local_t   *local = NULL;          xlator_list_t    *trav = NULL; @@ -799,13 +538,13 @@ stripe_statfs (call_frame_t *frame, xlator_t *this, loc_t *loc)          local->call_count = priv->child_count;          while (trav) {                  STACK_WIND (frame, stripe_statfs_cbk, trav->xlator, -                            trav->xlator->fops->statfs, loc); +                            trav->xlator->fops->statfs, loc, NULL);                  trav = trav->next;          }          return 0;  err: -        STRIPE_STACK_UNWIND (statfs, frame, -1, op_errno, NULL); +        STRIPE_STACK_UNWIND (statfs, frame, -1, op_errno, NULL, NULL);          return 0;  } @@ -814,7 +553,7 @@ err:  int32_t  stripe_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)  {          int32_t         callcnt = 0;          stripe_local_t *local = NULL; @@ -874,14 +613,14 @@ stripe_truncate_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  STRIPE_STACK_UNWIND (truncate, frame, local->op_ret,                                       local->op_errno, &local->pre_buf, -                                     &local->post_buf); +                                     &local->post_buf, NULL);          }  out:          return 0;  }  int32_t -stripe_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, off_t offset) +stripe_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, off_t offset, dict_t *xdata)  {          xlator_list_t    *trav = NULL;          stripe_local_t   *local = NULL; @@ -914,13 +653,13 @@ stripe_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, off_t offset)          while (trav) {                  STACK_WIND (frame, stripe_truncate_cbk, trav->xlator, -                            trav->xlator->fops->truncate, loc, offset); +                            trav->xlator->fops->truncate, loc, offset, NULL);                  trav = trav->next;          }          return 0;  err: -        STRIPE_STACK_UNWIND (truncate, frame, -1, op_errno, NULL, NULL); +        STRIPE_STACK_UNWIND (truncate, frame, -1, op_errno, NULL, NULL, NULL);          return 0;  } @@ -928,7 +667,7 @@ err:  int32_t  stripe_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)  {          int32_t         callcnt = 0;          stripe_local_t *local = NULL; @@ -988,7 +727,7 @@ stripe_setattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  STRIPE_STACK_UNWIND (setattr, frame, local->op_ret,                                       local->op_errno, &local->pre_buf, -                                     &local->post_buf); +                                     &local->post_buf, NULL);          }  out:          return 0; @@ -997,7 +736,7 @@ out:  int32_t  stripe_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)  {          xlator_list_t    *trav = NULL;          stripe_local_t   *local = NULL; @@ -1031,7 +770,7 @@ stripe_setattr (call_frame_t *frame, xlator_t *this, loc_t *loc,                  local->call_count = 1;                  STACK_WIND (frame, stripe_setattr_cbk, FIRST_CHILD (this),                              FIRST_CHILD (this)->fops->setattr, -                            loc, stbuf, valid); +                            loc, stbuf, valid, NULL);                  return 0;          } @@ -1039,20 +778,20 @@ stripe_setattr (call_frame_t *frame, xlator_t *this, loc_t *loc,          while (trav) {                  STACK_WIND (frame, stripe_setattr_cbk,                              trav->xlator, trav->xlator->fops->setattr, -                            loc, stbuf, valid); +                            loc, stbuf, valid, NULL);                  trav = trav->next;          }          return 0;  err: -        STRIPE_STACK_UNWIND (setattr, frame, -1, op_errno, NULL, NULL); +        STRIPE_STACK_UNWIND (setattr, frame, -1, op_errno, NULL, NULL, NULL);          return 0;  }  int32_t  stripe_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)  {          stripe_local_t   *local = NULL;          stripe_private_t *priv = NULL; @@ -1079,13 +818,13 @@ stripe_fsetattr (call_frame_t *frame, xlator_t *this, fd_t *fd,          while (trav) {                  STACK_WIND (frame, stripe_setattr_cbk, trav->xlator, -                            trav->xlator->fops->fsetattr, fd, stbuf, valid); +                            trav->xlator->fops->fsetattr, fd, stbuf, valid, NULL);                  trav = trav->next;          }          return 0;  err: -        STRIPE_STACK_UNWIND (fsetattr, frame, -1, op_errno, NULL, NULL); +        STRIPE_STACK_UNWIND (fsetattr, frame, -1, op_errno, NULL, NULL, NULL);          return 0;  } @@ -1093,7 +832,8 @@ int32_t  stripe_stack_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)  {          int32_t         callcnt = 0;          stripe_local_t *local = NULL; @@ -1155,7 +895,7 @@ stripe_stack_rename_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  STRIPE_STACK_UNWIND (rename, frame, local->op_ret, local->op_errno,                                       &local->stbuf, &local->preparent,                                       &local->postparent,  &local->pre_buf, -                                     &local->post_buf); +                                     &local->post_buf, NULL);          }  out:          return 0; @@ -1165,7 +905,8 @@ int32_t  stripe_first_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)  {          stripe_local_t *local = NULL;          xlator_list_t  *trav = NULL; @@ -1196,20 +937,20 @@ stripe_first_rename_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          while (trav) {                  STACK_WIND (frame, stripe_stack_rename_cbk,                              trav->xlator, trav->xlator->fops->rename, -                            &local->loc, &local->loc2); +                            &local->loc, &local->loc2, NULL);                  trav = trav->next;          }          return 0;  unwind:          STRIPE_STACK_UNWIND (rename, frame, -1, op_errno, buf, preoldparent, -                             postoldparent, prenewparent, postnewparent); +                             postoldparent, prenewparent, postnewparent, NULL);          return 0;  }  int32_t  stripe_rename (call_frame_t *frame, xlator_t *this, loc_t *oldloc, -               loc_t *newloc) +               loc_t *newloc, dict_t *xdata)  {          stripe_private_t *priv = NULL;          stripe_local_t   *local = NULL; @@ -1247,18 +988,18 @@ stripe_rename (call_frame_t *frame, xlator_t *this, loc_t *oldloc,          frame->local = local;          STACK_WIND (frame, stripe_first_rename_cbk, trav->xlator, -                    trav->xlator->fops->rename, oldloc, newloc); +                    trav->xlator->fops->rename, oldloc, newloc, NULL);          return 0;  err:          STRIPE_STACK_UNWIND (rename, frame, -1, op_errno, NULL, NULL, NULL, -                             NULL, NULL); +                             NULL, NULL, NULL);          return 0;  }  int32_t  stripe_first_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) +                         int32_t op_ret, int32_t op_errno, struct iatt *preparent, +                         struct iatt *postparent, dict_t *xdata)  {          stripe_local_t *local   = NULL;          call_frame_t   *prev = NULL; @@ -1283,10 +1024,10 @@ stripe_first_unlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          local->postparent_blocks += postparent->ia_blocks;          STRIPE_STACK_UNWIND(unlink, frame, local->op_ret, local->op_errno, -                            &local->preparent, &local->postparent); +                            &local->preparent, &local->postparent, xdata);          return 0;  out: -        STRIPE_STACK_UNWIND (unlink, frame, -1, op_errno, NULL, NULL); +        STRIPE_STACK_UNWIND (unlink, frame, -1, op_errno, NULL, NULL, NULL);          return 0;  } @@ -1297,7 +1038,7 @@ out:  int32_t  stripe_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)  {          int32_t         callcnt = 0;          stripe_local_t *local   = NULL; @@ -1333,17 +1074,19 @@ stripe_unlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          goto out;                  }                  STACK_WIND(frame, stripe_first_unlink_cbk, FIRST_CHILD (this), -                           FIRST_CHILD (this)->fops->unlink, &local->loc); +                           FIRST_CHILD (this)->fops->unlink, &local->loc, +                           local->xflag, local->xdata);          }          return 0;  out: -        STRIPE_STACK_UNWIND (unlink, frame, -1, op_errno, NULL, NULL); +        STRIPE_STACK_UNWIND (unlink, frame, -1, op_errno, NULL, NULL, NULL);          return 0;  }  int32_t -stripe_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc) +stripe_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc, +               int xflag, dict_t *xdata)  {          xlator_list_t    *trav = NULL;          stripe_local_t   *local = NULL; @@ -1378,6 +1121,9 @@ stripe_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc)          }          local->op_ret = -1;          loc_copy (&local->loc, loc); +        local->xflag = xflag; +        local->xdata = dict_ref (xdata); +          frame->local = local;          local->call_count = priv->child_count;          trav = trav->next; /* Skip the first child */ @@ -1385,13 +1131,13 @@ stripe_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc)          while (trav) {                  STACK_WIND (frame, stripe_unlink_cbk,                              trav->xlator, trav->xlator->fops->unlink, -                            loc); +                            loc, xflag, xdata);                  trav = trav->next;          }          return 0;  err: -        STRIPE_STACK_UNWIND (unlink, frame, -1, op_errno, NULL, NULL); +        STRIPE_STACK_UNWIND (unlink, frame, -1, op_errno, NULL, NULL, NULL);          return 0;  } @@ -1399,8 +1145,7 @@ err:  int32_t  stripe_first_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)  {          stripe_local_t *local = NULL; @@ -1427,10 +1172,10 @@ stripe_first_rmdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          local->postparent_blocks += postparent->ia_blocks;          STRIPE_STACK_UNWIND (rmdir, frame, local->op_ret, local->op_errno, -                             &local->preparent, &local->postparent); +                             &local->preparent, &local->postparent, xdata);          return 0;  err: -        STRIPE_STACK_UNWIND (rmdir, frame, op_ret, op_errno, NULL, NULL); +        STRIPE_STACK_UNWIND (rmdir, frame, op_ret, op_errno, NULL, NULL, NULL);          return 0;  } @@ -1438,7 +1183,7 @@ err:  int32_t  stripe_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)  {          int32_t         callcnt = 0;          stripe_local_t *local   = NULL; @@ -1470,16 +1215,16 @@ stripe_rmdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          goto out;                  STACK_WIND (frame, stripe_first_rmdir_cbk, FIRST_CHILD (this),                              FIRST_CHILD (this)->fops->rmdir, &local->loc, -                            local->flags); +                            local->flags, NULL);          }          return 0;  out: -        STRIPE_STACK_UNWIND (rmdir, frame, -1, op_errno, NULL, NULL); +        STRIPE_STACK_UNWIND (rmdir, frame, -1, op_errno, NULL, NULL, NULL);          return 0;  }  int32_t -stripe_rmdir (call_frame_t *frame, xlator_t *this, loc_t *loc, int flags) +stripe_rmdir (call_frame_t *frame, xlator_t *this, loc_t *loc, int flags, dict_t *xdata)  {          xlator_list_t    *trav = NULL;          stripe_local_t   *local = NULL; @@ -1516,13 +1261,13 @@ stripe_rmdir (call_frame_t *frame, xlator_t *this, loc_t *loc, int flags)          while (trav) {                  STACK_WIND (frame, stripe_rmdir_cbk,  trav->xlator, -                            trav->xlator->fops->rmdir, loc, flags); +                            trav->xlator->fops->rmdir, loc, flags, NULL);                  trav = trav->next;          }          return 0;  err: -        STRIPE_STACK_UNWIND (rmdir, frame, -1, op_errno, NULL, NULL); +        STRIPE_STACK_UNWIND (rmdir, frame, -1, op_errno, NULL, NULL, NULL);          return 0;  } @@ -1531,7 +1276,7 @@ int32_t  stripe_mknod_ifreg_fail_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)  {          int32_t         callcnt = 0;          stripe_local_t *local = NULL; @@ -1552,7 +1297,7 @@ stripe_mknod_ifreg_fail_unlink_cbk (call_frame_t *frame, void *cookie,          if (!callcnt) {                  STRIPE_STACK_UNWIND (mknod, frame, local->op_ret, local->op_errno,                                       local->inode, &local->stbuf, -                                     &local->preparent, &local->postparent); +                                     &local->preparent, &local->postparent, NULL);          }  out:          return 0; @@ -1564,7 +1309,7 @@ out:  int32_t  stripe_mknod_ifreg_setxattr_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)  {          int32_t           callcnt = 0;          stripe_local_t   *local = NULL; @@ -1603,7 +1348,7 @@ stripe_mknod_ifreg_setxattr_cbk (call_frame_t *frame, void *cookie,                                              stripe_mknod_ifreg_fail_unlink_cbk,                                              trav->xlator,                                              trav->xlator->fops->unlink, -                                            &local->loc); +                                            &local->loc, 0, NULL);                                  trav = trav->next;                          }                          return 0; @@ -1611,7 +1356,7 @@ stripe_mknod_ifreg_setxattr_cbk (call_frame_t *frame, void *cookie,                  STRIPE_STACK_UNWIND (mknod, frame, local->op_ret, local->op_errno,                                       local->inode, &local->stbuf, -                                     &local->preparent, &local->postparent); +                                     &local->preparent, &local->postparent, NULL);          }  out:          return 0; @@ -1621,7 +1366,7 @@ int32_t  stripe_mknod_ifreg_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)  {          int32_t           callcnt = 0;          stripe_local_t   *local = NULL; @@ -1688,7 +1433,7 @@ stripe_mknod_ifreg_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                                              stripe_mknod_ifreg_fail_unlink_cbk,                                              trav->xlator,                                              trav->xlator->fops->unlink, -                                            &local->loc); +                                            &local->loc, 0, NULL);                                  trav = trav->next;                          }                          return 0; @@ -1721,7 +1466,7 @@ stripe_mknod_ifreg_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  unwind:                  STRIPE_STACK_UNWIND (mknod, frame, local->op_ret, local->op_errno,                                       local->inode, &local->stbuf, -                                     &local->preparent, &local->postparent); +                                     &local->preparent, &local->postparent, NULL);          }  out:          return 0; @@ -1732,7 +1477,7 @@ int32_t  stripe_mknod_first_ifreg_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)  {          stripe_local_t   *local = NULL;          stripe_private_t *priv = NULL; @@ -1803,7 +1548,7 @@ stripe_mknod_first_ifreg_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  STACK_WIND (frame, stripe_mknod_ifreg_cbk,                              trav->xlator, trav->xlator->fops->mknod, -                            &local->loc, local->mode, local->rdev, dict); +                            &local->loc, local->mode, local->rdev, 0, dict);                  trav = trav->next;                  i++; @@ -1815,7 +1560,7 @@ stripe_mknod_first_ifreg_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  out: -       STRIPE_STACK_UNWIND (mknod, frame, op_ret, op_errno, NULL, NULL, NULL, NULL); +       STRIPE_STACK_UNWIND (mknod, frame, op_ret, op_errno, NULL, NULL, NULL, NULL, NULL);         return 0;  } @@ -1824,17 +1569,17 @@ int32_t  stripe_single_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)  {          STRIPE_STACK_UNWIND (mknod, frame, op_ret, op_errno, inode, buf, -                             preparent, postparent); +                             preparent, postparent, xdata);          return 0;  }  int  stripe_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)  {          stripe_private_t *priv           = NULL;          stripe_local_t   *local          = NULL; @@ -1883,8 +1628,9 @@ stripe_mknod (call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode,                  frame->local = local;                  local->inode = inode_ref (loc->inode);                  loc_copy (&local->loc, loc); -                local->xattr = dict_copy_with_ref (params, NULL); +                local->xattr = dict_copy_with_ref (xdata, NULL);                  local->mode = mode; +                local->umask = umask;                  local->rdev = rdev;                  /* Everytime in stripe lookup, all child nodes should @@ -1908,7 +1654,7 @@ stripe_mknod (call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode,                          }                          need_unref = 1; -                        dict_copy (params, dict); +                        dict_copy (xdata, dict);                          ret = stripe_xattr_request_build (this, dict,                                                            local->stripe_size, @@ -1918,12 +1664,12 @@ stripe_mknod (call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode,                                  gf_log (this->name, GF_LOG_ERROR,                                          "failed to build xattr request");                  } else { -                        dict = params; +                        dict = xdata;                  }                  STACK_WIND (frame, stripe_mknod_first_ifreg_cbk,                              FIRST_CHILD (this), FIRST_CHILD (this)->fops->mknod, -                            loc, mode, rdev, dict); +                            loc, mode, rdev, umask, dict);                          if (dict && need_unref)                                  dict_unref (dict); @@ -1932,11 +1678,11 @@ stripe_mknod (call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode,          STACK_WIND (frame, stripe_single_mknod_cbk,                      FIRST_CHILD(this), FIRST_CHILD(this)->fops->mknod, -                    loc, mode, rdev, params); +                    loc, mode, rdev, umask, xdata);          return 0;  err: -        STRIPE_STACK_UNWIND (mknod, frame, -1, op_errno, NULL, NULL, NULL, NULL); +        STRIPE_STACK_UNWIND (mknod, frame, -1, op_errno, NULL, NULL, NULL, NULL, NULL);          return 0;  } @@ -1945,7 +1691,7 @@ int32_t  stripe_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)  {          int32_t         callcnt = 0;          stripe_local_t  *local   = NULL; @@ -2002,7 +1748,7 @@ stripe_mkdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  STRIPE_STACK_UNWIND (mkdir, frame, local->op_ret,                                       local->op_errno, local->inode,                                       &local->stbuf, &local->preparent, -                                     &local->postparent); +                                     &local->postparent, NULL);          }  out:          return 0; @@ -2011,9 +1757,9 @@ out:  int32_t  stripe_first_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) +                        int32_t op_ret, int32_t op_errno, inode_t *inode, +                        struct iatt *buf, struct iatt *preparent, +                        struct iatt *postparent, dict_t *xdata)  {          stripe_local_t  *local   = NULL;          call_frame_t    *prev = NULL; @@ -2044,7 +1790,7 @@ stripe_first_mkdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          local->stbuf      = *buf;          local->postparent = *postparent;          local->preparent  = *preparent; -          +          local->stbuf_blocks      += buf->ia_blocks;          local->preparent_blocks  += preparent->ia_blocks;          local->postparent_blocks += postparent->ia_blocks; @@ -2056,13 +1802,13 @@ stripe_first_mkdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          while (trav) {                  STACK_WIND (frame, stripe_mkdir_cbk, trav->xlator,                              trav->xlator->fops->mkdir, &local->loc, local->mode, -                            local->dict); +                            local->umask, local->xdata);                  trav = trav->next;          }          return 0;  out:          STRIPE_STACK_UNWIND (mkdir, frame, -1, op_errno, NULL, NULL, NULL, -                      NULL); +                             NULL, NULL);          return 0; @@ -2071,7 +1817,7 @@ out:  int  stripe_mkdir (call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode, -              dict_t *params) +              mode_t umask, dict_t *xdata)  {          stripe_private_t *priv = NULL;          stripe_local_t   *local = NULL; @@ -2100,18 +1846,19 @@ stripe_mkdir (call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode,          }          local->op_ret = -1;          local->call_count = priv->child_count; -        local->dict = dict_ref (params); -        local->mode = mode; +        local->xdata = dict_ref (xdata); +        local->mode  = mode; +        local->umask = umask;          loc_copy (&local->loc, loc);          frame->local = local;          /* Everytime in stripe lookup, all child nodes should be looked up */          STACK_WIND (frame, stripe_first_mkdir_cbk, trav->xlator, -                    trav->xlator->fops->mkdir, loc, mode, params); +                    trav->xlator->fops->mkdir, loc, mode, umask, xdata);          return 0;  err: -        STRIPE_STACK_UNWIND (mkdir, frame, -1, op_errno, NULL, NULL, NULL, NULL); +        STRIPE_STACK_UNWIND (mkdir, frame, -1, op_errno, NULL, NULL, NULL, NULL, NULL);          return 0;  } @@ -2120,7 +1867,7 @@ int32_t  stripe_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 *postparent, dict_t *xdata)  {          int32_t         callcnt = 0;          stripe_local_t  *local   = NULL; @@ -2186,14 +1933,14 @@ stripe_link_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  STRIPE_STACK_UNWIND (link, frame, local->op_ret,                                       local->op_errno, local->inode,                                       &local->stbuf, &local->preparent, -                                     &local->postparent); +                                     &local->postparent, NULL);          }  out:          return 0;  }  int32_t -stripe_link (call_frame_t *frame, xlator_t *this, loc_t *oldloc, loc_t *newloc) +stripe_link (call_frame_t *frame, xlator_t *this, loc_t *oldloc, loc_t *newloc, dict_t *xdata)  {          xlator_list_t    *trav = NULL;          stripe_local_t   *local = NULL; @@ -2230,13 +1977,13 @@ stripe_link (call_frame_t *frame, xlator_t *this, loc_t *oldloc, loc_t *newloc)          while (trav) {                  STACK_WIND (frame, stripe_link_cbk,                              trav->xlator, trav->xlator->fops->link, -                            oldloc, newloc); +                            oldloc, newloc, NULL);                  trav = trav->next;          }          return 0;  err: -        STRIPE_STACK_UNWIND (link, frame, -1, op_errno, NULL, NULL, NULL, NULL); +        STRIPE_STACK_UNWIND (link, frame, -1, op_errno, NULL, NULL, NULL, NULL, NULL);          return 0;  } @@ -2244,7 +1991,7 @@ int32_t  stripe_create_fail_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)  {          int32_t         callcnt = 0;          stripe_local_t *local = NULL; @@ -2265,7 +2012,7 @@ stripe_create_fail_unlink_cbk (call_frame_t *frame, void *cookie,          if (!callcnt) {                  STRIPE_STACK_UNWIND (create, frame, local->op_ret, local->op_errno,                                       local->fd, local->inode, &local->stbuf, -                                     &local->preparent, &local->postparent); +                                     &local->preparent, &local->postparent, NULL);          }  out:          return 0; @@ -2276,7 +2023,7 @@ int32_t  stripe_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)  {          int32_t           callcnt = 0;          stripe_local_t   *local = NULL; @@ -2335,7 +2082,7 @@ stripe_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                                              stripe_create_fail_unlink_cbk,                                              trav->xlator,                                              trav->xlator->fops->unlink, -                                            &local->loc); +                                            &local->loc, 0, NULL);                                  trav = trav->next;                          } @@ -2372,7 +2119,7 @@ stripe_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  STRIPE_STACK_UNWIND (create, frame, local->op_ret,                                       local->op_errno, local->fd,                                       local->inode, &local->stbuf, -                                     &local->preparent, &local->postparent); +                                     &local->preparent, &local->postparent, NULL);          }  out: @@ -2385,7 +2132,7 @@ int32_t  stripe_first_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)  {          stripe_local_t   *local = NULL;          stripe_private_t *priv = NULL; @@ -2442,7 +2189,7 @@ stripe_first_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  local->call_count = 1;                  STACK_WIND (frame, stripe_create_fail_unlink_cbk,                              FIRST_CHILD (this), FIRST_CHILD (this)->fops->unlink, -                            &local->loc); +                            &local->loc, 0, NULL);                  return 0;          } @@ -2482,7 +2229,7 @@ stripe_first_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  STACK_WIND (frame, stripe_create_cbk, trav->xlator,                              trav->xlator->fops->create, &local->loc, -                            local->flags, local->mode, local->fd, +                            local->flags, local->mode, local->umask, local->fd,                              dict);                  trav = trav->next;                  if (need_unref && dict) @@ -2504,7 +2251,7 @@ out:   */  int32_t  stripe_create (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)  {          stripe_private_t *priv = NULL;          stripe_local_t   *local = NULL; @@ -2547,7 +2294,8 @@ stripe_create (call_frame_t *frame, xlator_t *this, loc_t *loc,          local->fd = fd_ref (fd);          local->flags = flags;          local->mode = mode; -        local->xattr = dict_copy_with_ref (params, NULL); +        local->umask = umask; +        local->xattr = dict_ref (xdata);          local->call_count = priv->child_count;          /* Send a setxattr request to nodes where the @@ -2561,7 +2309,7 @@ stripe_create (call_frame_t *frame, xlator_t *this, loc_t *loc,                  }                  need_unref = 1; -                dict_copy (params, dict); +                dict_copy (xdata, dict);                  ret = stripe_xattr_request_build (this, dict,                                                    local->stripe_size, @@ -2571,13 +2319,13 @@ stripe_create (call_frame_t *frame, xlator_t *this, loc_t *loc,                          gf_log (this->name, GF_LOG_ERROR,                                  "failed to build xattr request");          } else { -                        dict = params; +                        dict = xdata;          }          STACK_WIND (frame, stripe_first_create_cbk, FIRST_CHILD (this),                      FIRST_CHILD (this)->fops->create, loc, flags, mode, -                    fd, dict); +                    umask, fd, dict);          if (need_unref && dict)                  dict_unref (dict); @@ -2586,13 +2334,13 @@ stripe_create (call_frame_t *frame, xlator_t *this, loc_t *loc,          return 0;  err:          STRIPE_STACK_UNWIND (create, frame, -1, op_errno, NULL, NULL, NULL, -                             NULL, NULL); +                             NULL, NULL, xdata);          return 0;  }  int32_t  stripe_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)  {          int32_t         callcnt = 0;          stripe_local_t *local = NULL; @@ -2631,7 +2379,7 @@ stripe_open_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          local->op_ret = -1;                  STRIPE_STACK_UNWIND (open, frame, local->op_ret, -                                     local->op_errno, local->fd); +                                     local->op_errno, local->fd, xdata);          }  out:          return 0; @@ -2643,7 +2391,7 @@ out:   */  int32_t  stripe_open (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)  {          stripe_local_t   *local = NULL;          stripe_private_t *priv = NULL; @@ -2687,19 +2435,19 @@ stripe_open (call_frame_t *frame, xlator_t *this, loc_t *loc,                  STACK_WIND (frame, stripe_open_cbk, trav->xlator,                              trav->xlator->fops->open,                              &local->loc, local->flags, local->fd, -                            wbflags); +                            xdata);                  trav = trav->next;          }          return 0;  err: -        STRIPE_STACK_UNWIND (open, frame, -1, op_errno, NULL); +        STRIPE_STACK_UNWIND (open, frame, -1, op_errno, NULL, NULL);          return 0;  }  int32_t  stripe_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)  {          int32_t         callcnt = 0;          stripe_local_t *local = NULL; @@ -2732,7 +2480,7 @@ stripe_opendir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          if (!callcnt) {                  STRIPE_STACK_UNWIND (opendir, frame, local->op_ret, -                                     local->op_errno, local->fd); +                                     local->op_errno, local->fd, NULL);          }  out:          return 0; @@ -2740,7 +2488,7 @@ out:  int32_t -stripe_opendir (call_frame_t *frame, xlator_t *this, loc_t *loc, fd_t *fd) +stripe_opendir (call_frame_t *frame, xlator_t *this, loc_t *loc, fd_t *fd, dict_t *xdata)  {          xlator_list_t    *trav = NULL;          stripe_local_t   *local = NULL; @@ -2773,19 +2521,19 @@ stripe_opendir (call_frame_t *frame, xlator_t *this, loc_t *loc, fd_t *fd)          while (trav) {                  STACK_WIND (frame, stripe_opendir_cbk, trav->xlator, -                            trav->xlator->fops->opendir, loc, fd); +                            trav->xlator->fops->opendir, loc, fd, NULL);                  trav = trav->next;          }          return 0;  err: -        STRIPE_STACK_UNWIND (opendir, frame, -1, op_errno, NULL); +        STRIPE_STACK_UNWIND (opendir, frame, -1, op_errno, NULL, NULL);          return 0;  }  int32_t  stripe_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_ret, int32_t op_errno, struct gf_flock *lock, dict_t *xdata)  {          int32_t         callcnt = 0;          stripe_local_t *local = NULL; @@ -2825,7 +2573,7 @@ stripe_lk_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  if (local->failed)                          local->op_ret = -1;                  STRIPE_STACK_UNWIND (lk, frame, local->op_ret, -                                     local->op_errno, &local->lock); +                                     local->op_errno, &local->lock, NULL);          }  out:          return 0; @@ -2833,7 +2581,7 @@ out:  int32_t  stripe_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)  {          stripe_local_t   *local = NULL;          xlator_list_t    *trav = NULL; @@ -2860,20 +2608,20 @@ stripe_lk (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t cmd,          while (trav) {                  STACK_WIND (frame, stripe_lk_cbk, trav->xlator, -                            trav->xlator->fops->lk, fd, cmd, lock); +                            trav->xlator->fops->lk, fd, cmd, lock, NULL);                  trav = trav->next;          }          return 0;  err: -        STRIPE_STACK_UNWIND (lk, frame, -1, op_errno, NULL); +        STRIPE_STACK_UNWIND (lk, frame, -1, op_errno, NULL, NULL);          return 0;  }  int32_t  stripe_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)  {          int32_t         callcnt = 0;          stripe_local_t *local   = NULL; @@ -2910,14 +2658,14 @@ stripe_flush_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          local->op_ret = -1;                  STRIPE_STACK_UNWIND (flush, frame, local->op_ret, -                                     local->op_errno); +                                     local->op_errno, NULL);          }  out:          return 0;  }  int32_t -stripe_flush (call_frame_t *frame, xlator_t *this, fd_t *fd) +stripe_flush (call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *xdata)  {          stripe_local_t   *local = NULL;          stripe_private_t *priv = NULL; @@ -2948,13 +2696,13 @@ stripe_flush (call_frame_t *frame, xlator_t *this, fd_t *fd)          while (trav) {                  STACK_WIND (frame, stripe_flush_cbk,  trav->xlator, -                            trav->xlator->fops->flush, fd); +                            trav->xlator->fops->flush, fd, NULL);                  trav = trav->next;          }          return 0;  err: -        STRIPE_STACK_UNWIND (flush, frame, -1, op_errno); +        STRIPE_STACK_UNWIND (flush, frame, -1, op_errno, NULL);          return 0;  } @@ -2963,7 +2711,7 @@ err:  int32_t  stripe_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)  {          int32_t         callcnt = 0;          stripe_local_t *local   = NULL; @@ -3021,14 +2769,14 @@ stripe_fsync_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  STRIPE_STACK_UNWIND (fsync, frame, local->op_ret,                                       local->op_errno, &local->pre_buf, -                                     &local->post_buf); +                                     &local->post_buf, NULL);          }  out:          return 0;  }  int32_t -stripe_fsync (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t flags) +stripe_fsync (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t flags, dict_t *xdata)  {          stripe_local_t   *local = NULL;          stripe_private_t *priv = NULL; @@ -3055,19 +2803,19 @@ stripe_fsync (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t flags)          while (trav) {                  STACK_WIND (frame, stripe_fsync_cbk, trav->xlator, -                            trav->xlator->fops->fsync, fd, flags); +                            trav->xlator->fops->fsync, fd, flags, NULL);                  trav = trav->next;          }          return 0;  err: -        STRIPE_STACK_UNWIND (fsync, frame, -1, op_errno, NULL, NULL); +        STRIPE_STACK_UNWIND (fsync, frame, -1, op_errno, NULL, NULL, NULL);          return 0;  }  int32_t  stripe_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)  {          int32_t         callcnt = 0;          stripe_local_t *local = NULL; @@ -3118,7 +2866,7 @@ stripe_fstat_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  }                  STRIPE_STACK_UNWIND (fstat, frame, local->op_ret, -                                     local->op_errno, &local->stbuf); +                                     local->op_errno, &local->stbuf, NULL);          }  out: @@ -3128,7 +2876,7 @@ out:  int32_t  stripe_fstat (call_frame_t *frame,                xlator_t *this, -              fd_t *fd) +              fd_t *fd, dict_t *xdata)  {          stripe_local_t   *local = NULL;          stripe_private_t *priv = NULL; @@ -3155,19 +2903,19 @@ stripe_fstat (call_frame_t *frame,          while (trav) {                  STACK_WIND (frame, stripe_fstat_cbk, trav->xlator, -                            trav->xlator->fops->fstat, fd); +                            trav->xlator->fops->fstat, fd, NULL);                  trav = trav->next;          }          return 0;  err: -        STRIPE_STACK_UNWIND (fstat, frame, -1, op_errno, NULL); +        STRIPE_STACK_UNWIND (fstat, frame, -1, op_errno, NULL, NULL);          return 0;  }  int32_t -stripe_ftruncate (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset) +stripe_ftruncate (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset, dict_t *xdata)  {          stripe_local_t   *local = NULL;          stripe_private_t *priv = NULL; @@ -3194,20 +2942,20 @@ stripe_ftruncate (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset)          while (trav) {                  STACK_WIND (frame, stripe_truncate_cbk, trav->xlator, -                            trav->xlator->fops->ftruncate, fd, offset); +                            trav->xlator->fops->ftruncate, fd, offset, NULL);                  trav = trav->next;          }          return 0;  err: -        STRIPE_STACK_UNWIND (ftruncate, frame, -1, op_errno, NULL, NULL); +        STRIPE_STACK_UNWIND (ftruncate, frame, -1, op_errno, NULL, NULL, NULL);          return 0;  }  int32_t  stripe_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)  {          int32_t         callcnt = 0;          stripe_local_t *local   = NULL; @@ -3244,14 +2992,14 @@ stripe_fsyncdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          local->op_ret = -1;                  STRIPE_STACK_UNWIND (fsyncdir, frame, local->op_ret, -                                     local->op_errno); +                                     local->op_errno, NULL);          }  out:          return 0;  }  int32_t -stripe_fsyncdir (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t flags) +stripe_fsyncdir (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t flags, dict_t *xdata)  {          stripe_local_t   *local = NULL;          stripe_private_t *priv = NULL; @@ -3278,20 +3026,20 @@ stripe_fsyncdir (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t flags)          while (trav) {                  STACK_WIND (frame, stripe_fsyncdir_cbk, trav->xlator, -                            trav->xlator->fops->fsyncdir, fd, flags); +                            trav->xlator->fops->fsyncdir, fd, flags, NULL);                  trav = trav->next;          }          return 0;  err: -        STRIPE_STACK_UNWIND (fsyncdir, frame, -1, op_errno); +        STRIPE_STACK_UNWIND (fsyncdir, frame, -1, op_errno, NULL);          return 0;  }  int32_t  stripe_readv_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)  {          int32_t         i = 0;          int32_t         callcnt = 0; @@ -3373,7 +3121,7 @@ stripe_readv_fstat_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  GF_FREE (local->replies);                  tmp_iobref = local->iobref;                  STRIPE_STACK_UNWIND (readv, frame, op_ret, op_errno, vec, -                                     count, &tmp_stbuf, tmp_iobref); +                                     count, &tmp_stbuf, tmp_iobref, NULL);                  iobref_unref (tmp_iobref);                  if (vec) @@ -3390,7 +3138,7 @@ out:  int32_t  stripe_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)  {          int32_t         index = 0;          int32_t         callcnt = 0; @@ -3502,7 +3250,7 @@ stripe_readv_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  tmp_stbuf_p = &tmp_stbuf;                  WIPE (tmp_stbuf_p);                  STRIPE_STACK_UNWIND (readv, mframe, op_ret, op_errno, final_vec, -                                     final_count, &tmp_stbuf, tmp_iobref); +                                     final_count, &tmp_stbuf, tmp_iobref, NULL);                  iobref_unref (tmp_iobref);                  if (final_vec) @@ -3518,7 +3266,7 @@ check_size:                  STACK_WIND (mframe, stripe_readv_fstat_cbk,                              (fctx->xl_array[index]),                              (fctx->xl_array[index])->fops->fstat, -                            mlocal->fd); +                            mlocal->fd, NULL);          }  out: @@ -3530,7 +3278,7 @@ end:  int32_t  stripe_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)  {          int32_t           op_errno = EINVAL;          int32_t           idx = 0; @@ -3615,7 +3363,7 @@ stripe_readv (call_frame_t *frame, xlator_t *this, fd_t *fd,                  idx = (index % fctx->stripe_count);                  STACK_WIND (rframe, stripe_readv_cbk, fctx->xl_array[idx],                              fctx->xl_array[idx]->fops->readv, -                            fd, frame_size, frame_offset, flags); +                            fd, frame_size, frame_offset, flags, xdata);                  frame_offset += frame_size;          } @@ -3625,7 +3373,7 @@ err:          if (rframe)                  STRIPE_STACK_DESTROY (rframe); -        STRIPE_STACK_UNWIND (readv, frame, -1, op_errno, NULL, 0, NULL, NULL); +        STRIPE_STACK_UNWIND (readv, frame, -1, op_errno, NULL, 0, NULL, NULL, NULL);          return 0;  } @@ -3633,7 +3381,7 @@ err:  int32_t  stripe_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)  {          int32_t         callcnt = 0;          stripe_local_t *local = NULL; @@ -3669,7 +3417,7 @@ stripe_writev_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          if ((callcnt == local->wind_count) && local->unwind) {                  STRIPE_STACK_UNWIND (writev, frame, local->op_ret,                                       local->op_errno, &local->pre_buf, -                                     &local->post_buf); +                                     &local->post_buf, NULL);          }  out:          return 0; @@ -3678,7 +3426,7 @@ out:  int32_t  stripe_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)  {          struct iovec     *tmp_vec = NULL;          stripe_local_t   *local = NULL; @@ -3757,7 +3505,9 @@ stripe_writev (call_frame_t *frame, xlator_t *this, fd_t *fd,                  STACK_WIND (frame, stripe_writev_cbk, fctx->xl_array[idx],                              fctx->xl_array[idx]->fops->writev, fd, tmp_vec, -                            tmp_count, offset + offset_offset, flags, iobref); +                            tmp_count, offset + offset_offset, flags, iobref, +                            xdata); +                  GF_FREE (tmp_vec);                  offset_offset += fill_size;                  if (remaining_size == 0) @@ -3766,7 +3516,7 @@ stripe_writev (call_frame_t *frame, xlator_t *this, fd_t *fd,          return 0;  err: -        STRIPE_STACK_UNWIND (writev, frame, -1, op_errno, NULL, NULL); +        STRIPE_STACK_UNWIND (writev, frame, -1, op_errno, NULL, NULL, NULL);          return 0;  } @@ -3879,123 +3629,9 @@ notify (xlator_t *this, int32_t event, void *data, ...)          return 0;  } -static int -set_default_block_size (stripe_private_t *priv, char *num) -{ - -        int             ret = -1; -        GF_VALIDATE_OR_GOTO ("stripe", THIS, out); -        GF_VALIDATE_OR_GOTO (THIS->name, priv, out); -        GF_VALIDATE_OR_GOTO (THIS->name, num, out); - - -        if (gf_string2bytesize (num, &priv->block_size) != 0) { -                gf_log (THIS->name, GF_LOG_ERROR, -                        "invalid number format \"%s\"", num); -                goto out; -        } - -        ret = 0; - - out: -        return ret; - -} - - -int -set_stripe_block_size (xlator_t *this, stripe_private_t *priv, char *data) -{ -        int                    ret = -1; -        char                  *tmp_str = NULL; -        char                  *tmp_str1 = NULL; -        char                  *dup_str = NULL; -        char                  *stripe_str = NULL; -        char                  *pattern = NULL; -        char                  *num = NULL; -        struct stripe_options *temp_stripeopt = NULL; -        struct stripe_options *stripe_opt = NULL; - -        if (!this || !priv || !data) -                goto out; - -        /* Get the pattern for striping. -           "option block-size *avi:10MB" etc */ -        stripe_str = strtok_r (data, ",", &tmp_str); -        while (stripe_str) { -                dup_str = gf_strdup (stripe_str); -                stripe_opt = GF_CALLOC (1, sizeof (struct stripe_options), -                                        gf_stripe_mt_stripe_options); -                if (!stripe_opt) { -                        GF_FREE (dup_str); -                        goto out; -                } - -                pattern = strtok_r (dup_str, ":", &tmp_str1); -                num = strtok_r (NULL, ":", &tmp_str1); -                if (!num) { -                        num = pattern; -                        pattern = "*"; -                        ret = set_default_block_size (priv, num); -                        if (ret) -                                goto out; -                } -                if (gf_string2bytesize (num, &stripe_opt->block_size) != 0) { -                        gf_log (this->name, GF_LOG_ERROR, -                                "invalid number format \"%s\"", num); -                        goto out; -                } - -                if (stripe_opt->block_size < STRIPE_MIN_BLOCK_SIZE) { -                        gf_log (this->name, GF_LOG_ERROR, "Invalid Block-size: " -                                "%s. Should be atleast 512 bytes", num); -                        goto out; -                } -                if (stripe_opt->block_size % 512) { -                        gf_log (this->name, GF_LOG_ERROR, "Block-size: %s should" -                                " be a multiple of 512 bytes", num); -                        goto out; -                } - -                memcpy (stripe_opt->path_pattern, pattern, strlen (pattern)); - -                gf_log (this->name, GF_LOG_DEBUG, -                        "block-size : pattern %s : size %"PRId64, -                        stripe_opt->path_pattern, stripe_opt->block_size); - -                if (priv->pattern) -                        temp_stripeopt = NULL; -                else -                        temp_stripeopt = priv->pattern; -                priv->pattern = stripe_opt; -                stripe_opt->next = temp_stripeopt; - -                stripe_str = strtok_r (NULL, ",", &tmp_str); -                GF_FREE (dup_str); -        } - -        ret = 0; -out: -        return ret; -} - -int32_t -stripe_iatt_merge (struct iatt *from, struct iatt *to) -{ -        if (to->ia_size < from->ia_size) -                to->ia_size = from->ia_size; -        if (to->ia_mtime < from->ia_mtime) -                to->ia_mtime = from->ia_mtime; -        if (to->ia_ctime < from->ia_ctime) -                to->ia_ctime = from->ia_ctime; -        if (to->ia_atime < from->ia_atime) -                to->ia_atime = from->ia_atime; -        return 0; -} -  int  stripe_setxattr_cbk (call_frame_t *frame, void *cookie, -                     xlator_t *this, int op_ret, int op_errno) +                     xlator_t *this, int op_ret, int op_errno, dict_t *xdata)  {          int ret = -1;          int call_cnt = 0; @@ -4029,7 +3665,7 @@ stripe_setxattr_cbk (call_frame_t *frame, void *cookie,          if (!call_cnt) {                  STRIPE_STACK_UNWIND (setxattr, frame, local->op_ret, -                                     local->op_errno); +                                     local->op_errno, xdata);          }          return 0; @@ -4037,7 +3673,7 @@ stripe_setxattr_cbk (call_frame_t *frame, void *cookie,  int  stripe_setxattr (call_frame_t *frame, xlator_t *this, -                 loc_t *loc, dict_t *dict, int flags) +                 loc_t *loc, dict_t *dict, int flags, dict_t *xdata)  {          data_pair_t      *pair     = NULL;          int32_t           op_errno = EINVAL; @@ -4075,34 +3711,34 @@ stripe_setxattr (call_frame_t *frame, xlator_t *this,                  for (i = 0; i < priv->child_count; i++, trav = trav->next) {                          STACK_WIND (frame, stripe_setxattr_cbk,                                      trav->xlator, trav->xlator->fops->setxattr, -                                    loc, dict, flags); +                                    loc, dict, flags, xdata);                  }          } else {                  local->wind_count = 1;                  STACK_WIND (frame, stripe_setxattr_cbk,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->setxattr, -                            loc, dict, flags); +                            loc, dict, flags, xdata);          }          return 0;  err: -        STRIPE_STACK_UNWIND (setxattr, frame, -1,  op_errno); +        STRIPE_STACK_UNWIND (setxattr, frame, -1,  op_errno, NULL);          return 0;  }  int  stripe_fsetxattr_cbk (call_frame_t *frame, void *cookie, -                      xlator_t *this, int op_ret, int op_errno) +                      xlator_t *this, int op_ret, int op_errno, dict_t *xdata)  { -        STRIPE_STACK_UNWIND (fsetxattr, frame, op_ret, op_errno); +        STRIPE_STACK_UNWIND (fsetxattr, frame, op_ret, op_errno, xdata);          return 0;  }  int  stripe_fsetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd, -                  dict_t *dict, int flags) +                  dict_t *dict, int flags, dict_t *xdata)  {          data_pair_t    *trav     = NULL;          int32_t         op_ret   = -1; @@ -4118,24 +3754,24 @@ stripe_fsetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd,          STACK_WIND (frame, stripe_fsetxattr_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->fsetxattr, -                    fd, dict, flags); +                    fd, dict, flags, xdata);          return 0;   err: -        STRIPE_STACK_UNWIND (fsetxattr, frame, op_ret, op_errno); +        STRIPE_STACK_UNWIND (fsetxattr, frame, op_ret, op_errno, NULL);          return 0;  }  int -stripe_removexattr_cbk (call_frame_t *frame, void *cookie, -                        xlator_t *this, int32_t op_ret, int32_t op_errno) +stripe_removexattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, +                        int32_t op_ret, int32_t op_errno, dict_t *xdata)  { -        STRIPE_STACK_UNWIND (removexattr, frame, op_ret, op_errno); +        STRIPE_STACK_UNWIND (removexattr, frame, op_ret, op_errno, xdata);          return 0;  }  int  stripe_removexattr (call_frame_t *frame, xlator_t *this, -                    loc_t *loc, const char *name) +                    loc_t *loc, const char *name, dict_t *xdata)  {          int32_t         op_errno = EINVAL; @@ -4150,25 +3786,25 @@ stripe_removexattr (call_frame_t *frame, xlator_t *this,          STACK_WIND (frame, stripe_removexattr_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->removexattr, -                    loc, name); +                    loc, name, xdata);          return 0;  err: -        STRIPE_STACK_UNWIND (removexattr, frame, -1,  op_errno); +        STRIPE_STACK_UNWIND (removexattr, frame, -1,  op_errno, NULL);          return 0;  }  int -stripe_fremovexattr_cbk (call_frame_t *frame, void *cookie, -                         xlator_t *this, int32_t op_ret, int32_t op_errno) +stripe_fremovexattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, +                         int32_t op_ret, int32_t op_errno, dict_t *xdata)  { -        STRIPE_STACK_UNWIND (fremovexattr, frame, op_ret, op_errno); +        STRIPE_STACK_UNWIND (fremovexattr, frame, op_ret, op_errno, xdata);          return 0;  }  int  stripe_fremovexattr (call_frame_t *frame, xlator_t *this, -                     fd_t *fd, const char *name) +                     fd_t *fd, const char *name, dict_t *xdata)  {          int32_t         op_ret   = -1;          int32_t         op_errno = EINVAL; @@ -4183,10 +3819,10 @@ stripe_fremovexattr (call_frame_t *frame, xlator_t *this,          STACK_WIND (frame, stripe_fremovexattr_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->fremovexattr, -                    fd, name); +                    fd, name, xdata);          return 0;   err: -        STRIPE_STACK_UNWIND (fremovexattr, frame, op_ret, op_errno); +        STRIPE_STACK_UNWIND (fremovexattr, frame, op_ret, op_errno, xdata);          return 0;  } @@ -4251,7 +3887,7 @@ unlock:                          STRIPE_STACK_UNWIND (readdir, main_frame,                                               main_local->op_ret,                                               main_local->op_errno, -                                             &main_local->entries); +                                             &main_local->entries, NULL);                          gf_dirent_free (&main_local->entries);                          stripe_local_wipe (main_local);                          mem_put (main_local); @@ -4267,7 +3903,8 @@ unlock:  int32_t  stripe_readdirp_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                     int32_t op_ret, int32_t op_errno, gf_dirent_t *orig_entries) +                     int32_t op_ret, int32_t op_errno, +                     gf_dirent_t *orig_entries, dict_t *xdata)  {          stripe_local_t *local = NULL;          call_frame_t   *prev = NULL; @@ -4398,7 +4035,7 @@ out:                  /* all entries are directories */                  frame->local = NULL;                  STRIPE_STACK_UNWIND (readdir, frame, local->op_ret, -                                     local->op_errno, &local->entries); +                                     local->op_errno, &local->entries, NULL);                  gf_dirent_free (&local->entries);                  stripe_local_wipe (local);                  mem_put (local); @@ -4410,14 +4047,13 @@ out:  }  int32_t  stripe_readdirp (call_frame_t *frame, xlator_t *this, -                 fd_t *fd, size_t size, off_t off, dict_t *dict) +                 fd_t *fd, size_t size, off_t off, dict_t *xdata)  {          stripe_local_t  *local  = NULL;          stripe_private_t *priv = NULL;          xlator_list_t   *trav = NULL;          int             op_errno = -1; -          VALIDATE_OR_GOTO (frame, err);          VALIDATE_OR_GOTO (this, err);          VALIDATE_OR_GOTO (fd, err); @@ -4451,15 +4087,16 @@ stripe_readdirp (call_frame_t *frame, xlator_t *this,                  goto err;          STACK_WIND (frame, stripe_readdirp_cbk, trav->xlator, -                    trav->xlator->fops->readdirp, fd, size, off, dict); +                    trav->xlator->fops->readdirp, fd, size, off, xdata);          return 0;  err:          op_errno = (op_errno == -1) ? errno : op_errno; -        STRIPE_STACK_UNWIND (readdir, frame, -1, op_errno, NULL); +        STRIPE_STACK_UNWIND (readdir, frame, -1, op_errno, NULL, NULL);          return 0;  } +  int32_t  mem_acct_init (xlator_t *this)  { @@ -4726,16 +4363,17 @@ out:  int32_t  stripe_getxattr_unwind (call_frame_t *frame, -                        int op_ret, int op_errno, dict_t *dict) +                        int op_ret, int op_errno, dict_t *dict, dict_t *xdata)  { -        STRIPE_STACK_UNWIND (getxattr, frame, op_ret, op_errno, dict); +        STRIPE_STACK_UNWIND (getxattr, frame, op_ret, op_errno, dict, xdata);          return 0;  }  int -stripe_internal_getxattr_cbk (call_frame_t *frame, void *cookie,  xlator_t *this, -                              int op_ret, int op_errno, dict_t *xattr) +stripe_internal_getxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, +                              int op_ret, int op_errno, dict_t *xattr, +                              dict_t *xdata)  {          char        size_key[256]  = {0,}; @@ -4757,7 +4395,7 @@ stripe_internal_getxattr_cbk (call_frame_t *frame, void *cookie,  xlator_t *this          dict_del (xattr, index_key);  out: -        STRIPE_STACK_UNWIND (getxattr, frame, op_ret, op_errno, xattr); +        STRIPE_STACK_UNWIND (getxattr, frame, op_ret, op_errno, xattr, xdata);          return 0; @@ -4765,7 +4403,7 @@ out:  int  stripe_getxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                     int op_ret, int op_errno, dict_t *xattr) +                     int op_ret, int op_errno, dict_t *xattr, dict_t *xdata)  {          int                     call_cnt = 0;          stripe_local_t         *local = NULL; @@ -4795,121 +4433,17 @@ stripe_getxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  out:          if (!call_cnt) {                  STRIPE_STACK_UNWIND (getxattr, frame, local->op_ret, op_errno, -                                     local->xattr); +                                     local->xattr, xdata);          }          return 0;  }  int32_t -stripe_xattr_aggregate (char *buffer, stripe_local_t *local, int32_t *total) -{ -        int32_t              i     = 0; -        int32_t              ret   = -1; -        int32_t              len   = 0; -        char                *sbuf  = NULL; -        stripe_xattr_sort_t *xattr = NULL; - -        if (!buffer || !local || !local->xattr_list) -                goto out; - -        sbuf = buffer; - -        for (i = 0; i < local->nallocs; i++) { -                xattr = local->xattr_list + i; -                len = xattr->xattr_len; - -                if (len && xattr && xattr->xattr_value) { -                        memcpy (buffer, xattr->xattr_value, len); -                        buffer += len; -                        *buffer++ = ' '; -                } -        } - -        *--buffer = '\0'; -        if (total) -                *total = buffer - sbuf; -        ret = 0; - - out: -        return ret; -} - -int32_t -stripe_free_xattr_str (stripe_local_t *local) -{ -        int32_t              i     = 0; -        int32_t              ret   = -1; -        stripe_xattr_sort_t *xattr = NULL; - -        if (!local || !local->xattr_list) -                goto out; - -        for (i = 0; i < local->nallocs; i++) { -                xattr = local->xattr_list + i; - -                if (xattr && xattr->xattr_value) -                        GF_FREE (xattr->xattr_value); -        } - -        ret = 0; - out: -        return ret; -} - -int32_t -stripe_fill_pathinfo_xattr (xlator_t *this, stripe_local_t *local, -                            char **xattr_serz) -{ -        int      ret             = -1; -        int32_t  padding         = 0; -        int32_t  tlen            = 0; -        char stripe_size_str[20] = {0,}; -        char    *pathinfo_serz   = NULL; - -        if (!local) { -                gf_log (this->name, GF_LOG_ERROR, "Possible NULL deref"); -                goto out; -        } - -        (void) snprintf (stripe_size_str, 20, "%ld", -                         (local->fctx) ? local->fctx->stripe_size : 0); - -        /* extra bytes for decorations (brackets and <>'s) */ -        padding = strlen (this->name) + strlen (STRIPE_PATHINFO_HEADER) -                + strlen (stripe_size_str) + 7; -        local->xattr_total_len += (padding + 2); - -        pathinfo_serz = GF_CALLOC (local->xattr_total_len, sizeof (char), -                                   gf_common_mt_char); -        if (!pathinfo_serz) -                goto out; - -        /* xlator info */ -        (void) sprintf (pathinfo_serz, "(<"STRIPE_PATHINFO_HEADER"%s:[%s]> ", -                        this->name, stripe_size_str); - -        ret = stripe_xattr_aggregate (pathinfo_serz + padding, local, &tlen); -        if (ret) { -                gf_log (this->name, GF_LOG_ERROR, -                        "Cannot aggregate pathinfo list"); -                goto out; -        } - -        *(pathinfo_serz + padding + tlen) = ')'; -        *(pathinfo_serz + padding + tlen + 1) = '\0'; - -        *xattr_serz = pathinfo_serz; - -        ret = 0; - out: -        return ret; -} - -int32_t  stripe_vgetxattr_cbk (call_frame_t *frame, void *cookie, -                             xlator_t *this, int32_t op_ret, int32_t op_errno, -                             dict_t *dict) { +                      xlator_t *this, int32_t op_ret, int32_t op_errno, +                      dict_t *dict, dict_t *xdata) +{          stripe_local_t      *local         = NULL;          int32_t              callcnt       = 0;          int32_t              ret           = -1; @@ -4991,7 +4525,7 @@ stripe_vgetxattr_cbk (call_frame_t *frame, void *cookie,          unwind:                  STRIPE_STACK_UNWIND (getxattr, frame, op_ret, op_errno, -                                     stripe_xattr); +                                     stripe_xattr, NULL);                  ret = stripe_free_xattr_str (local); @@ -5007,7 +4541,7 @@ stripe_vgetxattr_cbk (call_frame_t *frame, void *cookie,  int32_t  stripe_getxattr (call_frame_t *frame, xlator_t *this, -                 loc_t *loc, const char *name) +                 loc_t *loc, const char *name, dict_t *xdata)  {          stripe_local_t    *local    = NULL;          xlator_list_t     *trav     = NULL; @@ -5069,7 +4603,7 @@ stripe_getxattr (call_frame_t *frame, xlator_t *this,                               trav = trav->next) {                          STACK_WIND (frame, stripe_getxattr_cbk,                                      trav->xlator, trav->xlator->fops->getxattr, -                                    loc, name); +                                    loc, name, xdata);                  }                  return 0; @@ -5101,7 +4635,7 @@ stripe_getxattr (call_frame_t *frame, xlator_t *this,                          STACK_WIND_COOKIE (frame, stripe_vgetxattr_cbk,                                             (void *) (long) i, trav->xlator,                                             trav->xlator->fops->getxattr, -                                           loc, name); +                                           loc, name, xdata);                  }                  return 0; @@ -5143,15 +4677,17 @@ stripe_getxattr (call_frame_t *frame, xlator_t *this,          STACK_WIND (frame, stripe_internal_getxattr_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->getxattr, loc, name); +                    FIRST_CHILD(this)->fops->getxattr, loc, name, xdata);          return 0;  err: -        STRIPE_STACK_UNWIND (getxattr, frame, -1, op_errno, NULL); +        STRIPE_STACK_UNWIND (getxattr, frame, -1, op_errno, NULL, NULL);          return 0;  } + +  int32_t  stripe_priv_dump (xlator_t *this)  { diff --git a/xlators/cluster/stripe/src/stripe.h b/xlators/cluster/stripe/src/stripe.h index 580920a1b..2d245dac9 100644 --- a/xlators/cluster/stripe/src/stripe.h +++ b/xlators/cluster/stripe/src/stripe.h @@ -38,7 +38,7 @@  #include <signal.h>  #define STRIPE_PATHINFO_HEADER "STRIPE:" - +#define STRIPE_MIN_BLOCK_SIZE  (16*GF_UNIT_KB)  #define STRIPE_STACK_UNWIND(fop, frame, params ...) do {           \                  stripe_local_t *__local = NULL;                    \ @@ -173,7 +173,7 @@ struct stripe_local {          mode_t               mode;          dev_t                rdev;          /* For File I/O fops */ -        dict_t              *dict; +        dict_t              *xdata;          stripe_xattr_sort_t *xattr_list;          int32_t              xattr_total_len; @@ -198,10 +198,28 @@ struct stripe_local {          gf_dirent_t         *dirent;          dict_t              *xattr;          uuid_t               ia_gfid; + +        int                  xflag; +        mode_t               umask;  };  typedef struct stripe_local   stripe_local_t;  typedef struct stripe_private stripe_private_t; +void stripe_local_wipe (stripe_local_t *local); +int32_t stripe_ctx_handle (xlator_t *this, call_frame_t *prev, +                           stripe_local_t *local, dict_t *dict); +void stripe_aggregate_xattr (dict_t *dst, dict_t *src); +int32_t stripe_xattr_request_build (xlator_t *this, dict_t *dict, +                                    uint64_t stripe_size, uint32_t stripe_count, +                                    uint32_t stripe_index); +int32_t stripe_get_matching_bs (const char *path, stripe_private_t *priv); +int set_stripe_block_size (xlator_t *this, stripe_private_t *priv, char *data); +int32_t stripe_iatt_merge (struct iatt *from, struct iatt *to); +int32_t stripe_fill_pathinfo_xattr (xlator_t *this, stripe_local_t *local, +                                    char **xattr_serz); +int32_t stripe_free_xattr_str (stripe_local_t *local); +int32_t stripe_xattr_aggregate (char *buffer, stripe_local_t *local, +                                int32_t *total);  #endif /* _STRIPE_H_ */ diff --git a/xlators/debug/error-gen/src/error-gen.c b/xlators/debug/error-gen/src/error-gen.c index e44baf5b7..74b6a6153 100644 --- a/xlators/debug/error-gen/src/error-gen.c +++ b/xlators/debug/error-gen/src/error-gen.c @@ -387,17 +387,17 @@ error_gen (xlator_t *this, int op_no)  int  error_gen_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)  {  	STACK_UNWIND_STRICT (lookup, frame, op_ret, op_errno, inode, -                             buf, dict, postparent); -	return 0; +                             buf, xdata, postparent); +        return 0;  }  int  error_gen_lookup (call_frame_t *frame, xlator_t *this, loc_t *loc, -                  dict_t *xattr_req) +                  dict_t *xdata)  {  	int              op_errno = 0;          eg_t            *egp = NULL; @@ -412,36 +412,28 @@ error_gen_lookup (call_frame_t *frame, xlator_t *this, loc_t *loc,  	if (op_errno) {  		GF_ERROR(this, "unwind(-1, %s)", strerror (op_errno));  		STACK_UNWIND_STRICT (lookup, frame, -1, op_errno, NULL, NULL, NULL, -                              NULL); -		return 0; +                                     NULL); +        return 0;  	}  	STACK_WIND (frame, error_gen_lookup_cbk,  		    FIRST_CHILD(this),  		    FIRST_CHILD(this)->fops->lookup, -		    loc, xattr_req); -	return 0; -} - - -int -error_gen_forget (xlator_t *this, inode_t *inode) -{ -	return 0; +		    loc, xdata); +        return 0;  }  int  error_gen_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); - -	return 0; +	STACK_UNWIND_STRICT (stat, frame, op_ret, op_errno, buf, xdata); +        return 0;  }  int -error_gen_stat (call_frame_t *frame, xlator_t *this, loc_t *loc) +error_gen_stat (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *xdata)  {  	int              op_errno = 0;          eg_t            *egp = NULL; @@ -455,32 +447,31 @@ error_gen_stat (call_frame_t *frame, xlator_t *this, loc_t *loc)  	if (op_errno) {  		GF_ERROR(this, "unwind(-1, %s)", strerror (op_errno)); -		STACK_UNWIND_STRICT (stat, frame, -1, op_errno, NULL); -		return 0; +		STACK_UNWIND_STRICT (stat, frame, -1, op_errno, NULL, xdata); +        return 0;  	}  	STACK_WIND (frame, error_gen_stat_cbk,  		    FIRST_CHILD(this),  		    FIRST_CHILD(this)->fops->stat, -		    loc); -	return 0; +		    loc, xdata); +        return 0;  }  int  error_gen_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); - -	return 0; +	STACK_UNWIND_STRICT (setattr, frame, op_ret, op_errno, preop, postop, xdata); +        return 0;  }  int  error_gen_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)  {  	int              op_errno = 0;          eg_t            *egp = NULL; @@ -494,21 +485,21 @@ error_gen_setattr (call_frame_t *frame, xlator_t *this, loc_t *loc,  	if (op_errno) {  		GF_ERROR(this, "unwind(-1, %s)", strerror (op_errno)); -		STACK_UNWIND_STRICT (setattr, frame, -1, op_errno, NULL, NULL); -		return 0; +		STACK_UNWIND_STRICT (setattr, frame, -1, op_errno, NULL, NULL, xdata); +        return 0;  	}  	STACK_WIND (frame, error_gen_setattr_cbk,  		    FIRST_CHILD(this),  		    FIRST_CHILD(this)->fops->setattr, -		    loc, stbuf, valid); -	return 0; +		    loc, stbuf, valid, xdata); +        return 0;  }  int  error_gen_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)  {  	int             op_errno = 0;          eg_t            *egp = NULL; @@ -522,32 +513,32 @@ error_gen_fsetattr (call_frame_t *frame, xlator_t *this, fd_t *fd,  	if (op_errno) {  		GF_ERROR(this, "unwind(-1, %s)", strerror (op_errno)); -		STACK_UNWIND_STRICT (fsetattr, frame, -1, op_errno, NULL, NULL); -		return 0; +		STACK_UNWIND_STRICT (fsetattr, frame, -1, op_errno, NULL, NULL, xdata); +        return 0;  	}  	STACK_WIND (frame, error_gen_setattr_cbk,  		    FIRST_CHILD(this),  		    FIRST_CHILD(this)->fops->fsetattr, -		    fd, stbuf, valid); -	return 0; +		    fd, stbuf, valid, xdata); +        return 0;  }  int  error_gen_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)  {  	STACK_UNWIND_STRICT (truncate, frame, op_ret, op_errno, -                             prebuf, postbuf); -	return 0; +                             prebuf, postbuf, xdata); +        return 0;  }  int  error_gen_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, -                    off_t offset) +                    off_t offset, dict_t *xdata)  {  	int              op_errno = 0;          eg_t            *egp = NULL; @@ -562,32 +553,32 @@ error_gen_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc,  	if (op_errno) {  		GF_ERROR(this, "unwind(-1, %s)", strerror (op_errno));  		STACK_UNWIND_STRICT (truncate, frame, -1, op_errno, -                                     NULL, NULL); -		return 0; +                                     NULL, NULL, xdata); +        return 0;  	}  	STACK_WIND (frame, error_gen_truncate_cbk,  		    FIRST_CHILD(this),  		    FIRST_CHILD(this)->fops->truncate, -		    loc, offset); -	return 0; +		    loc, offset, xdata); +        return 0;  }  int  error_gen_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); -	return 0; +                             prebuf, postbuf, xdata); +        return 0;  }  int  error_gen_ftruncate (call_frame_t *frame, xlator_t *this, fd_t *fd, -		     off_t offset) +		     off_t offset, dict_t *xdata)  {  	int              op_errno = 0;          eg_t            *egp =NULL; @@ -602,31 +593,30 @@ error_gen_ftruncate (call_frame_t *frame, xlator_t *this, fd_t *fd,  	if (op_errno) {  		GF_ERROR(this, "unwind(-1, %s)", strerror (op_errno));  		STACK_UNWIND_STRICT (ftruncate, frame, -1, op_errno, -                                     NULL, NULL); -		return 0; +                                     NULL, NULL, xdata); +        return 0;  	}  	STACK_WIND (frame, error_gen_ftruncate_cbk,  		    FIRST_CHILD(this),  		    FIRST_CHILD(this)->fops->ftruncate, -		    fd, offset); -	return 0; +		    fd, offset, xdata); +        return 0;  }  int  error_gen_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); - -	return 0; +	STACK_UNWIND_STRICT (access, frame, op_ret, op_errno, xdata); +        return 0;  }  int  error_gen_access (call_frame_t *frame, xlator_t *this, loc_t *loc, -		  int32_t mask) +		  int32_t mask, dict_t *xdata)  {  	int              op_errno = 0;          eg_t            *egp = NULL; @@ -640,31 +630,31 @@ error_gen_access (call_frame_t *frame, xlator_t *this, loc_t *loc,  	if (op_errno) {  		GF_ERROR(this, "unwind(-1, %s)", strerror (op_errno)); -		STACK_UNWIND_STRICT (access, frame, -1, op_errno); -		return 0; +		STACK_UNWIND_STRICT (access, frame, -1, op_errno, xdata); +        return 0;  	}  	STACK_WIND (frame, error_gen_access_cbk,  		    FIRST_CHILD(this),  		    FIRST_CHILD(this)->fops->access, -		    loc, mask); -	return 0; +		    loc, mask, xdata); +        return 0;  }  int  error_gen_readlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  			int32_t op_ret, int32_t op_errno, -			const char *path, struct iatt *sbuf) +			const char *path, struct iatt *sbuf, dict_t *xdata)  { -	STACK_UNWIND_STRICT (readlink, frame, op_ret, op_errno, path, sbuf); -	return 0; +	STACK_UNWIND_STRICT (readlink, frame, op_ret, op_errno, path, sbuf, xdata); +        return 0;  }  int  error_gen_readlink (call_frame_t *frame, xlator_t *this, loc_t *loc, -                    size_t size) +                    size_t size, dict_t *xdata)  {  	int              op_errno = 0;          eg_t            *egp = NULL; @@ -678,15 +668,15 @@ error_gen_readlink (call_frame_t *frame, xlator_t *this, loc_t *loc,  	if (op_errno) {  		GF_ERROR(this, "unwind(-1, %s)", strerror (op_errno)); -		STACK_UNWIND_STRICT (readlink, frame, -1, op_errno, NULL, NULL); -		return 0; +		STACK_UNWIND_STRICT (readlink, frame, -1, op_errno, NULL, NULL, xdata); +        return 0;  	}  	STACK_WIND (frame, error_gen_readlink_cbk,  		    FIRST_CHILD(this),  		    FIRST_CHILD(this)->fops->readlink, -		    loc, size); -	return 0; +		    loc, size, xdata); +        return 0;  } @@ -694,18 +684,18 @@ int  error_gen_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); -	return 0; +                             preparent, postparent, xdata); +        return 0;  }  int  error_gen_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)  {  	int              op_errno = 0;          eg_t            *egp = NULL; @@ -720,15 +710,15 @@ error_gen_mknod (call_frame_t *frame, xlator_t *this, loc_t *loc,  	if (op_errno) {  		GF_ERROR(this, "unwind(-1, %s)", strerror (op_errno));  		STACK_UNWIND_STRICT (mknod, frame, -1, op_errno, NULL, NULL, -                                     NULL, NULL); -		return 0; +                                     NULL, NULL, xdata); +        return 0;  	}  	STACK_WIND (frame, error_gen_mknod_cbk,  		    FIRST_CHILD(this),  		    FIRST_CHILD(this)->fops->mknod, -		    loc, mode, rdev, params); -	return 0; +		    loc, mode, rdev, umask, xdata); +        return 0;  } @@ -736,17 +726,17 @@ int  error_gen_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); -	return 0; +                             preparent, postparent, xdata); +        return 0;  }  int  error_gen_mkdir (call_frame_t *frame, xlator_t *this, -		 loc_t *loc, mode_t mode, dict_t *params) +		 loc_t *loc, mode_t mode, mode_t umask, dict_t *xdata)  {  	int              op_errno = 0;          eg_t            *egp = NULL; @@ -761,31 +751,32 @@ error_gen_mkdir (call_frame_t *frame, xlator_t *this,  	if (op_errno) {  		GF_ERROR(this, "unwind(-1, %s)", strerror (op_errno));  		STACK_UNWIND_STRICT (mkdir, frame, -1, op_errno, NULL, NULL, -                                     NULL, NULL); -		return 0; +                                     NULL, NULL, xdata); +                return 0;  	}  	STACK_WIND (frame, error_gen_mkdir_cbk,  		    FIRST_CHILD(this),  		    FIRST_CHILD(this)->fops->mkdir, -		    loc, mode, params); -	return 0; +		    loc, mode, umask, xdata); +        return 0;  }  int  error_gen_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)  {  	STACK_UNWIND_STRICT (unlink, frame, op_ret, op_errno, -                             preparent, postparent); -	return 0; +                             preparent, postparent, xdata); +        return 0;  }  int -error_gen_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc) +error_gen_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc, int xflag, +                  dict_t *xdata)  {  	int              op_errno = 0;          eg_t            *egp = NULL; @@ -799,31 +790,34 @@ error_gen_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc)  	if (op_errno) {  		GF_ERROR(this, "unwind(-1, %s)", strerror (op_errno)); -		STACK_UNWIND_STRICT (unlink, frame, -1, op_errno, NULL, NULL); -		return 0; +		STACK_UNWIND_STRICT (unlink, frame, -1, op_errno, NULL, NULL, +                                     xdata); +                return 0;  	}  	STACK_WIND (frame, error_gen_unlink_cbk,  		    FIRST_CHILD(this),  		    FIRST_CHILD(this)->fops->unlink, -		    loc); -	return 0; +		    loc, xflag, xdata); +        return 0;  }  int  error_gen_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)  {  	STACK_UNWIND_STRICT (rmdir, frame, op_ret, op_errno, -                             preparent, postparent); -	return 0; +                             preparent, postparent, xdata); +        return 0;  }  int -error_gen_rmdir (call_frame_t *frame, xlator_t *this, loc_t *loc, int flags) +error_gen_rmdir (call_frame_t *frame, xlator_t *this, loc_t *loc, int flags, +                 dict_t *xdata)  {  	int              op_errno = 0;          eg_t            *egp = NULL; @@ -837,15 +831,15 @@ error_gen_rmdir (call_frame_t *frame, xlator_t *this, loc_t *loc, int flags)  	if (op_errno) {  		GF_ERROR(this, "unwind(-1, %s)", strerror (op_errno)); -		STACK_UNWIND_STRICT (rmdir, frame, -1, op_errno, NULL, NULL); -		return 0; +		STACK_UNWIND_STRICT (rmdir, frame, -1, op_errno, NULL, NULL, xdata); +        return 0;  	}  	STACK_WIND (frame, error_gen_rmdir_cbk,  		    FIRST_CHILD(this),  		    FIRST_CHILD(this)->fops->rmdir, -		    loc, flags); -	return 0; +		    loc, flags, xdata); +        return 0;  } @@ -853,17 +847,17 @@ int  error_gen_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); -	return 0; +                             preparent, postparent, xdata); +        return 0;  }  int  error_gen_symlink (call_frame_t *frame, xlator_t *this, const char *linkpath, -		   loc_t *loc, dict_t *params) +		   loc_t *loc, mode_t umask, dict_t *xdata)  {  	int              op_errno = 0;          eg_t            *egp = NULL; @@ -878,15 +872,15 @@ error_gen_symlink (call_frame_t *frame, xlator_t *this, const char *linkpath,  	if (op_errno) {  		GF_ERROR(this, "unwind(-1, %s)", strerror (op_errno));  		STACK_UNWIND_STRICT (symlink, frame, -1, op_errno, NULL, NULL, -                                     NULL, NULL); /* pre & post parent attr */ +                                     NULL, NULL, NULL); /* pre & post parent attr */  		return 0;  	}  	STACK_WIND (frame, error_gen_symlink_cbk,  		    FIRST_CHILD(this),  		    FIRST_CHILD(this)->fops->symlink, -		    linkpath, loc, params); -	return 0; +		    linkpath, loc, umask, xdata); +        return 0;  } @@ -894,18 +888,19 @@ int  error_gen_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); -	return 0; +                             prenewparent, postnewparent, xdata); +        return 0;  }  int  error_gen_rename (call_frame_t *frame, xlator_t *this, -		  loc_t *oldloc, loc_t *newloc) +		  loc_t *oldloc, loc_t *newloc, dict_t *xdata)  {  	int              op_errno = 0;          eg_t            *egp = NULL; @@ -920,15 +915,15 @@ error_gen_rename (call_frame_t *frame, xlator_t *this,  	if (op_errno) {  		GF_ERROR(this, "unwind(-1, %s)", strerror (op_errno));  		STACK_UNWIND_STRICT (rename, frame, -1, op_errno, NULL, -                                     NULL, NULL, NULL, NULL); /* pre & post parent attr */ +                                     NULL, NULL, NULL, NULL, NULL);  		return 0;  	}  	STACK_WIND (frame, error_gen_rename_cbk,  		    FIRST_CHILD(this),  		    FIRST_CHILD(this)->fops->rename, -		    oldloc, newloc); -	return 0; +		    oldloc, newloc, xdata); +        return 0;  } @@ -936,17 +931,17 @@ int  error_gen_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 *postparent, dict_t *xdata)  {  	STACK_UNWIND_STRICT (link, frame, op_ret, op_errno, inode, buf, -                             preparent, postparent); -	return 0; +                             preparent, postparent, xdata); +        return 0;  }  int  error_gen_link (call_frame_t *frame, xlator_t *this, -		loc_t *oldloc, loc_t *newloc) +		loc_t *oldloc, loc_t *newloc, dict_t *xdata)  {  	int             op_errno = 0;          eg_t            *egp = NULL; @@ -961,15 +956,15 @@ error_gen_link (call_frame_t *frame, xlator_t *this,  	if (op_errno) {  		GF_ERROR(this, "unwind(-1, %s)", strerror (op_errno));  		STACK_UNWIND_STRICT (link, frame, -1, op_errno, NULL, NULL, -                                     NULL, NULL); /* pre & post parent attr */ +                                     NULL, NULL, NULL);  		return 0;  	}  	STACK_WIND (frame, error_gen_link_cbk,  		    FIRST_CHILD(this),  		    FIRST_CHILD(this)->fops->link, -		    oldloc, newloc); -	return 0; +		    oldloc, newloc, xdata); +        return 0;  } @@ -977,17 +972,18 @@ int  error_gen_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 *preparent, struct iatt *postparent, dict_t *xdata)  {  	STACK_UNWIND_STRICT (create, frame, op_ret, op_errno, fd, inode, buf, -                             preparent, postparent); -	return 0; +                             preparent, postparent, xdata); +        return 0;  }  int  error_gen_create (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)  {  	int             op_errno = 0;          eg_t            *egp = NULL; @@ -1002,30 +998,30 @@ error_gen_create (call_frame_t *frame, xlator_t *this, loc_t *loc,  	if (op_errno) {  		GF_ERROR(this, "unwind(-1, %s)", strerror (op_errno));  		STACK_UNWIND_STRICT (create, frame, -1, op_errno, NULL, NULL, -                                     NULL, NULL, NULL); /* pre & post attr */ +                                     NULL, NULL, NULL, NULL);  		return 0;  	}  	STACK_WIND (frame, error_gen_create_cbk,  		    FIRST_CHILD(this),  		    FIRST_CHILD(this)->fops->create, -		    loc, flags, mode, fd, params); -	return 0; +		    loc, flags, mode, umask, fd, xdata); +        return 0;  }  int  error_gen_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)  { -	STACK_UNWIND_STRICT (open, frame, op_ret, op_errno, fd); -	return 0; +	STACK_UNWIND_STRICT (open, frame, op_ret, op_errno, fd, xdata); +        return 0;  }  int  error_gen_open (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)  {  	int              op_errno = 0;          eg_t            *egp = NULL; @@ -1039,15 +1035,15 @@ error_gen_open (call_frame_t *frame, xlator_t *this, loc_t *loc,  	if (op_errno) {  		GF_ERROR(this, "unwind(-1, %s)", strerror (op_errno)); -		STACK_UNWIND_STRICT (open, frame, -1, op_errno, NULL); -		return 0; +		STACK_UNWIND_STRICT (open, frame, -1, op_errno, NULL, xdata); +        return 0;  	}  	STACK_WIND (frame, error_gen_open_cbk,  		    FIRST_CHILD(this),  		    FIRST_CHILD(this)->fops->open, -		    loc, flags, fd, wbflags); -	return 0; +		    loc, flags, fd, xdata); +        return 0;  } @@ -1055,17 +1051,17 @@ int  error_gen_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)  {  	STACK_UNWIND_STRICT (readv, frame, op_ret, op_errno, -                             vector, count, stbuf, iobref); -	return 0; +                             vector, count, stbuf, iobref, xdata); +        return 0;  }  int  error_gen_readv (call_frame_t *frame, xlator_t *this, -		 fd_t *fd, size_t size, off_t offset, uint32_t flags) +		 fd_t *fd, size_t size, off_t offset, uint32_t flags, dict_t *xdata)  {  	int              op_errno = 0;          eg_t            *egp = NULL; @@ -1080,33 +1076,33 @@ error_gen_readv (call_frame_t *frame, xlator_t *this,  	if (op_errno) {  		GF_ERROR(this, "unwind(-1, %s)", strerror (op_errno));  		STACK_UNWIND_STRICT (readv, frame, -1, op_errno, NULL, 0, -                                     NULL, NULL); -		return 0; +                                     NULL, NULL, xdata); +        return 0;  	}  	STACK_WIND (frame, error_gen_readv_cbk,  		    FIRST_CHILD(this),  		    FIRST_CHILD(this)->fops->readv, -		    fd, size, offset, flags); -	return 0; +		    fd, size, offset, flags, xdata); +        return 0;  }  int  error_gen_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)  { -	STACK_UNWIND_STRICT (writev, frame, op_ret, op_errno, prebuf, postbuf); -	return 0; +	STACK_UNWIND_STRICT (writev, frame, op_ret, op_errno, prebuf, postbuf, xdata); +        return 0;  }  int  error_gen_writev (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) +		  off_t off, uint32_t flags, struct iobref *iobref, dict_t *xdata)  {  	int              op_errno = 0;          eg_t            *egp = NULL; @@ -1120,29 +1116,29 @@ error_gen_writev (call_frame_t *frame, xlator_t *this, fd_t *fd,  	if (op_errno) {  		GF_ERROR(this, "unwind(-1, %s)", strerror (op_errno)); -		STACK_UNWIND_STRICT (writev, frame, -1, op_errno, NULL, NULL); -		return 0; +		STACK_UNWIND_STRICT (writev, frame, -1, op_errno, NULL, NULL, xdata); +        return 0;  	}  	STACK_WIND (frame, error_gen_writev_cbk,  		    FIRST_CHILD(this),  		    FIRST_CHILD(this)->fops->writev, -		    fd, vector, count, off, flags, iobref); -	return 0; +		    fd, vector, count, off, flags, iobref, xdata); +        return 0;  }  int  error_gen_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); -	return 0; +	STACK_UNWIND_STRICT (flush, frame, op_ret, op_errno, xdata); +        return 0;  }  int -error_gen_flush (call_frame_t *frame, xlator_t *this, fd_t *fd) +error_gen_flush (call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *xdata)  {  	int              op_errno = 0;          eg_t            *egp = NULL; @@ -1156,15 +1152,15 @@ error_gen_flush (call_frame_t *frame, xlator_t *this, fd_t *fd)  	if (op_errno) {  		GF_ERROR(this, "unwind(-1, %s)", strerror (op_errno)); -		STACK_UNWIND_STRICT (flush, frame, -1, op_errno); -		return 0; +		STACK_UNWIND_STRICT (flush, frame, -1, op_errno, xdata); +        return 0;  	}  	STACK_WIND (frame, error_gen_flush_cbk,                      FIRST_CHILD(this),  		    FIRST_CHILD(this)->fops->flush, -		    fd); -	return 0; +		    fd, xdata); +        return 0;  } @@ -1172,15 +1168,15 @@ int  error_gen_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); -	return 0; +	STACK_UNWIND_STRICT (fsync, frame, op_ret, op_errno, prebuf, postbuf, xdata); +        return 0;  }  int -error_gen_fsync (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t flags) +error_gen_fsync (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t flags, dict_t *xdata)  {  	int              op_errno = 0;          eg_t            *egp = NULL; @@ -1194,29 +1190,29 @@ error_gen_fsync (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t flags)  	if (op_errno) {  		GF_ERROR(this, "unwind(-1, %s)", strerror (op_errno)); -		STACK_UNWIND_STRICT (fsync, frame, -1, op_errno, NULL, NULL); -		return 0; +		STACK_UNWIND_STRICT (fsync, frame, -1, op_errno, NULL, NULL, xdata); +        return 0;  	}  	STACK_WIND (frame, error_gen_fsync_cbk,  		    FIRST_CHILD(this),  		    FIRST_CHILD(this)->fops->fsync, -		    fd, flags); -	return 0; +		    fd, flags, xdata); +        return 0;  }  int  error_gen_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); -	return 0; +	STACK_UNWIND_STRICT (fstat, frame, op_ret, op_errno, buf, xdata); +        return 0;  }  int -error_gen_fstat (call_frame_t *frame, xlator_t *this, fd_t *fd) +error_gen_fstat (call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *xdata)  {  	int              op_errno = 0;          eg_t            *egp = NULL; @@ -1230,29 +1226,29 @@ error_gen_fstat (call_frame_t *frame, xlator_t *this, fd_t *fd)  	if (op_errno) {  		GF_ERROR(this, "unwind(-1, %s)", strerror (op_errno)); -		STACK_UNWIND_STRICT (fstat, frame, -1, op_errno, NULL); -		return 0; +		STACK_UNWIND_STRICT (fstat, frame, -1, op_errno, NULL, xdata); +        return 0;  	}  	STACK_WIND (frame, error_gen_fstat_cbk,  		    FIRST_CHILD(this),  		    FIRST_CHILD(this)->fops->fstat, -		    fd); -	return 0; +		    fd, xdata); +        return 0;  }  int  error_gen_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); -	return 0; +	STACK_UNWIND_STRICT (opendir, frame, op_ret, op_errno, fd, xdata); +        return 0;  }  int -error_gen_opendir (call_frame_t *frame, xlator_t *this, loc_t *loc, fd_t *fd) +error_gen_opendir (call_frame_t *frame, xlator_t *this, loc_t *loc, fd_t *fd, dict_t *xdata)  {  	int              op_errno = 0;          eg_t            *egp = NULL; @@ -1266,29 +1262,29 @@ error_gen_opendir (call_frame_t *frame, xlator_t *this, loc_t *loc, fd_t *fd)  	if (op_errno) {  		GF_ERROR(this, "unwind(-1, %s)", strerror (op_errno)); -		STACK_UNWIND_STRICT (opendir, frame, -1, op_errno, NULL); -		return 0; +		STACK_UNWIND_STRICT (opendir, frame, -1, op_errno, NULL, xdata); +        return 0;  	}  	STACK_WIND (frame, error_gen_opendir_cbk,  		    FIRST_CHILD(this),  		    FIRST_CHILD(this)->fops->opendir, -		    loc, fd); -	return 0; +		    loc, fd, xdata); +        return 0;  }  int  error_gen_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); -	return 0; +	STACK_UNWIND_STRICT (fsyncdir, frame, op_ret, op_errno, xdata); +        return 0;  }  int  error_gen_fsyncdir (call_frame_t *frame, xlator_t *this, fd_t *fd, -                    int32_t flags) +                    int32_t flags, dict_t *xdata)  {  	int              op_errno = 0;          eg_t            *egp = NULL; @@ -1302,30 +1298,29 @@ error_gen_fsyncdir (call_frame_t *frame, xlator_t *this, fd_t *fd,  	if (op_errno) {  		GF_ERROR(this, "unwind(-1, %s)", strerror (op_errno)); -		STACK_UNWIND_STRICT (fsyncdir, frame, -1, op_errno); -		return 0; +		STACK_UNWIND_STRICT (fsyncdir, frame, -1, op_errno, xdata); +        return 0;  	}  	STACK_WIND (frame, error_gen_fsyncdir_cbk,  		    FIRST_CHILD(this),  		    FIRST_CHILD(this)->fops->fsyncdir, -		    fd, flags); -	return 0; +		    fd, flags, xdata); +        return 0;  }  int  error_gen_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); - -	return 0; +	STACK_UNWIND_STRICT (statfs, frame, op_ret, op_errno, buf, xdata); +        return 0;  }  int -error_gen_statfs (call_frame_t *frame, xlator_t *this, loc_t *loc) +error_gen_statfs (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *xdata)  {  	int              op_errno = 0;          eg_t            *egp = NULL; @@ -1339,31 +1334,30 @@ error_gen_statfs (call_frame_t *frame, xlator_t *this, loc_t *loc)  	if (op_errno) {  		GF_ERROR(this, "unwind(-1, %s)", strerror (op_errno)); -		STACK_UNWIND_STRICT (statfs, frame, -1, op_errno, NULL); -		return 0; +		STACK_UNWIND_STRICT (statfs, frame, -1, op_errno, NULL, xdata); +        return 0;  	}  	STACK_WIND (frame, error_gen_statfs_cbk,  		    FIRST_CHILD(this),  		    FIRST_CHILD(this)->fops->statfs, -		    loc); -	return 0; +		    loc, xdata); +        return 0;  }  int  error_gen_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); - -	return 0; +	STACK_UNWIND_STRICT (setxattr, frame, op_ret, op_errno, xdata); +        return 0;  }  int  error_gen_setxattr (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)  {  	int              op_errno = 0;          eg_t            *egp = NULL; @@ -1377,30 +1371,30 @@ error_gen_setxattr (call_frame_t *frame, xlator_t *this, loc_t *loc,  	if (op_errno) {  		GF_ERROR(this, "unwind(-1, %s)", strerror (op_errno)); -		STACK_UNWIND_STRICT (setxattr, frame, -1, op_errno); -		return 0; +		STACK_UNWIND_STRICT (setxattr, frame, -1, op_errno, xdata); +        return 0;  	}  	STACK_WIND (frame, error_gen_setxattr_cbk,  		    FIRST_CHILD(this),  		    FIRST_CHILD(this)->fops->setxattr, -		    loc, dict, flags); -	return 0; +		    loc, dict, flags, xdata); +        return 0;  }  int  error_gen_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); -	return 0; +	STACK_UNWIND_STRICT (getxattr, frame, op_ret, op_errno, dict, xdata); +        return 0;  }  int  error_gen_getxattr (call_frame_t *frame, xlator_t *this, loc_t *loc, -		    const char *name) +		    const char *name, dict_t *xdata)  {  	int              op_errno = 0;          eg_t            *egp = NULL; @@ -1414,30 +1408,29 @@ error_gen_getxattr (call_frame_t *frame, xlator_t *this, loc_t *loc,  	if (op_errno) {  		GF_ERROR(this, "unwind(-1, %s)", strerror (op_errno)); -		STACK_UNWIND_STRICT (getxattr, frame, -1, op_errno, NULL); -		return 0; +		STACK_UNWIND_STRICT (getxattr, frame, -1, op_errno, NULL, xdata); +        return 0;  	}  	STACK_WIND (frame, error_gen_getxattr_cbk,  		    FIRST_CHILD(this),  		    FIRST_CHILD(this)->fops->getxattr, -		    loc, name); -	return 0; +		    loc, name, xdata); +        return 0;  }  int  error_gen_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); - -	return 0; +	STACK_UNWIND_STRICT (fsetxattr, frame, op_ret, op_errno, xdata); +        return 0;  }  int  error_gen_fsetxattr (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)  {  	int              op_errno = 0;          eg_t            *egp = NULL; @@ -1451,30 +1444,30 @@ error_gen_fsetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd,  	if (op_errno) {  		GF_ERROR(this, "unwind(-1, %s)", strerror (op_errno)); -		STACK_UNWIND_STRICT (fsetxattr, frame, -1, op_errno); -		return 0; +		STACK_UNWIND_STRICT (fsetxattr, frame, -1, op_errno, xdata); +        return 0;  	}  	STACK_WIND (frame, error_gen_fsetxattr_cbk,  		    FIRST_CHILD(this),  		    FIRST_CHILD(this)->fops->fsetxattr, -		    fd, dict, flags); -	return 0; +		    fd, dict, flags, xdata); +        return 0;  }  int  error_gen_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); -	return 0; +	STACK_UNWIND_STRICT (fgetxattr, frame, op_ret, op_errno, dict, xdata); +        return 0;  }  int  error_gen_fgetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd, -                     const char *name) +                     const char *name, dict_t *xdata)  {  	int              op_errno = 0;          eg_t            *egp = NULL; @@ -1488,31 +1481,30 @@ error_gen_fgetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd,  	if (op_errno) {  		GF_ERROR(this, "unwind(-1, %s)", strerror (op_errno)); -		STACK_UNWIND_STRICT (fgetxattr, frame, -1, op_errno, NULL); -		return 0; +		STACK_UNWIND_STRICT (fgetxattr, frame, -1, op_errno, NULL, xdata); +        return 0;  	}  	STACK_WIND (frame, error_gen_fgetxattr_cbk,  		    FIRST_CHILD(this),  		    FIRST_CHILD(this)->fops->fgetxattr, -		    fd, name); -	return 0; +		    fd, name, xdata); +        return 0;  }  int  error_gen_xattrop_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 (xattrop, frame, op_ret, op_errno, dict); - -	return 0; +	STACK_UNWIND_STRICT (xattrop, frame, op_ret, op_errno, dict, xdata); +        return 0;  }  int  error_gen_xattrop (call_frame_t *frame, xlator_t *this, loc_t *loc, -		   gf_xattrop_flags_t flags, dict_t *dict) +		   gf_xattrop_flags_t flags, dict_t *dict, dict_t *xdata)  {  	int              op_errno = 0;          eg_t            *egp = NULL; @@ -1526,31 +1518,30 @@ error_gen_xattrop (call_frame_t *frame, xlator_t *this, loc_t *loc,  	if (op_errno) {  		GF_ERROR(this, "unwind(-1, %s)", strerror (op_errno)); -		STACK_UNWIND_STRICT (xattrop, frame, -1, op_errno, NULL); -		return 0; +		STACK_UNWIND_STRICT (xattrop, frame, -1, op_errno, NULL, xdata); +        return 0;  	}  	STACK_WIND (frame, error_gen_xattrop_cbk,  		    FIRST_CHILD(this),  		    FIRST_CHILD(this)->fops->xattrop, -		    loc, flags, dict); -	return 0; +		    loc, flags, dict, xdata); +        return 0;  }  int  error_gen_fxattrop_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 (fxattrop, frame, op_ret, op_errno, dict); - -	return 0; +	STACK_UNWIND_STRICT (fxattrop, frame, op_ret, op_errno, dict, xdata); +        return 0;  }  int  error_gen_fxattrop (call_frame_t *frame, xlator_t *this, fd_t *fd, -		    gf_xattrop_flags_t flags, dict_t *dict) +		    gf_xattrop_flags_t flags, dict_t *dict, dict_t *xdata)  {  	int              op_errno = 0;          eg_t            *egp = NULL; @@ -1564,31 +1555,30 @@ error_gen_fxattrop (call_frame_t *frame, xlator_t *this, fd_t *fd,  	if (op_errno) {  		GF_ERROR(this, "unwind(-1, %s)", strerror (op_errno)); -		STACK_UNWIND_STRICT (fxattrop, frame, -1, op_errno, NULL); -		return 0; +		STACK_UNWIND_STRICT (fxattrop, frame, -1, op_errno, NULL, xdata); +        return 0;  	}  	STACK_WIND (frame, error_gen_fxattrop_cbk,  		    FIRST_CHILD(this),  		    FIRST_CHILD(this)->fops->fxattrop, -		    fd, flags, dict); -	return 0; +		    fd, flags, dict, xdata); +        return 0;  }  int  error_gen_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); - -	return 0; +	STACK_UNWIND_STRICT (removexattr, frame, op_ret, op_errno, xdata); +        return 0;  }  int  error_gen_removexattr (call_frame_t *frame, xlator_t *this, loc_t *loc, -		       const char *name) +		       const char *name, dict_t *xdata)  {  	int              op_errno = 0;          eg_t            *egp = NULL; @@ -1602,30 +1592,29 @@ error_gen_removexattr (call_frame_t *frame, xlator_t *this, loc_t *loc,  	if (op_errno) {  		GF_ERROR(this, "unwind(-1, %s)", strerror (op_errno)); -		STACK_UNWIND_STRICT (removexattr, frame, -1, op_errno); -		return 0; +		STACK_UNWIND_STRICT (removexattr, frame, -1, op_errno, xdata); +        return 0;  	}  	STACK_WIND (frame, error_gen_removexattr_cbk,  		    FIRST_CHILD(this),  		    FIRST_CHILD(this)->fops->removexattr, -		    loc, name); -	return 0; +		    loc, name, xdata); +        return 0;  }  int  error_gen_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); - -	return 0; +	STACK_UNWIND_STRICT (fremovexattr, frame, op_ret, op_errno, xdata); +        return 0;  }  int  error_gen_fremovexattr (call_frame_t *frame, xlator_t *this, fd_t *fd, -                        const char *name) +                        const char *name, dict_t *xdata)  {  	int              op_errno = 0;          eg_t            *egp = NULL; @@ -1639,30 +1628,30 @@ error_gen_fremovexattr (call_frame_t *frame, xlator_t *this, fd_t *fd,  	if (op_errno) {  		GF_ERROR(this, "unwind(-1, %s)", strerror (op_errno)); -		STACK_UNWIND_STRICT (fremovexattr, frame, -1, op_errno); -		return 0; +		STACK_UNWIND_STRICT (fremovexattr, frame, -1, op_errno, xdata); +        return 0;  	}  	STACK_WIND (frame, error_gen_fremovexattr_cbk,  		    FIRST_CHILD(this),  		    FIRST_CHILD(this)->fops->fremovexattr, -		    fd, name); -	return 0; +		    fd, name, xdata); +        return 0;  }  int  error_gen_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_ret, int32_t op_errno, struct gf_flock *lock, dict_t *xdata)  { -	STACK_UNWIND_STRICT (lk, frame, op_ret, op_errno, lock); -	return 0; +	STACK_UNWIND_STRICT (lk, frame, op_ret, op_errno, lock, xdata); +        return 0;  }  int  error_gen_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              op_errno = 0;          eg_t            *egp = NULL; @@ -1676,32 +1665,31 @@ error_gen_lk (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t cmd,  	if (op_errno) {  		GF_ERROR(this, "unwind(-1, %s)", strerror (op_errno)); -		STACK_UNWIND_STRICT (lk, frame, -1, op_errno, NULL); -		return 0; +		STACK_UNWIND_STRICT (lk, frame, -1, op_errno, NULL, xdata); +        return 0;  	}  	STACK_WIND (frame, error_gen_lk_cbk,  		    FIRST_CHILD(this),  		    FIRST_CHILD(this)->fops->lk, -		    fd, cmd, lock); -	return 0; +		    fd, cmd, lock, xdata); +        return 0;  }  int -error_gen_inodelk_cbk (call_frame_t *frame, void *cookie, -		       xlator_t *this, int32_t op_ret, int32_t op_errno) - +error_gen_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); -	return 0; +	STACK_UNWIND_STRICT (inodelk, frame, op_ret, op_errno, xdata); +        return 0;  }  int  error_gen_inodelk (call_frame_t *frame, xlator_t *this,  		   const char *volume, loc_t *loc, int32_t cmd, -                   struct gf_flock *lock) +                   struct gf_flock *lock, dict_t *xdata)  {  	int              op_errno = 0;          eg_t            *egp = NULL; @@ -1715,32 +1703,31 @@ error_gen_inodelk (call_frame_t *frame, xlator_t *this,  	if (op_errno) {  		GF_ERROR(this, "unwind(-1, %s)", strerror (op_errno)); -		STACK_UNWIND_STRICT (inodelk, frame, -1, op_errno); -		return 0; +		STACK_UNWIND_STRICT (inodelk, frame, -1, op_errno, xdata); +        return 0;  	}  	STACK_WIND (frame, error_gen_inodelk_cbk,  		    FIRST_CHILD(this),  		    FIRST_CHILD(this)->fops->inodelk, -		    volume, loc, cmd, lock); -	return 0; +		    volume, loc, cmd, lock, xdata); +        return 0;  }  int -error_gen_finodelk_cbk (call_frame_t *frame, void *cookie, -			xlator_t *this, int32_t op_ret, int32_t op_errno) - +error_gen_finodelk_cbk (call_frame_t *frame, void *cookie, xlator_t *this, +                        int32_t op_ret, int32_t op_errno, dict_t *xdata)  { -	STACK_UNWIND_STRICT (finodelk, frame, op_ret, op_errno); -	return 0; +	STACK_UNWIND_STRICT (finodelk, frame, op_ret, op_errno, xdata); +        return 0;  }  int  error_gen_finodelk (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)  {  	int              op_errno = 0;          eg_t            *egp = NULL; @@ -1754,32 +1741,31 @@ error_gen_finodelk (call_frame_t *frame, xlator_t *this,  	if (op_errno) {  		GF_ERROR(this, "unwind(-1, %s)", strerror (op_errno)); -		STACK_UNWIND_STRICT (finodelk, frame, -1, op_errno); -		return 0; +		STACK_UNWIND_STRICT (finodelk, frame, -1, op_errno, xdata); +        return 0;  	}  	STACK_WIND (frame, error_gen_finodelk_cbk,  		    FIRST_CHILD(this),  		    FIRST_CHILD(this)->fops->finodelk, -		    volume, fd, cmd, lock); -	return 0; +		    volume, fd, cmd, lock, xdata); +        return 0;  }  int -error_gen_entrylk_cbk (call_frame_t *frame, void *cookie, -		       xlator_t *this, int32_t op_ret, int32_t op_errno) - +error_gen_entrylk_cbk (call_frame_t *frame, void *cookie, xlator_t *this, +                       int32_t op_ret, int32_t op_errno, dict_t *xdata)  { -	STACK_UNWIND_STRICT (entrylk, frame, op_ret, op_errno); -	return 0; +	STACK_UNWIND_STRICT (entrylk, frame, op_ret, op_errno, xdata); +        return 0;  }  int  error_gen_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)  {  	int              op_errno = 0;          eg_t            *egp = NULL; @@ -1793,32 +1779,31 @@ error_gen_entrylk (call_frame_t *frame, xlator_t *this,  	if (op_errno) {  		GF_ERROR(this, "unwind(-1, %s)", strerror (op_errno)); -		STACK_UNWIND_STRICT (entrylk, frame, -1, op_errno); -		return 0; +		STACK_UNWIND_STRICT (entrylk, frame, -1, op_errno, xdata); +        return 0;  	}  	STACK_WIND (frame, error_gen_entrylk_cbk,  		    FIRST_CHILD(this),  		    FIRST_CHILD(this)->fops->entrylk, -		    volume, loc, basename, cmd, type); -	return 0; +		    volume, loc, basename, cmd, type, xdata); +        return 0;  }  int -error_gen_fentrylk_cbk (call_frame_t *frame, void *cookie, -			xlator_t *this, int32_t op_ret, int32_t op_errno) - +error_gen_fentrylk_cbk (call_frame_t *frame, void *cookie, xlator_t *this, +                        int32_t op_ret, int32_t op_errno, dict_t *xdata)  { -	STACK_UNWIND_STRICT (fentrylk, frame, op_ret, op_errno); -	return 0; +	STACK_UNWIND_STRICT (fentrylk, frame, op_ret, op_errno, xdata); +        return 0;  }  int  error_gen_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)  {  	int             op_errno = 0;          eg_t            *egp = NULL; @@ -1832,15 +1817,15 @@ error_gen_fentrylk (call_frame_t *frame, xlator_t *this,  	if (op_errno) {  		GF_ERROR(this, "unwind(-1, %s)", strerror (op_errno)); -		STACK_UNWIND_STRICT (fentrylk, frame, -1, op_errno); -		return 0; +		STACK_UNWIND_STRICT (fentrylk, frame, -1, op_errno, xdata); +                return 0;  	}  	STACK_WIND (frame, error_gen_fentrylk_cbk,  		    FIRST_CHILD(this),  		    FIRST_CHILD(this)->fops->fentrylk, -		    volume, fd, basename, cmd, type); -	return 0; +		    volume, fd, basename, cmd, type, xdata); +        return 0;  } @@ -1852,8 +1837,7 @@ error_gen_getspec_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  		       int32_t op_ret, int32_t op_errno, char *spec_data)  {  	STACK_UNWIND_STRICT (getspec, frame, op_ret, op_errno, spec_data); - -	return 0; +        return 0;  } @@ -1887,16 +1871,17 @@ error_gen_getspec (call_frame_t *frame, xlator_t *this, const char *key,  int  error_gen_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  error_gen_readdir (call_frame_t *frame, xlator_t *this, fd_t *fd, -		   size_t size, off_t off) +		   size_t size, off_t off, dict_t *xdata)  {  	int              op_errno = 0;          eg_t            *egp = NULL; @@ -1910,23 +1895,24 @@ error_gen_readdir (call_frame_t *frame, xlator_t *this, fd_t *fd,  	if (op_errno) {  		GF_ERROR(this, "unwind(-1, %s)", strerror (op_errno)); -		STACK_UNWIND_STRICT (readdir, frame, -1, op_errno, NULL); +		STACK_UNWIND_STRICT (readdir, frame, -1, op_errno, NULL, xdata);  		return 0;  	}  	STACK_WIND (frame, error_gen_readdir_cbk,  		    FIRST_CHILD(this),  		    FIRST_CHILD(this)->fops->readdir, -		    fd, size, off); +		    fd, size, off, xdata);  	return 0;  }  int  error_gen_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;  } @@ -1947,7 +1933,7 @@ error_gen_readdirp (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size,  	if (op_errno) {  		GF_ERROR(this, "unwind(-1, %s)", strerror (op_errno)); -		STACK_UNWIND_STRICT (readdirp, frame, -1, op_errno, NULL); +		STACK_UNWIND_STRICT (readdirp, frame, -1, op_errno, NULL, NULL);  		return 0;  	} @@ -1958,20 +1944,6 @@ error_gen_readdirp (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size,  	return 0;  } - -int -error_gen_closedir (xlator_t *this, fd_t *fd) -{ -	return 0; -} - - -int -error_gen_close (xlator_t *this, fd_t *fd) -{ -	return 0; -} -  int32_t  mem_acct_init (xlator_t *this)  { @@ -2157,11 +2129,6 @@ struct xlator_fops fops = {  	.getspec     = error_gen_getspec,  }; -struct xlator_cbks cbks = { -	.release = error_gen_close, -	.releasedir = error_gen_closedir, -}; -  struct volume_options options[] = {          { .key  = {"failure"},            .type = GF_OPTION_TYPE_INT }, diff --git a/xlators/debug/io-stats/src/io-stats.c b/xlators/debug/io-stats/src/io-stats.c index 5f1e2bb78..7466f82e9 100644 --- a/xlators/debug/io-stats/src/io-stats.c +++ b/xlators/debug/io-stats/src/io-stats.c @@ -1174,11 +1174,12 @@ io_stats_dump_stats_to_dict (xlator_t *this, dict_t *resp,   out:          return ret;  } +  int  io_stats_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 *preparent, struct iatt *postparent, dict_t *xdata)  {          struct ios_fd *iosfd = NULL;          char          *path = NULL; @@ -1231,14 +1232,14 @@ io_stats_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  unwind:          UPDATE_PROFILE_STATS (frame, CREATE);          STACK_UNWIND_STRICT (create, frame, op_ret, op_errno, fd, inode, buf, -                             preparent, postparent); +                             preparent, postparent, xdata);          return 0;  }  int  io_stats_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)  {          struct ios_fd *iosfd = NULL;          char          *path = NULL; @@ -1286,7 +1287,7 @@ io_stats_open_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  unwind:          UPDATE_PROFILE_STATS (frame, OPEN); -        STACK_UNWIND_STRICT (open, frame, op_ret, op_errno, fd); +        STACK_UNWIND_STRICT (open, frame, op_ret, op_errno, fd, xdata);          return 0;  } @@ -1294,10 +1295,10 @@ unwind:  int  io_stats_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)  {          UPDATE_PROFILE_STATS (frame, STAT); -        STACK_UNWIND_STRICT (stat, frame, op_ret, op_errno, buf); +        STACK_UNWIND_STRICT (stat, frame, op_ret, op_errno, buf, xdata);          return 0;  } @@ -1306,7 +1307,7 @@ int  io_stats_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 *buf, struct iobref *iobref) +                    struct iatt *buf, struct iobref *iobref, dict_t *xdata)  {          int              len = 0;          fd_t            *fd = NULL; @@ -1330,7 +1331,7 @@ io_stats_readv_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          }          STACK_UNWIND_STRICT (readv, frame, op_ret, op_errno, -                             vector, count, buf, iobref); +                             vector, count, buf, iobref, xdata);          return 0;  } @@ -1339,7 +1340,7 @@ io_stats_readv_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  io_stats_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)  {          struct ios_stat *iosstat = NULL;          inode_t         *inode   = NULL; @@ -1357,7 +1358,7 @@ io_stats_writev_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  }          } -        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;  } @@ -1367,7 +1368,7 @@ io_stats_writev_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  io_stats_readdirp_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                       int32_t op_ret, int32_t op_errno, gf_dirent_t *buf) +                       int32_t op_ret, int32_t op_errno, gf_dirent_t *buf, dict_t *xdata)  {          struct ios_stat *iosstat = NULL;          inode_t         *inode   = frame->local; @@ -1383,17 +1384,17 @@ io_stats_readdirp_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                iosstat = NULL;          } -        STACK_UNWIND_STRICT (readdirp, frame, op_ret, op_errno, buf); +        STACK_UNWIND_STRICT (readdirp, frame, op_ret, op_errno, buf, xdata);          return 0;  }  int  io_stats_readdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                      int32_t op_ret, int32_t op_errno, gf_dirent_t *buf) +                      int32_t op_ret, int32_t op_errno, gf_dirent_t *buf, dict_t *xdata)  {          UPDATE_PROFILE_STATS (frame, READDIR); -        STACK_UNWIND_STRICT (readdir, frame, op_ret, op_errno, buf); +        STACK_UNWIND_STRICT (readdir, frame, op_ret, op_errno, buf, xdata);          return 0;  } @@ -1401,10 +1402,10 @@ io_stats_readdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  io_stats_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)  {          UPDATE_PROFILE_STATS (frame, FSYNC); -        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;  } @@ -1412,10 +1413,10 @@ io_stats_fsync_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  io_stats_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)  {          UPDATE_PROFILE_STATS (frame, SETATTR); -        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;  } @@ -1423,11 +1424,11 @@ io_stats_setattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  io_stats_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)  {          UPDATE_PROFILE_STATS (frame, UNLINK);          STACK_UNWIND_STRICT (unlink, frame, op_ret, op_errno, -                             preparent, postparent); +                             preparent, postparent, xdata);          return 0;  } @@ -1437,12 +1438,12 @@ int  io_stats_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)  {          UPDATE_PROFILE_STATS (frame, RENAME);          STACK_UNWIND_STRICT (rename, frame, op_ret, op_errno, buf,                               preoldparent, postoldparent, -                             prenewparent, postnewparent); +                             prenewparent, postnewparent, xdata);          return 0;  } @@ -1450,10 +1451,10 @@ io_stats_rename_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  io_stats_readlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                         int32_t op_ret, int32_t op_errno, const char *buf, -                       struct iatt *sbuf) +                       struct iatt *sbuf, dict_t *xdata)  {          UPDATE_PROFILE_STATS (frame, READLINK); -        STACK_UNWIND_STRICT (readlink, frame, op_ret, op_errno, buf, sbuf); +        STACK_UNWIND_STRICT (readlink, frame, op_ret, op_errno, buf, sbuf, xdata);          return 0;  } @@ -1462,10 +1463,10 @@ int  io_stats_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, struct iatt *postparent) +                     dict_t *xdata, struct iatt *postparent)  {          UPDATE_PROFILE_STATS (frame, LOOKUP); -        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;  } @@ -1475,11 +1476,11 @@ int  io_stats_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 *preparent, struct iatt *postparent, dict_t *xdata)  {          UPDATE_PROFILE_STATS (frame, SYMLINK);          STACK_UNWIND_STRICT (symlink, frame, op_ret, op_errno, inode, buf, -                             preparent, postparent); +                             preparent, postparent, xdata);          return 0;  } @@ -1488,11 +1489,11 @@ int  io_stats_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 *preparent, struct iatt *postparent, dict_t *xdata)  {          UPDATE_PROFILE_STATS (frame, MKNOD);          STACK_UNWIND_STRICT (mknod, frame, op_ret, op_errno, inode, buf, -                             preparent, postparent); +                             preparent, postparent, xdata);          return 0;  } @@ -1501,7 +1502,8 @@ int  io_stats_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 *preparent, struct iatt *postparent, +                    dict_t *xdata)  {          struct ios_stat *iosstat = NULL;          char   *path = frame->local; @@ -1524,7 +1526,7 @@ unwind:                  GF_FREE (frame->local);          frame->local = NULL;          STACK_UNWIND_STRICT (mkdir, frame, op_ret, op_errno, inode, buf, -                             preparent, postparent); +                             preparent, postparent, xdata);          return 0;  } @@ -1533,28 +1535,28 @@ int  io_stats_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)  {          UPDATE_PROFILE_STATS (frame, LINK);          STACK_UNWIND_STRICT (link, frame, op_ret, op_errno, inode, buf, -                             preparent, postparent); +                             preparent, postparent, xdata);          return 0;  }  int  io_stats_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)  {          UPDATE_PROFILE_STATS (frame, FLUSH); -        STACK_UNWIND_STRICT (flush, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (flush, frame, op_ret, op_errno, xdata);          return 0;  }  int  io_stats_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)  {          struct ios_stat *iosstat = NULL;          int              ret     = -1; @@ -1570,7 +1572,7 @@ io_stats_opendir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  BUMP_STATS (iosstat, IOS_STATS_TYPE_OPENDIR);  unwind: -        STACK_UNWIND_STRICT (opendir, frame, op_ret, op_errno, fd); +        STACK_UNWIND_STRICT (opendir, frame, op_ret, op_errno, fd, xdata);          return 0;  } @@ -1578,13 +1580,13 @@ unwind:  int  io_stats_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)  {          UPDATE_PROFILE_STATS (frame, RMDIR);          STACK_UNWIND_STRICT (rmdir, frame, op_ret, op_errno, -                             preparent, postparent); +                             preparent, postparent, xdata);          return 0;  } @@ -1592,100 +1594,100 @@ io_stats_rmdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  io_stats_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)  {          UPDATE_PROFILE_STATS (frame, TRUNCATE);          STACK_UNWIND_STRICT (truncate, frame, op_ret, op_errno, -                             prebuf, postbuf); +                             prebuf, postbuf, xdata);          return 0;  }  int  io_stats_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)  {          UPDATE_PROFILE_STATS (frame, STATFS); -        STACK_UNWIND_STRICT (statfs, frame, op_ret, op_errno, buf); +        STACK_UNWIND_STRICT (statfs, frame, op_ret, op_errno, buf, xdata);          return 0;  }  int  io_stats_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)  {          UPDATE_PROFILE_STATS (frame, SETXATTR); -        STACK_UNWIND_STRICT (setxattr, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (setxattr, frame, op_ret, op_errno, xdata);          return 0;  }  int  io_stats_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)  {          UPDATE_PROFILE_STATS (frame, GETXATTR); -        STACK_UNWIND_STRICT (getxattr, frame, op_ret, op_errno, dict); +        STACK_UNWIND_STRICT (getxattr, frame, op_ret, op_errno, dict, xdata);          return 0;  }  int  io_stats_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)  {          UPDATE_PROFILE_STATS (frame, REMOVEXATTR); -        STACK_UNWIND_STRICT (removexattr, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (removexattr, frame, op_ret, op_errno, xdata);          return 0;  }  int  io_stats_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)  {          UPDATE_PROFILE_STATS (frame, FSETXATTR); -        STACK_UNWIND_STRICT (fsetxattr, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (fsetxattr, frame, op_ret, op_errno, xdata);          return 0;  }  int  io_stats_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)  {          UPDATE_PROFILE_STATS (frame, FGETXATTR); -        STACK_UNWIND_STRICT (fgetxattr, frame, op_ret, op_errno, dict); +        STACK_UNWIND_STRICT (fgetxattr, frame, op_ret, op_errno, dict, xdata);          return 0;  }  int  io_stats_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)  {          UPDATE_PROFILE_STATS (frame, FREMOVEXATTR); -        STACK_UNWIND_STRICT (fremovexattr, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (fremovexattr, frame, op_ret, op_errno, xdata);          return 0;  }  int  io_stats_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)  {          UPDATE_PROFILE_STATS (frame, FSYNCDIR); -        STACK_UNWIND_STRICT (fsyncdir, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (fsyncdir, frame, op_ret, op_errno, xdata);          return 0;  }  int  io_stats_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)  {          UPDATE_PROFILE_STATS (frame, ACCESS); -        STACK_UNWIND_STRICT (access, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (access, frame, op_ret, op_errno, xdata);          return 0;  } @@ -1693,92 +1695,92 @@ io_stats_access_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  io_stats_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)  {          UPDATE_PROFILE_STATS (frame, FTRUNCATE);          STACK_UNWIND_STRICT (ftruncate, frame, op_ret, op_errno, -                             prebuf, postbuf); +                             prebuf, postbuf, xdata);          return 0;  }  int  io_stats_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)  {          UPDATE_PROFILE_STATS (frame, FSTAT); -        STACK_UNWIND_STRICT (fstat, frame, op_ret, op_errno, buf); +        STACK_UNWIND_STRICT (fstat, frame, op_ret, op_errno, buf, xdata);          return 0;  }  int  io_stats_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_ret, int32_t op_errno, struct gf_flock *lock, dict_t *xdata)  {          UPDATE_PROFILE_STATS (frame, LK); -        STACK_UNWIND_STRICT (lk, frame, op_ret, op_errno, lock); +        STACK_UNWIND_STRICT (lk, frame, op_ret, op_errno, lock, xdata);          return 0;  }  int  io_stats_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)  {          UPDATE_PROFILE_STATS (frame, ENTRYLK); -        STACK_UNWIND_STRICT (entrylk, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (entrylk, frame, op_ret, op_errno, xdata);          return 0;  }  int  io_stats_xattrop_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)  {          UPDATE_PROFILE_STATS (frame, XATTROP); -        STACK_UNWIND_STRICT (xattrop, frame, op_ret, op_errno, dict); +        STACK_UNWIND_STRICT (xattrop, frame, op_ret, op_errno, dict, xdata);          return 0;  }  int  io_stats_fxattrop_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)  {          UPDATE_PROFILE_STATS (frame, FXATTROP); -        STACK_UNWIND_STRICT (fxattrop, frame, op_ret, op_errno, dict); +        STACK_UNWIND_STRICT (fxattrop, frame, op_ret, op_errno, dict, xdata);          return 0;  }  int  io_stats_inodelk_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)  {          UPDATE_PROFILE_STATS (frame, INODELK); -        STACK_UNWIND_STRICT (inodelk, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (inodelk, frame, op_ret, op_errno, xdata);          return 0;  }  int  io_stats_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)  {          START_FOP_LATENCY (frame);          STACK_WIND (frame, io_stats_entrylk_cbk,                      FIRST_CHILD (this),                      FIRST_CHILD (this)->fops->entrylk, -                    volume, loc, basename, cmd, type); +                    volume, loc, basename, cmd, type, xdata);          return 0;  }  int  io_stats_inodelk (call_frame_t *frame, xlator_t *this, -                  const char *volume, loc_t *loc, int32_t cmd, struct gf_flock *flock) +                  const char *volume, loc_t *loc, int32_t cmd, struct gf_flock *flock, dict_t *xdata)  {          START_FOP_LATENCY (frame); @@ -1786,128 +1788,122 @@ io_stats_inodelk (call_frame_t *frame, xlator_t *this,          STACK_WIND (frame, io_stats_inodelk_cbk,                      FIRST_CHILD (this),                      FIRST_CHILD (this)->fops->inodelk, -                    volume, loc, cmd, flock); +                    volume, loc, cmd, flock, xdata);          return 0;  }  int  io_stats_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)  {          UPDATE_PROFILE_STATS (frame, FINODELK); -        STACK_UNWIND_STRICT (finodelk, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (finodelk, frame, op_ret, op_errno, xdata);          return 0;  }  int -io_stats_finodelk (call_frame_t *frame, xlator_t *this, -                   const char *volume, fd_t *fd, int32_t cmd, struct gf_flock *flock) +io_stats_finodelk (call_frame_t *frame, xlator_t *this, const char *volume, +                   fd_t *fd, int32_t cmd, struct gf_flock *flock, dict_t *xdata)  {          START_FOP_LATENCY (frame);          STACK_WIND (frame, io_stats_finodelk_cbk,                      FIRST_CHILD (this),                      FIRST_CHILD (this)->fops->finodelk, -                    volume, fd, cmd, flock); +                    volume, fd, cmd, flock, xdata);          return 0;  }  int -io_stats_xattrop (call_frame_t *frame, xlator_t *this, -                  loc_t *loc, gf_xattrop_flags_t flags, dict_t *dict) +io_stats_xattrop (call_frame_t *frame, xlator_t *this, loc_t *loc, +                  gf_xattrop_flags_t flags, dict_t *dict, dict_t *xdata)  {          START_FOP_LATENCY (frame);          STACK_WIND (frame, io_stats_xattrop_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->xattrop, -                    loc, flags, dict); - +                    loc, flags, dict, xdata);          return 0;  }  int -io_stats_fxattrop (call_frame_t *frame, xlator_t *this, -                   fd_t *fd, gf_xattrop_flags_t flags, dict_t *dict) +io_stats_fxattrop (call_frame_t *frame, xlator_t *this, fd_t *fd, +                   gf_xattrop_flags_t flags, dict_t *dict, dict_t *xdata)  {          START_FOP_LATENCY (frame);          STACK_WIND (frame, io_stats_fxattrop_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->fxattrop, -                    fd, flags, dict); - +                    fd, flags, dict, xdata);          return 0;  }  int  io_stats_lookup (call_frame_t *frame, xlator_t *this, -                 loc_t *loc, dict_t *xattr_req) +                 loc_t *loc, dict_t *xdata)  {          START_FOP_LATENCY (frame);          STACK_WIND (frame, io_stats_lookup_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->lookup, -                    loc, xattr_req); - +                    loc, xdata);          return 0;  }  int -io_stats_stat (call_frame_t *frame, xlator_t *this, loc_t *loc) +io_stats_stat (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *xdata)  {          START_FOP_LATENCY (frame);          STACK_WIND (frame, io_stats_stat_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->stat, -                    loc); - +                    loc, xdata);          return 0;  }  int  io_stats_readlink (call_frame_t *frame, xlator_t *this, -                   loc_t *loc, size_t size) +                   loc_t *loc, size_t size, dict_t *xdata)  {          START_FOP_LATENCY (frame);          STACK_WIND (frame, io_stats_readlink_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->readlink, -                    loc, size); - +                    loc, size, xdata);          return 0;  }  int -io_stats_mknod (call_frame_t *frame, xlator_t *this, -                loc_t *loc, mode_t mode, dev_t dev, dict_t *params) +io_stats_mknod (call_frame_t *frame, xlator_t *this, loc_t *loc, +                mode_t mode, dev_t dev, mode_t umask, dict_t *xdata)  {          START_FOP_LATENCY (frame);          STACK_WIND (frame, io_stats_mknod_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->mknod, -                    loc, mode, dev, params); - +                    loc, mode, dev, umask, xdata);          return 0;  }  int  io_stats_mkdir (call_frame_t *frame, xlator_t *this, -                loc_t *loc, mode_t mode, dict_t *params) +                loc_t *loc, mode_t mode, mode_t umask, dict_t *xdata)  {          frame->local = gf_strdup (loc->path); @@ -1916,117 +1912,112 @@ io_stats_mkdir (call_frame_t *frame, xlator_t *this,          STACK_WIND (frame, io_stats_mkdir_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->mkdir, -                    loc, mode, params); +                    loc, mode, umask, xdata);          return 0;  }  int  io_stats_unlink (call_frame_t *frame, xlator_t *this, -                 loc_t *loc) +                 loc_t *loc, int xflag, dict_t *xdata)  {          START_FOP_LATENCY (frame);          STACK_WIND (frame, io_stats_unlink_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->unlink, -                    loc); +                    loc, xflag, xdata);          return 0;  }  int  io_stats_rmdir (call_frame_t *frame, xlator_t *this, -                loc_t *loc, int flags) +                loc_t *loc, int flags, dict_t *xdata)  {          START_FOP_LATENCY (frame);          STACK_WIND (frame, io_stats_rmdir_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->rmdir, -                    loc, flags); - +                    loc, flags, xdata);          return 0;  }  int -io_stats_symlink (call_frame_t *frame, xlator_t *this, -                  const char *linkpath, loc_t *loc, dict_t *params) +io_stats_symlink (call_frame_t *frame, xlator_t *this, const char *linkpath, +                  loc_t *loc, mode_t umask, dict_t *xdata)  {          START_FOP_LATENCY (frame);          STACK_WIND (frame, io_stats_symlink_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->symlink, -                    linkpath, loc, params); - +                    linkpath, loc, umask, xdata);          return 0;  }  int  io_stats_rename (call_frame_t *frame, xlator_t *this, -                 loc_t *oldloc, loc_t *newloc) +                 loc_t *oldloc, loc_t *newloc, dict_t *xdata)  {          START_FOP_LATENCY (frame);          STACK_WIND (frame, io_stats_rename_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->rename, -                    oldloc, newloc); - +                    oldloc, newloc, xdata);          return 0;  }  int  io_stats_link (call_frame_t *frame, xlator_t *this, -               loc_t *oldloc, loc_t *newloc) +               loc_t *oldloc, loc_t *newloc, dict_t *xdata)  {          START_FOP_LATENCY (frame);          STACK_WIND (frame, io_stats_link_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->link, -                    oldloc, newloc); +                    oldloc, newloc, xdata);          return 0;  }  int  io_stats_setattr (call_frame_t *frame, xlator_t *this, -                  loc_t *loc, struct iatt *stbuf, int32_t valid) +                  loc_t *loc, struct iatt *stbuf, int32_t valid, dict_t *xdata)  {          START_FOP_LATENCY (frame);          STACK_WIND (frame, io_stats_setattr_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->setattr, -                    loc, stbuf, valid); - +                    loc, stbuf, valid, xdata);          return 0;  }  int  io_stats_truncate (call_frame_t *frame, xlator_t *this, -                   loc_t *loc, off_t offset) +                   loc_t *loc, off_t offset, dict_t *xdata)  {          START_FOP_LATENCY (frame);          STACK_WIND (frame, io_stats_truncate_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->truncate, -                    loc, offset); - +                    loc, offset, xdata);          return 0;  }  int -io_stats_open (call_frame_t *frame, xlator_t *this, -               loc_t *loc, int32_t flags, fd_t *fd, int32_t wbflags) +io_stats_open (call_frame_t *frame, xlator_t *this, loc_t *loc, +               int32_t flags, fd_t *fd, dict_t *xdata)  {          frame->local = gf_strdup (loc->path); @@ -2035,7 +2026,7 @@ io_stats_open (call_frame_t *frame, xlator_t *this,          STACK_WIND (frame, io_stats_open_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->open, -                    loc, flags, fd, wbflags); +                    loc, flags, fd, xdata);          return 0;  } @@ -2043,7 +2034,7 @@ io_stats_open (call_frame_t *frame, xlator_t *this,  int  io_stats_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 umask, fd_t *fd, dict_t *xdata)  {          frame->local = gf_strdup (loc->path); @@ -2052,14 +2043,14 @@ io_stats_create (call_frame_t *frame, xlator_t *this,          STACK_WIND (frame, io_stats_create_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->create, -                    loc, flags, mode, fd, params); +                    loc, flags, mode, umask, fd, xdata);          return 0;  }  int  io_stats_readv (call_frame_t *frame, xlator_t *this, -                fd_t *fd, size_t size, off_t offset, uint32_t flags) +                fd_t *fd, size_t size, off_t offset, uint32_t flags, dict_t *xdata)  {          frame->local = fd; @@ -2068,7 +2059,7 @@ io_stats_readv (call_frame_t *frame, xlator_t *this,          STACK_WIND (frame, io_stats_readv_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->readv, -                    fd, size, offset, flags); +                    fd, size, offset, flags, xdata);          return 0;  } @@ -2077,7 +2068,7 @@ int  io_stats_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)  {          int                 len = 0; @@ -2091,7 +2082,7 @@ io_stats_writev (call_frame_t *frame, xlator_t *this,          STACK_WIND (frame, io_stats_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;  } @@ -2099,42 +2090,42 @@ io_stats_writev (call_frame_t *frame, xlator_t *this,  int  io_stats_statfs (call_frame_t *frame, xlator_t *this, -                 loc_t *loc) +                 loc_t *loc, dict_t *xdata)  {          START_FOP_LATENCY (frame);          STACK_WIND (frame, io_stats_statfs_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->statfs, -                    loc); +                    loc, xdata);          return 0;  }  int  io_stats_flush (call_frame_t *frame, xlator_t *this, -                fd_t *fd) +                fd_t *fd, dict_t *xdata)  {          START_FOP_LATENCY (frame);          STACK_WIND (frame, io_stats_flush_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->flush, -                    fd); +                    fd, xdata);          return 0;  }  int  io_stats_fsync (call_frame_t *frame, xlator_t *this, -                fd_t *fd, int32_t flags) +                fd_t *fd, int32_t flags, dict_t *xdata)  {          START_FOP_LATENCY (frame);          STACK_WIND (frame, io_stats_fsync_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->fsync, -                    fd, flags); +                    fd, flags, xdata);          return 0;  } @@ -2183,7 +2174,7 @@ conditional_dump (dict_t *dict, char *key, data_t *value, void *data)  int  io_stats_setxattr (call_frame_t *frame, xlator_t *this,                     loc_t *loc, dict_t *dict, -                   int32_t flags) +                   int32_t flags, dict_t *xdata)  {          struct {                  xlator_t     *this; @@ -2202,36 +2193,35 @@ io_stats_setxattr (call_frame_t *frame, xlator_t *this,          STACK_WIND (frame, io_stats_setxattr_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->setxattr, -                    loc, dict, flags); +                    loc, dict, flags, xdata);          return 0;  }  int  io_stats_getxattr (call_frame_t *frame, xlator_t *this, -                   loc_t *loc, const char *name) +                   loc_t *loc, const char *name, dict_t *xdata)  {          START_FOP_LATENCY (frame);          STACK_WIND (frame, io_stats_getxattr_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->getxattr, -                    loc, name); +                    loc, name, xdata);          return 0;  }  int  io_stats_removexattr (call_frame_t *frame, xlator_t *this, -                      loc_t *loc, const char *name) +                      loc_t *loc, const char *name, dict_t *xdata)  {          START_FOP_LATENCY (frame);          STACK_WIND (frame, io_stats_removexattr_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->removexattr, -                    loc, name); - +                    loc, name, xdata);          return 0;  } @@ -2239,50 +2229,49 @@ io_stats_removexattr (call_frame_t *frame, xlator_t *this,  int  io_stats_fsetxattr (call_frame_t *frame, xlator_t *this,                      fd_t *fd, dict_t *dict, -                    int32_t flags) +                    int32_t flags, dict_t *xdata)  {          START_FOP_LATENCY (frame);          STACK_WIND (frame, io_stats_fsetxattr_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->fsetxattr, -                    fd, dict, flags); +                    fd, dict, flags, xdata);          return 0;  }  int  io_stats_fgetxattr (call_frame_t *frame, xlator_t *this, -                    fd_t *fd, const char *name) +                    fd_t *fd, const char *name, dict_t *xdata)  {          START_FOP_LATENCY (frame);          STACK_WIND (frame, io_stats_fgetxattr_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->fgetxattr, -                    fd, name); +                    fd, name, xdata);          return 0;  }  int  io_stats_fremovexattr (call_frame_t *frame, xlator_t *this, -                       fd_t *fd, const char *name) +                       fd_t *fd, const char *name, dict_t *xdata)  {          START_FOP_LATENCY (frame);          STACK_WIND (frame, io_stats_fremovexattr_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->fremovexattr, -                    fd, name); - +                    fd, name, xdata);          return 0;  }  int  io_stats_opendir (call_frame_t *frame, xlator_t *this, -                  loc_t *loc, fd_t *fd) +                  loc_t *loc, fd_t *fd, dict_t *xdata)  {          START_FOP_LATENCY (frame); @@ -2290,7 +2279,7 @@ io_stats_opendir (call_frame_t *frame, xlator_t *this,          STACK_WIND (frame, io_stats_opendir_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->opendir, -                    loc, fd); +                    loc, fd, xdata);          return 0;  } @@ -2305,107 +2294,104 @@ io_stats_readdirp (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->readdirp,                      fd, size, offset, dict); -          return 0;  }  int  io_stats_readdir (call_frame_t *frame, xlator_t *this, -                  fd_t *fd, size_t size, off_t offset) +                  fd_t *fd, size_t size, off_t offset, dict_t *xdata)  {          START_FOP_LATENCY (frame);          STACK_WIND (frame, io_stats_readdir_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->readdir, -                    fd, size, offset); - +                    fd, size, offset, xdata);          return 0;  }  int  io_stats_fsyncdir (call_frame_t *frame, xlator_t *this, -                   fd_t *fd, int32_t datasync) +                   fd_t *fd, int32_t datasync, dict_t *xdata)  {          START_FOP_LATENCY (frame);          STACK_WIND (frame, io_stats_fsyncdir_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->fsyncdir, -                    fd, datasync); +                    fd, datasync, xdata);          return 0;  }  int  io_stats_access (call_frame_t *frame, xlator_t *this, -                 loc_t *loc, int32_t mask) +                 loc_t *loc, int32_t mask, dict_t *xdata)  {          START_FOP_LATENCY (frame);          STACK_WIND (frame, io_stats_access_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->access, -                    loc, mask); +                    loc, mask, xdata);          return 0;  }  int  io_stats_ftruncate (call_frame_t *frame, xlator_t *this, -                    fd_t *fd, off_t offset) +                    fd_t *fd, off_t offset, dict_t *xdata)  {          START_FOP_LATENCY (frame);          STACK_WIND (frame, io_stats_ftruncate_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->ftruncate, -                    fd, offset); - +                    fd, offset, xdata);          return 0;  }  int  io_stats_fsetattr (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)  {          START_FOP_LATENCY (frame);          STACK_WIND (frame, io_stats_setattr_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->fsetattr, -                    fd, stbuf, valid); +                    fd, stbuf, valid, xdata);          return 0;  }  int  io_stats_fstat (call_frame_t *frame, xlator_t *this, -                fd_t *fd) +                fd_t *fd, dict_t *xdata)  {          START_FOP_LATENCY (frame);          STACK_WIND (frame, io_stats_fstat_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->fstat, -                    fd); +                    fd, xdata);          return 0;  }  int  io_stats_lk (call_frame_t *frame, xlator_t *this, -             fd_t *fd, int32_t cmd, struct gf_flock *lock) +             fd_t *fd, int32_t cmd, struct gf_flock *lock, dict_t *xdata)  {          START_FOP_LATENCY (frame);          STACK_WIND (frame, io_stats_lk_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->lk, -                    fd, cmd, lock); +                    fd, cmd, lock, xdata);          return 0;  } diff --git a/xlators/debug/trace/src/trace.c b/xlators/debug/trace/src/trace.c index 09c58bdfd..aada90d38 100644 --- a/xlators/debug/trace/src/trace.c +++ b/xlators/debug/trace/src/trace.c @@ -96,7 +96,7 @@ int  trace_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 *preparent, struct iatt *postparent, dict_t *xdata)  {          char  *statstr = NULL;          char  *preparentstr = NULL; @@ -133,14 +133,14 @@ trace_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          frame->local = NULL;          STACK_UNWIND_STRICT (create, frame, op_ret, op_errno, fd, inode, buf, -                             preparent, postparent); +                             preparent, postparent, xdata);          return 0;  }  int  trace_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)  {          if (trace_fop_names[GF_FOP_OPEN].enabled) { @@ -154,14 +154,14 @@ trace_open_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  fd_ctx_set (fd, this, 0);          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;  }  int  trace_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)  {          char *statstr = NULL;          if (trace_fop_names[GF_FOP_STAT].enabled) { @@ -182,7 +182,7 @@ trace_stat_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          }          frame->local = NULL; -        STACK_UNWIND_STRICT (stat, frame, op_ret, op_errno, buf); +        STACK_UNWIND_STRICT (stat, frame, op_ret, op_errno, buf, xdata);          return 0;  } @@ -190,7 +190,7 @@ trace_stat_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  trace_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 *buf, struct iobref *iobref) +                 int32_t count, struct iatt *buf, struct iobref *iobref, dict_t *xdata)  {          char  *statstr = NULL; @@ -214,7 +214,7 @@ trace_readv_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          frame->local = NULL;          STACK_UNWIND_STRICT (readv, frame, op_ret, op_errno, vector, count, -                             buf, iobref); +                             buf, iobref, xdata);          return 0;  } @@ -222,7 +222,7 @@ trace_readv_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  trace_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)  {          char  *preopstr = NULL;          char  *postopstr = NULL; @@ -252,7 +252,7 @@ trace_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;  } @@ -260,7 +260,7 @@ trace_writev_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  trace_readdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                   int32_t op_ret, int32_t op_errno, gf_dirent_t *buf) +                   int32_t op_ret, int32_t op_errno, gf_dirent_t *buf, dict_t *xdata)  {          if (trace_fop_names[GF_FOP_READDIR].enabled) {                  gf_log (this->name, GF_LOG_INFO, @@ -269,7 +269,7 @@ trace_readdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          }          frame->local = NULL; -        STACK_UNWIND_STRICT (readdir, frame, op_ret, op_errno, buf); +        STACK_UNWIND_STRICT (readdir, frame, op_ret, op_errno, buf, xdata);          return 0;  } @@ -277,7 +277,7 @@ trace_readdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  trace_readdirp_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                    int32_t op_ret, int32_t op_errno, gf_dirent_t *buf) +                    int32_t op_ret, int32_t op_errno, gf_dirent_t *buf, dict_t *xdata)  {          if (trace_fop_names[GF_FOP_READDIRP].enabled) {                  gf_log (this->name, GF_LOG_INFO, @@ -286,7 +286,7 @@ trace_readdirp_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          }          frame->local = NULL; -        STACK_UNWIND_STRICT (readdirp, frame, op_ret, op_errno, buf); +        STACK_UNWIND_STRICT (readdirp, frame, op_ret, op_errno, buf, xdata);          return 0;  } @@ -295,7 +295,7 @@ trace_readdirp_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  trace_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)  {          char  *preopstr = NULL;          char  *postopstr = NULL; @@ -325,7 +325,7 @@ trace_fsync_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          }          frame->local = NULL; -        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;  } @@ -334,7 +334,7 @@ trace_fsync_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  trace_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 *statpre, struct iatt *statpost, dict_t *xdata)  {          char  *preopstr = NULL;          char  *postopstr = NULL; @@ -363,7 +363,7 @@ trace_setattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          }          frame->local = NULL; -        STACK_UNWIND_STRICT (setattr, frame, op_ret, op_errno, statpre, statpost); +        STACK_UNWIND_STRICT (setattr, frame, op_ret, op_errno, statpre, statpost, xdata);          return 0;  } @@ -371,7 +371,7 @@ trace_setattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  trace_fsetattr_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 *statpre, struct iatt *statpost, dict_t *xdata)  {          char  *preopstr = NULL;          char  *postopstr = NULL; @@ -401,7 +401,7 @@ trace_fsetattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          frame->local = NULL;          STACK_UNWIND_STRICT (fsetattr, frame, op_ret, op_errno, -                             statpre, statpost); +                             statpre, statpost, xdata);          return 0;  } @@ -409,7 +409,7 @@ trace_fsetattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  trace_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)  {          char *preparentstr = NULL;          char *postparentstr = NULL; @@ -439,7 +439,7 @@ trace_unlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          frame->local = NULL;          STACK_UNWIND_STRICT (unlink, frame, op_ret, op_errno, -                             preparent, postparent); +                             preparent, postparent, xdata);          return 0;  } @@ -448,7 +448,7 @@ int  trace_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)  {          char  *statstr = NULL;          char  *preoldparentstr = NULL; @@ -495,7 +495,7 @@ trace_rename_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          frame->local = NULL;          STACK_UNWIND_STRICT (rename, frame, op_ret, op_errno, buf,                               preoldparent, postoldparent, -                             prenewparent, postnewparent); +                             prenewparent, postnewparent, xdata);          return 0;  } @@ -503,7 +503,7 @@ trace_rename_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  trace_readlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                      int32_t op_ret, int32_t op_errno, -                    const char *buf, struct iatt *stbuf) +                    const char *buf, struct iatt *stbuf, dict_t *xdata)  {          char *statstr = NULL; @@ -527,7 +527,7 @@ trace_readlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          }          frame->local = NULL; -        STACK_UNWIND_STRICT (readlink, frame, op_ret, op_errno, buf, stbuf); +        STACK_UNWIND_STRICT (readlink, frame, op_ret, op_errno, buf, stbuf, xdata);          return 0;  } @@ -536,7 +536,7 @@ int  trace_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, struct iatt *postparent) +                  dict_t *xdata, struct iatt *postparent)  {          char  *statstr = NULL;          char  *postparentstr = NULL; @@ -569,7 +569,7 @@ trace_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          frame->local = NULL;          STACK_UNWIND_STRICT (lookup, frame, op_ret, op_errno, inode, buf, -                             xattr, postparent); +                             xdata, postparent);          return 0;  } @@ -578,7 +578,7 @@ int  trace_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 *preparent, struct iatt *postparent, dict_t *xdata)  {          char  *statstr = NULL;          char  *preparentstr = NULL; @@ -615,7 +615,7 @@ trace_symlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          frame->local = NULL;          STACK_UNWIND_STRICT (symlink, frame, op_ret, op_errno, inode, buf, -                             preparent, postparent); +                             preparent, postparent, xdata);          return 0;  } @@ -624,7 +624,7 @@ int  trace_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 *preparent, struct iatt *postparent, dict_t *xdata)  {          char *statstr = NULL;          char *preparentstr = NULL; @@ -660,7 +660,7 @@ trace_mknod_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          frame->local = NULL;          STACK_UNWIND_STRICT (mknod, frame, op_ret, op_errno, inode, buf, -                             preparent, postparent); +                             preparent, postparent, xdata);          return 0;  } @@ -669,7 +669,7 @@ int  trace_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 *preparent, struct iatt *postparent, dict_t *xdata)  {          char  *statstr = NULL;          char  *preparentstr = NULL; @@ -705,7 +705,7 @@ trace_mkdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          frame->local = NULL;          STACK_UNWIND_STRICT (mkdir, frame, op_ret, op_errno, inode, buf, -                             preparent, postparent); +                             preparent, postparent, xdata);          return 0;  } @@ -714,7 +714,7 @@ int  trace_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)  {          char  *statstr = NULL;          char  *preparentstr = NULL; @@ -750,14 +750,14 @@ trace_link_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          frame->local = NULL;          STACK_UNWIND_STRICT (link, frame, op_ret, op_errno, inode, buf, -                             preparent, postparent); +                             preparent, postparent, xdata);          return 0;  }  int  trace_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)  {          if (trace_fop_names[GF_FOP_FLUSH].enabled) {                  gf_log (this->name, GF_LOG_INFO, @@ -767,14 +767,14 @@ trace_flush_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          }          frame->local = NULL; -        STACK_UNWIND_STRICT (flush, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (flush, frame, op_ret, op_errno, xdata);          return 0;  }  int  trace_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)  {          if (trace_fop_names[GF_FOP_OPENDIR].enabled) {                  gf_log (this->name, GF_LOG_INFO, @@ -788,7 +788,7 @@ trace_opendir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  fd_ctx_set (fd, this, 0);          frame->local = NULL; -        STACK_UNWIND_STRICT (opendir, frame, op_ret, op_errno, fd); +        STACK_UNWIND_STRICT (opendir, frame, op_ret, op_errno, fd, xdata);          return 0;  } @@ -796,7 +796,7 @@ trace_opendir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  trace_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)  {          char  *preparentstr = NULL;          char  *postparentstr = NULL; @@ -827,7 +827,7 @@ trace_rmdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          frame->local = NULL;          STACK_UNWIND_STRICT (rmdir, frame, op_ret, op_errno, -                             preparent, postparent); +                             preparent, postparent, xdata);          return 0;  } @@ -835,7 +835,7 @@ trace_rmdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  trace_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)  {          char  *preopstr = NULL;          char  *postopstr = NULL; @@ -865,14 +865,14 @@ trace_truncate_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          }          frame->local = NULL; -        STACK_UNWIND_STRICT (truncate, frame, op_ret, op_errno, prebuf, postbuf); +        STACK_UNWIND_STRICT (truncate, frame, op_ret, op_errno, prebuf, postbuf, xdata);          return 0;  }  int  trace_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)  {          if (trace_fop_names[GF_FOP_STATFS].enabled) {                  if (op_ret >= 0) { @@ -892,14 +892,14 @@ trace_statfs_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          }          frame->local = NULL; -        STACK_UNWIND_STRICT (statfs, frame, op_ret, op_errno, buf); +        STACK_UNWIND_STRICT (statfs, frame, op_ret, op_errno, buf, xdata);          return 0;  }  int  trace_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)  {          if (trace_fop_names[GF_FOP_SETXATTR].enabled) {                  gf_log (this->name, GF_LOG_INFO, @@ -909,14 +909,14 @@ trace_setxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          }          frame->local = NULL; -        STACK_UNWIND_STRICT (setxattr, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (setxattr, frame, op_ret, op_errno, xdata);          return 0;  }  int  trace_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)  {          if (trace_fop_names[GF_FOP_GETXATTR].enabled) {                  gf_log (this->name, GF_LOG_INFO, @@ -926,14 +926,14 @@ trace_getxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          }          frame->local = NULL; -        STACK_UNWIND_STRICT (getxattr, frame, op_ret, op_errno, dict); +        STACK_UNWIND_STRICT (getxattr, frame, op_ret, op_errno, dict, xdata);          return 0;  }  int  trace_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)  {          if (trace_fop_names[GF_FOP_FSETXATTR].enabled) {                  gf_log (this->name, GF_LOG_INFO, @@ -943,14 +943,14 @@ trace_fsetxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          }          frame->local = NULL; -        STACK_UNWIND_STRICT (fsetxattr, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (fsetxattr, frame, op_ret, op_errno, xdata);          return 0;  }  int  trace_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)  {          if (trace_fop_names[GF_FOP_FGETXATTR].enabled) {                  gf_log (this->name, GF_LOG_INFO, @@ -960,14 +960,14 @@ trace_fgetxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          }          frame->local = NULL; -        STACK_UNWIND_STRICT (fgetxattr, frame, op_ret, op_errno, dict); +        STACK_UNWIND_STRICT (fgetxattr, frame, op_ret, op_errno, dict, xdata);          return 0;  }  int  trace_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)  {          if (trace_fop_names[GF_FOP_REMOVEXATTR].enabled) {                  gf_log (this->name, GF_LOG_INFO, @@ -977,7 +977,7 @@ trace_removexattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          }          frame->local = NULL; -        STACK_UNWIND_STRICT (removexattr, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (removexattr, frame, op_ret, op_errno, xdata);          return 0;  } @@ -985,7 +985,7 @@ trace_removexattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  trace_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)  {          if (trace_fop_names[GF_FOP_FSYNCDIR].enabled) {                  gf_log (this->name, GF_LOG_INFO, @@ -995,14 +995,14 @@ trace_fsyncdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          }          frame->local = NULL; -        STACK_UNWIND_STRICT (fsyncdir, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (fsyncdir, frame, op_ret, op_errno, xdata);          return 0;  }  int  trace_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)  {          if (trace_fop_names[GF_FOP_ACCESS].enabled) {                  gf_log (this->name, GF_LOG_INFO, @@ -1012,7 +1012,7 @@ trace_access_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          }          frame->local = NULL; -        STACK_UNWIND_STRICT (access, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (access, frame, op_ret, op_errno, xdata);          return 0;  } @@ -1020,7 +1020,7 @@ trace_access_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  trace_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)  {          char  *prebufstr = NULL;          char  *postbufstr = NULL; @@ -1051,14 +1051,14 @@ trace_ftruncate_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          }          frame->local = NULL; -        STACK_UNWIND_STRICT (ftruncate, frame, op_ret, op_errno, prebuf, postbuf); +        STACK_UNWIND_STRICT (ftruncate, frame, op_ret, op_errno, prebuf, postbuf, xdata);          return 0;  }  int  trace_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)  {          char *statstr = NULL; @@ -1081,14 +1081,14 @@ trace_fstat_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          }          frame->local = NULL; -        STACK_UNWIND_STRICT (fstat, frame, op_ret, op_errno, buf); +        STACK_UNWIND_STRICT (fstat, frame, op_ret, op_errno, buf, xdata);          return 0;  }  int  trace_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_ret, int32_t op_errno, struct gf_flock *lock, dict_t *xdata)  {          if (trace_fop_names[GF_FOP_LK].enabled) {                  if (op_ret >= 0) { @@ -1107,7 +1107,7 @@ trace_lk_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          }          frame->local = NULL; -        STACK_UNWIND_STRICT (lk, frame, op_ret, op_errno, lock); +        STACK_UNWIND_STRICT (lk, frame, op_ret, op_errno, lock, xdata);          return 0;  } @@ -1115,7 +1115,7 @@ trace_lk_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  trace_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)  {          if (trace_fop_names[GF_FOP_ENTRYLK].enabled) {                  gf_log (this->name, GF_LOG_INFO, @@ -1125,13 +1125,13 @@ trace_entrylk_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          }          frame->local = NULL; -        STACK_UNWIND_STRICT (entrylk, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (entrylk, frame, op_ret, op_errno, xdata);          return 0;  }  int  trace_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)  {          if (trace_fop_names[GF_FOP_FENTRYLK].enabled) {                  gf_log (this->name, GF_LOG_INFO, @@ -1141,14 +1141,14 @@ trace_fentrylk_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          }          frame->local = NULL; -        STACK_UNWIND_STRICT (fentrylk, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (fentrylk, frame, op_ret, op_errno, xdata);          return 0;  }  int  trace_xattrop_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)  {          if (trace_fop_names[GF_FOP_XATTROP].enabled) {                  gf_log (this->name, GF_LOG_INFO, @@ -1158,14 +1158,14 @@ trace_xattrop_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          }          frame->local = NULL; -        STACK_UNWIND_STRICT (xattrop, frame, op_ret, op_errno, dict); +        STACK_UNWIND_STRICT (xattrop, frame, op_ret, op_errno, dict, xdata);          return 0;  }  int  trace_fxattrop_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)  {          if (trace_fop_names[GF_FOP_FXATTROP].enabled) {                  gf_log (this->name, GF_LOG_INFO, @@ -1175,14 +1175,14 @@ trace_fxattrop_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          }          frame->local = NULL; -        STACK_UNWIND_STRICT (fxattrop, frame, op_ret, op_errno, dict); +        STACK_UNWIND_STRICT (fxattrop, frame, op_ret, op_errno, dict, xdata);          return 0;  }  int  trace_inodelk_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)  {          if (trace_fop_names[GF_FOP_INODELK].enabled) {                  gf_log (this->name, GF_LOG_INFO, @@ -1192,13 +1192,13 @@ trace_inodelk_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          }          frame->local = NULL; -        STACK_UNWIND_STRICT (inodelk, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (inodelk, frame, op_ret, op_errno, xdata);          return 0;  }  int  trace_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)  {          if (trace_fop_names[GF_FOP_FINODELK].enabled) {                  gf_log (this->name, GF_LOG_INFO, @@ -1207,7 +1207,7 @@ trace_finodelk_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          }          frame->local = NULL; -        STACK_UNWIND_STRICT (finodelk, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (finodelk, frame, op_ret, op_errno, xdata);          return 0;  } @@ -1215,7 +1215,7 @@ trace_finodelk_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  trace_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) +                     uint32_t weak_checksum, uint8_t *strong_checksum, dict_t *xdata)  {          if (trace_fop_names[GF_FOP_RCHECKSUM].enabled) {                  gf_log (this->name, GF_LOG_INFO, @@ -1225,7 +1225,7 @@ trace_rchecksum_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          frame->local = NULL;          STACK_UNWIND_STRICT (rchecksum, frame, op_ret, op_errno, weak_checksum, -                             strong_checksum); +                             strong_checksum, xdata);          return 0;  } @@ -1235,7 +1235,7 @@ trace_rchecksum_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  trace_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)  {          if (trace_fop_names[GF_FOP_ENTRYLK].enabled) {                  gf_log (this->name, GF_LOG_INFO, @@ -1251,14 +1251,14 @@ trace_entrylk (call_frame_t *frame, xlator_t *this,          STACK_WIND (frame, trace_entrylk_cbk,                      FIRST_CHILD (this),                      FIRST_CHILD (this)->fops->entrylk, -                    volume, loc, basename, cmd, type); +                    volume, loc, basename, cmd, type, xdata);          return 0;  }  int  trace_inodelk (call_frame_t *frame, xlator_t *this, const char *volume, -               loc_t *loc, int32_t cmd, struct gf_flock *flock) +               loc_t *loc, int32_t cmd, struct gf_flock *flock, dict_t *xdata)  {          char *cmd_str = NULL;          char *type_str = NULL; @@ -1320,14 +1320,14 @@ trace_inodelk (call_frame_t *frame, xlator_t *this, const char *volume,          STACK_WIND (frame, trace_inodelk_cbk,                      FIRST_CHILD (this),                      FIRST_CHILD (this)->fops->inodelk, -                    volume, loc, cmd, flock); +                    volume, loc, cmd, flock, xdata);          return 0;  }  int  trace_finodelk (call_frame_t *frame, xlator_t *this, const char *volume, -                fd_t *fd, int32_t cmd, struct gf_flock *flock) +                fd_t *fd, int32_t cmd, struct gf_flock *flock, dict_t *xdata)  {          char *cmd_str = NULL, *type_str = NULL; @@ -1387,14 +1387,14 @@ trace_finodelk (call_frame_t *frame, xlator_t *this, const char *volume,          STACK_WIND (frame, trace_finodelk_cbk,                      FIRST_CHILD (this),                      FIRST_CHILD (this)->fops->finodelk, -                    volume, fd, cmd, flock); +                    volume, fd, cmd, flock, xdata);          return 0;  }  int  trace_xattrop (call_frame_t *frame, xlator_t *this, loc_t *loc, -               gf_xattrop_flags_t flags, dict_t *dict) +               gf_xattrop_flags_t flags, dict_t *dict, dict_t *xdata)  {          if (trace_fop_names[GF_FOP_XATTROP].enabled) {                  gf_log (this->name, GF_LOG_INFO, @@ -1407,7 +1407,7 @@ trace_xattrop (call_frame_t *frame, xlator_t *this, loc_t *loc,          STACK_WIND (frame, trace_xattrop_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->xattrop, -                    loc, flags, dict); +                    loc, flags, dict, xdata);          return 0;  } @@ -1415,7 +1415,7 @@ trace_xattrop (call_frame_t *frame, xlator_t *this, loc_t *loc,  int  trace_fxattrop (call_frame_t *frame, xlator_t *this, fd_t *fd, -                gf_xattrop_flags_t flags, dict_t *dict) +                gf_xattrop_flags_t flags, dict_t *dict, dict_t *xdata)  {          if (trace_fop_names[GF_FOP_FXATTROP].enabled) {                  gf_log (this->name, GF_LOG_INFO, @@ -1428,7 +1428,7 @@ trace_fxattrop (call_frame_t *frame, xlator_t *this, fd_t *fd,          STACK_WIND (frame, trace_fxattrop_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->fxattrop, -                    fd, flags, dict); +                    fd, flags, dict, xdata);          return 0;  } @@ -1436,7 +1436,7 @@ trace_fxattrop (call_frame_t *frame, xlator_t *this, fd_t *fd,  int  trace_lookup (call_frame_t *frame, xlator_t *this, -              loc_t *loc, dict_t *xattr_req) +              loc_t *loc, dict_t *xdata)  {          if (trace_fop_names[GF_FOP_LOOKUP].enabled) {                  /* TODO: print all the keys mentioned in xattr_req */ @@ -1450,14 +1450,14 @@ trace_lookup (call_frame_t *frame, xlator_t *this,          STACK_WIND (frame, trace_lookup_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->lookup, -                    loc, xattr_req); +                    loc, xdata);          return 0;  }  int -trace_stat (call_frame_t *frame, xlator_t *this, loc_t *loc) +trace_stat (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *xdata)  {          if (trace_fop_names[GF_FOP_STAT].enabled) {                  gf_log (this->name, GF_LOG_INFO, @@ -1470,14 +1470,14 @@ trace_stat (call_frame_t *frame, xlator_t *this, loc_t *loc)          STACK_WIND (frame, trace_stat_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->stat, -                    loc); +                    loc, xdata);          return 0;  }  int -trace_readlink (call_frame_t *frame, xlator_t *this, loc_t *loc, size_t size) +trace_readlink (call_frame_t *frame, xlator_t *this, loc_t *loc, size_t size, dict_t *xdata)  {          if (trace_fop_names[GF_FOP_READLINK].enabled) {                  gf_log (this->name, GF_LOG_INFO, @@ -1490,7 +1490,7 @@ trace_readlink (call_frame_t *frame, xlator_t *this, loc_t *loc, size_t size)          STACK_WIND (frame, trace_readlink_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->readlink, -                    loc, size); +                    loc, size, xdata);          return 0;  } @@ -1498,19 +1498,20 @@ trace_readlink (call_frame_t *frame, xlator_t *this, loc_t *loc, size_t size)  int  trace_mknod (call_frame_t *frame, xlator_t *this, loc_t *loc, -             mode_t mode, dev_t dev, dict_t *params) +             mode_t mode, dev_t dev, mode_t umask, dict_t *xdata)  {          if (trace_fop_names[GF_FOP_MKNOD].enabled) {                  gf_log (this->name, GF_LOG_INFO, -                        "%"PRId64": gfid=%s path=%s mode=%d dev=%"GF_PRI_DEV")", +                        "%"PRId64": gfid=%s path=%s mode=0%o umask=0%o " +                        "dev=%"GF_PRI_DEV")",                          frame->root->unique, uuid_utoa (loc->inode->gfid), -                        loc->path, mode, dev); +                        loc->path, mode, umask, dev);          }          STACK_WIND (frame, trace_mknod_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->mknod, -                    loc, mode, dev, params); +                    loc, mode, dev, umask, xdata);          return 0;  } @@ -1518,44 +1519,46 @@ trace_mknod (call_frame_t *frame, xlator_t *this, loc_t *loc,  int  trace_mkdir (call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode, -             dict_t *params) +             mode_t umask, dict_t *xdata)  {          if (trace_fop_names[GF_FOP_MKDIR].enabled) {                  gf_log (this->name, GF_LOG_INFO, -                        "%"PRId64": gfid=%s path=%s mode=%d", +                        "%"PRId64": gfid=%s path=%s mode=0%o umask=0%o",                          frame->root->unique, uuid_utoa (loc->inode->gfid), -                        loc->path, mode); +                        loc->path, mode, umask);          }          STACK_WIND (frame, trace_mkdir_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->mkdir, -                    loc, mode, params); +                    loc, mode, umask, xdata);          return 0;  }  int -trace_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc) +trace_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc, int xflag, +              dict_t *xdata)  {          if (trace_fop_names[GF_FOP_UNLINK].enabled) {                  gf_log (this->name, GF_LOG_INFO, -                        "%"PRId64": gfid=%s path=%s", +                        "%"PRId64": gfid=%s path=%s flag=%d",                          frame->root->unique, uuid_utoa (loc->inode->gfid), -                        loc->path); +                        loc->path, xflag);                  frame->local = loc->inode->gfid;          }          STACK_WIND (frame, trace_unlink_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->unlink, -                    loc); +                    loc, xflag, xdata);          return 0;  }  int -trace_rmdir (call_frame_t *frame, xlator_t *this, loc_t *loc, int flags) +trace_rmdir (call_frame_t *frame, xlator_t *this, loc_t *loc, int flags, +             dict_t *xdata)  {          if (trace_fop_names[GF_FOP_RMDIR].enabled) {                  gf_log (this->name, GF_LOG_INFO, @@ -1568,7 +1571,7 @@ trace_rmdir (call_frame_t *frame, xlator_t *this, loc_t *loc, int flags)          STACK_WIND (frame, trace_rmdir_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->rmdir, -                    loc, flags); +                    loc, flags, xdata);          return 0;  } @@ -1576,26 +1579,27 @@ trace_rmdir (call_frame_t *frame, xlator_t *this, loc_t *loc, int flags)  int  trace_symlink (call_frame_t *frame, xlator_t *this, const char *linkpath, -               loc_t *loc, dict_t *params) +               loc_t *loc, mode_t umask, dict_t *xdata)  {          if (trace_fop_names[GF_FOP_SYMLINK].enabled) {                  gf_log (this->name, GF_LOG_INFO, -                        "%"PRId64": gfid=%s linkpath=%s, path=%s", +                        "%"PRId64": gfid=%s linkpath=%s, path=%s umask=0%o",                          frame->root->unique, uuid_utoa (loc->inode->gfid), -                        linkpath, loc->path); +                        linkpath, loc->path, umask);          }          STACK_WIND (frame, trace_symlink_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->symlink, -                    linkpath, loc, params); +                    linkpath, loc, umask, xdata);          return 0;  }  int -trace_rename (call_frame_t *frame, xlator_t *this, loc_t *oldloc, loc_t *newloc) +trace_rename (call_frame_t *frame, xlator_t *this, loc_t *oldloc, loc_t *newloc, +              dict_t *xdata)  {          char oldgfid[50] = {0,};          char newgfid[50] = {0,}; @@ -1618,14 +1622,15 @@ trace_rename (call_frame_t *frame, xlator_t *this, loc_t *oldloc, loc_t *newloc)          STACK_WIND (frame, trace_rename_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->rename, -                    oldloc, newloc); +                    oldloc, newloc, xdata);          return 0;  }  int -trace_link (call_frame_t *frame, xlator_t *this, loc_t *oldloc, loc_t *newloc) +trace_link (call_frame_t *frame, xlator_t *this, loc_t *oldloc, loc_t *newloc, +            dict_t *xdata)  {          char oldgfid[50] = {0,};          char newgfid[50] = {0,}; @@ -1648,14 +1653,14 @@ trace_link (call_frame_t *frame, xlator_t *this, loc_t *oldloc, loc_t *newloc)          STACK_WIND (frame, trace_link_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->link, -                    oldloc, newloc); +                    oldloc, newloc, xdata);          return 0;  }  int  trace_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 ia_time          = 0;          char     actime_str[256]  = {0,}; @@ -1696,7 +1701,7 @@ trace_setattr (call_frame_t *frame, xlator_t *this, loc_t *loc,          STACK_WIND (frame, trace_setattr_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->setattr, -                    loc, stbuf, valid); +                    loc, stbuf, valid, xdata);          return 0;  } @@ -1704,7 +1709,7 @@ trace_setattr (call_frame_t *frame, xlator_t *this, loc_t *loc,  int  trace_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 ia_time          = 0;          char     actime_str[256]  = {0,}; @@ -1745,7 +1750,7 @@ trace_fsetattr (call_frame_t *frame, xlator_t *this, fd_t *fd,          STACK_WIND (frame, trace_fsetattr_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->fsetattr, -                    fd, stbuf, valid); +                    fd, stbuf, valid, xdata);          return 0;  } @@ -1753,7 +1758,7 @@ trace_fsetattr (call_frame_t *frame, xlator_t *this, fd_t *fd,  int  trace_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, -                off_t offset) +                off_t offset, dict_t *xdata)  {          if (trace_fop_names[GF_FOP_TRUNCATE].enabled) {                  gf_log (this->name, GF_LOG_INFO, @@ -1766,7 +1771,7 @@ trace_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc,          STACK_WIND (frame, trace_truncate_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->truncate, -                    loc, offset); +                    loc, offset, xdata);          return 0;  } @@ -1774,46 +1779,49 @@ trace_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc,  int  trace_open (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)  {          if (trace_fop_names[GF_FOP_OPEN].enabled) {                  gf_log (this->name, GF_LOG_INFO, -                        "%"PRId64": gfid=%s path=%s flags=%d fd=%p wbflags=%d", +                        "%"PRId64": gfid=%s path=%s flags=%d fd=%p",                          frame->root->unique, uuid_utoa (loc->inode->gfid), -                        loc->path, flags, fd, wbflags); +                        loc->path, flags, fd);                  frame->local = loc->inode->gfid;          }          STACK_WIND (frame, trace_open_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->open, -                    loc, flags, fd, wbflags); +                    loc, flags, fd, xdata);          return 0;  }  int  trace_create (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)  {          if (trace_fop_names[GF_FOP_CREATE].enabled) {                  gf_log (this->name, GF_LOG_INFO, -                        "%"PRId64": gfid=%s path=%s, fd=%p, flags=0%o mode=0%o", +                        "%"PRId64": gfid=%s path=%s fd=%p flags=0%o mode=0%o " +                        "umask=0%o",                          frame->root->unique, uuid_utoa (loc->inode->gfid), -                        loc->path, fd, flags, mode); +                        loc->path, fd, flags, mode, umask);          }          STACK_WIND (frame, trace_create_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->create, -                    loc, flags, mode, fd, params); +                    loc, flags, mode, umask, fd, xdata); +          return 0;  }  int  trace_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)  {          if (trace_fop_names[GF_FOP_READ].enabled) {                  gf_log (this->name, GF_LOG_INFO, @@ -1827,7 +1835,7 @@ trace_readv (call_frame_t *frame, xlator_t *this, fd_t *fd,          STACK_WIND (frame, trace_readv_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->readv, -                    fd, size, offset, flags); +                    fd, size, offset, flags, xdata);          return 0;  } @@ -1835,7 +1843,7 @@ trace_readv (call_frame_t *frame, xlator_t *this, fd_t *fd,  int  trace_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) +              off_t offset, uint32_t flags, struct iobref *iobref, dict_t *xdata)  {          if (trace_fop_names[GF_FOP_WRITE].enabled) {                  gf_log (this->name, GF_LOG_INFO, @@ -1849,13 +1857,13 @@ trace_writev (call_frame_t *frame, xlator_t *this, fd_t *fd,          STACK_WIND (frame, trace_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;  }  int -trace_statfs (call_frame_t *frame, xlator_t *this, loc_t *loc) +trace_statfs (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *xdata)  {          if (trace_fop_names[GF_FOP_STATFS].enabled) {                  gf_log (this->name, GF_LOG_INFO, @@ -1867,13 +1875,13 @@ trace_statfs (call_frame_t *frame, xlator_t *this, loc_t *loc)          STACK_WIND (frame, trace_statfs_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->statfs, -                    loc); +                    loc, xdata);          return 0;  }  int -trace_flush (call_frame_t *frame, xlator_t *this, fd_t *fd) +trace_flush (call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *xdata)  {          if (trace_fop_names[GF_FOP_FLUSH].enabled) {                  gf_log (this->name, GF_LOG_INFO, @@ -1885,13 +1893,13 @@ trace_flush (call_frame_t *frame, xlator_t *this, fd_t *fd)          STACK_WIND (frame, trace_flush_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->flush, -                    fd); +                    fd, xdata);          return 0;  }  int -trace_fsync (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t flags) +trace_fsync (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t flags, dict_t *xdata)  {          if (trace_fop_names[GF_FOP_FSYNC].enabled) {                  gf_log (this->name, GF_LOG_INFO, @@ -1903,14 +1911,14 @@ trace_fsync (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t flags)          STACK_WIND (frame, trace_fsync_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->fsync, -                    fd, flags); +                    fd, flags, xdata);          return 0;  }  int  trace_setxattr (call_frame_t *frame, xlator_t *this, -                loc_t *loc, dict_t *dict, int32_t flags) +                loc_t *loc, dict_t *dict, int32_t flags, dict_t *xdata)  {          if (trace_fop_names[GF_FOP_SETXATTR].enabled) {                  gf_log (this->name, GF_LOG_INFO, @@ -1923,14 +1931,14 @@ trace_setxattr (call_frame_t *frame, xlator_t *this,          STACK_WIND (frame, trace_setxattr_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->setxattr, -                    loc, dict, flags); +                    loc, dict, flags, xdata);          return 0;  }  int  trace_getxattr (call_frame_t *frame, xlator_t *this, -                loc_t *loc, const char *name) +                loc_t *loc, const char *name, dict_t *xdata)  {          if (trace_fop_names[GF_FOP_GETXATTR].enabled) {                  gf_log (this->name, GF_LOG_INFO, @@ -1943,14 +1951,14 @@ trace_getxattr (call_frame_t *frame, xlator_t *this,          STACK_WIND (frame, trace_getxattr_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->getxattr, -                    loc, name); +                    loc, name, xdata);          return 0;  }  int  trace_removexattr (call_frame_t *frame, xlator_t *this, -                   loc_t *loc, const char *name) +                   loc_t *loc, const char *name, dict_t *xdata)  {          if (trace_fop_names[GF_FOP_REMOVEXATTR].enabled) {                  gf_log (this->name, GF_LOG_INFO, @@ -1963,14 +1971,14 @@ trace_removexattr (call_frame_t *frame, xlator_t *this,          STACK_WIND (frame, trace_removexattr_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->removexattr, -                    loc, name); +                    loc, name, xdata);          return 0;  }  int -trace_opendir (call_frame_t *frame, xlator_t *this, loc_t *loc, fd_t *fd) +trace_opendir (call_frame_t *frame, xlator_t *this, loc_t *loc, fd_t *fd, dict_t *xdata)  {          if (trace_fop_names[GF_FOP_OPENDIR].enabled) {                  gf_log (this->name, GF_LOG_INFO, @@ -1983,7 +1991,7 @@ trace_opendir (call_frame_t *frame, xlator_t *this, loc_t *loc, fd_t *fd)          STACK_WIND (frame, trace_opendir_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->opendir, -                    loc, fd); +                    loc, fd, xdata);          return 0;  } @@ -2011,7 +2019,7 @@ trace_readdirp (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size,  int  trace_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)  {          if (trace_fop_names[GF_FOP_READDIR].enabled) {                  gf_log (this->name, GF_LOG_INFO, @@ -2024,7 +2032,7 @@ trace_readdir (call_frame_t *frame, xlator_t *this, fd_t *fd,          STACK_WIND (frame, trace_readdir_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->readdir, -                    fd, size, offset); +                    fd, size, offset, xdata);          return 0;  } @@ -2032,7 +2040,7 @@ trace_readdir (call_frame_t *frame, xlator_t *this, fd_t *fd,  int  trace_fsyncdir (call_frame_t *frame, xlator_t *this, -                fd_t *fd, int32_t datasync) +                fd_t *fd, int32_t datasync, dict_t *xdata)  {          if (trace_fop_names[GF_FOP_FSYNCDIR].enabled) {                  gf_log (this->name, GF_LOG_INFO, @@ -2045,13 +2053,13 @@ trace_fsyncdir (call_frame_t *frame, xlator_t *this,          STACK_WIND (frame, trace_fsyncdir_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->fsyncdir, -                    fd, datasync); +                    fd, datasync, xdata);          return 0;  }  int -trace_access (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t mask) +trace_access (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t mask, dict_t *xdata)  {          if (trace_fop_names[GF_FOP_ACCESS].enabled) {                  gf_log (this->name, GF_LOG_INFO, @@ -2064,14 +2072,14 @@ trace_access (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t mask)          STACK_WIND (frame, trace_access_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->access, -                    loc, mask); +                    loc, mask, xdata);          return 0;  }  int32_t  trace_rchecksum (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset, -                 int32_t len) +                 int32_t len, dict_t *xdata)  {          if (trace_fop_names[GF_FOP_RCHECKSUM].enabled) {                  gf_log (this->name, GF_LOG_INFO, @@ -2084,7 +2092,7 @@ trace_rchecksum (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset,          STACK_WIND (frame, trace_rchecksum_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->rchecksum, -                    fd, offset, len); +                    fd, offset, len, xdata);          return 0; @@ -2093,7 +2101,7 @@ trace_rchecksum (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset,  int32_t  trace_fentrylk (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)  {          if (trace_fop_names[GF_FOP_FENTRYLK].enabled) {                  gf_log (this->name, GF_LOG_INFO, @@ -2109,14 +2117,14 @@ trace_fentrylk (call_frame_t *frame, xlator_t *this, const char *volume,          STACK_WIND (frame, trace_fentrylk_cbk,                      FIRST_CHILD (this),                      FIRST_CHILD (this)->fops->fentrylk, -                    volume, fd, basename, cmd, type); +                    volume, fd, basename, cmd, type, xdata);          return 0;  }  int32_t  trace_fgetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd, -                 const char *name) +                 const char *name, dict_t *xdata)  {          if (trace_fop_names[GF_FOP_FGETXATTR].enabled) {                  gf_log (this->name, GF_LOG_INFO, @@ -2129,13 +2137,13 @@ trace_fgetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd,          STACK_WIND (frame, trace_fgetxattr_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->fgetxattr, -                    fd, name); +                    fd, name, xdata);          return 0;  }  int32_t  trace_fsetxattr (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)  {          if (trace_fop_names[GF_FOP_FSETXATTR].enabled) {                  gf_log (this->name, GF_LOG_INFO, @@ -2148,13 +2156,13 @@ trace_fsetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd,          STACK_WIND (frame, trace_fsetxattr_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->fsetxattr, -                    fd, dict, flags); +                    fd, dict, flags, xdata);          return 0;  }  int  trace_ftruncate (call_frame_t *frame, xlator_t *this, -                 fd_t *fd, off_t offset) +                 fd_t *fd, off_t offset, dict_t *xdata)  {          if (trace_fop_names[GF_FOP_FTRUNCATE].enabled) {                  gf_log (this->name, GF_LOG_INFO, @@ -2167,14 +2175,14 @@ trace_ftruncate (call_frame_t *frame, xlator_t *this,          STACK_WIND (frame, trace_ftruncate_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->ftruncate, -                    fd, offset); +                    fd, offset, xdata);          return 0;  }  int -trace_fstat (call_frame_t *frame, xlator_t *this, fd_t *fd) +trace_fstat (call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *xdata)  {          if (trace_fop_names[GF_FOP_FSTAT].enabled) {                  gf_log (this->name, GF_LOG_INFO, @@ -2186,14 +2194,14 @@ trace_fstat (call_frame_t *frame, xlator_t *this, fd_t *fd)          STACK_WIND (frame, trace_fstat_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->fstat, -                    fd); +                    fd, xdata);          return 0;  }  int  trace_lk (call_frame_t *frame, xlator_t *this, fd_t *fd, -          int32_t cmd, struct gf_flock *lock) +          int32_t cmd, struct gf_flock *lock, dict_t *xdata)  {          if (trace_fop_names[GF_FOP_LK].enabled) {                  gf_log (this->name, GF_LOG_INFO, @@ -2208,7 +2216,7 @@ trace_lk (call_frame_t *frame, xlator_t *this, fd_t *fd,          STACK_WIND (frame, trace_lk_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->lk, -                    fd, cmd, lock); +                    fd, cmd, lock, xdata);          return 0;  } diff --git a/xlators/encryption/rot-13/src/rot-13.c b/xlators/encryption/rot-13/src/rot-13.c index 5e6820206..697465fd3 100644 --- a/xlators/encryption/rot-13/src/rot-13.c +++ b/xlators/encryption/rot-13/src/rot-13.c @@ -68,14 +68,15 @@ rot13_readv_cbk (call_frame_t *frame,                   struct iovec *vector,                   int32_t count,  		 struct iatt *stbuf, -                 struct iobref *iobref) +                 struct iobref *iobref, dict_t *xdata)  {  	rot_13_private_t *priv = (rot_13_private_t *)this->private;  	if (priv->decrypt_read)  		rot13_iovec (vector, count); -	STACK_UNWIND_STRICT (readv, frame, op_ret, op_errno, vector, count, stbuf, iobref); +	STACK_UNWIND_STRICT (readv, frame, op_ret, op_errno, vector, count, +                             stbuf, iobref, xdata);  	return 0;  } @@ -84,13 +85,13 @@ rot13_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)  {  	STACK_WIND (frame,  		    rot13_readv_cbk,  		    FIRST_CHILD (this),  		    FIRST_CHILD (this)->fops->readv, -		    fd, size, offset, flags); +		    fd, size, offset, flags, xdata);  	return 0;  } @@ -101,9 +102,10 @@ rot13_writev_cbk (call_frame_t *frame,                    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;  } @@ -114,7 +116,7 @@ rot13_writev (call_frame_t *frame,                struct iovec *vector,                int32_t count,                off_t offset, uint32_t flags, -              struct iobref *iobref) +              struct iobref *iobref, dict_t *xdata)  {  	rot_13_private_t *priv = (rot_13_private_t *)this->private;  	if (priv->encrypt_write) @@ -125,7 +127,7 @@ rot13_writev (call_frame_t *frame,  		    FIRST_CHILD (this),  		    FIRST_CHILD (this)->fops->writev,  		    fd, vector, count, offset, flags, -                    iobref); +                    iobref, xdata);  	return 0;  } diff --git a/xlators/features/Makefile.am b/xlators/features/Makefile.am index 884f82d68..be48f93fa 100644 --- a/xlators/features/Makefile.am +++ b/xlators/features/Makefile.am @@ -1,3 +1,3 @@ -SUBDIRS = locks trash quota read-only mac-compat quiesce marker index#path-converter # filter +SUBDIRS = locks quota read-only mac-compat quiesce marker index # trash path-converter # filter  CLEANFILES = diff --git a/xlators/features/index/src/index.c b/xlators/features/index/src/index.c index 12309b83f..ead20e06f 100644 --- a/xlators/features/index/src/index.c +++ b/xlators/features/index/src/index.c @@ -605,10 +605,10 @@ unlock:                  frame = new->frame;                  if (new->fop == GF_FOP_XATTROP) {                          INDEX_STACK_UNWIND (xattrop, frame, -1, ENOMEM, -                                            NULL); +                                            NULL, NULL);                  } else if (new->fop == GF_FOP_FXATTROP) {                          INDEX_STACK_UNWIND (fxattrop, frame, -1, ENOMEM, -                                            NULL); +                                            NULL, NULL);                  }                  call_stub_destroy (new);          } else if (stub) { @@ -619,7 +619,7 @@ unlock:  int32_t  index_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)  {          inode_t *inode = NULL; @@ -628,7 +628,7 @@ index_xattrop_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  goto out;          fop_xattrop_index_action (this, frame->local, xattr);  out: -        INDEX_STACK_UNWIND (xattrop, frame, op_ret, op_errno, xattr); +        INDEX_STACK_UNWIND (xattrop, frame, op_ret, op_errno, xattr, xdata);          index_queue_process (this, inode, NULL);          inode_unref (inode); @@ -637,7 +637,8 @@ out:  int32_t  index_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)  {          inode_t *inode = NULL; @@ -647,7 +648,7 @@ index_fxattrop_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          fop_fxattrop_index_action (this, frame->local, xattr);  out: -        INDEX_STACK_UNWIND (fxattrop, frame, op_ret, op_errno, xattr); +        INDEX_STACK_UNWIND (fxattrop, frame, op_ret, op_errno, xattr, xdata);          index_queue_process (this, inode, NULL);          inode_unref (inode); @@ -656,25 +657,27 @@ out:  int  index_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, index_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  index_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, index_fxattrop_cbk, FIRST_CHILD (this), -                    FIRST_CHILD (this)->fops->fxattrop, fd, optype, xattr); +                    FIRST_CHILD (this)->fops->fxattrop, fd, optype, xattr, +                    xdata);          return 0;  }  int32_t  index_xattrop (call_frame_t *frame, xlator_t *this, loc_t *loc, -	       gf_xattrop_flags_t flags, dict_t *dict) +	       gf_xattrop_flags_t flags, dict_t *dict, dict_t *xdata)  {          call_stub_t     *stub = NULL; @@ -683,9 +686,9 @@ index_xattrop (call_frame_t *frame, xlator_t *this, loc_t *loc,          frame->local = inode_ref (loc->inode);          stub = fop_xattrop_stub (frame, index_xattrop_wrapper, -                                 loc, flags, dict); +                                 loc, flags, dict, xdata);          if (!stub) { -                INDEX_STACK_UNWIND (xattrop, frame, -1, ENOMEM, NULL); +                INDEX_STACK_UNWIND (xattrop, frame, -1, ENOMEM, NULL, NULL);                  return 0;          } @@ -693,13 +696,13 @@ index_xattrop (call_frame_t *frame, xlator_t *this, loc_t *loc,          return 0;  out:          STACK_WIND (frame, default_xattrop_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->xattrop, loc, flags, dict); +                    FIRST_CHILD(this)->fops->xattrop, loc, flags, dict, xdata);          return 0;  }  int32_t  index_fxattrop (call_frame_t *frame, xlator_t *this, fd_t *fd, -		gf_xattrop_flags_t flags, dict_t *dict) +		gf_xattrop_flags_t flags, dict_t *dict, dict_t *xdata)  {          call_stub_t    *stub = NULL; @@ -708,9 +711,9 @@ index_fxattrop (call_frame_t *frame, xlator_t *this, fd_t *fd,          frame->local = inode_ref (fd->inode);          stub = fop_fxattrop_stub (frame, index_fxattrop_wrapper, -                                  fd, flags, dict); +                                  fd, flags, dict, xdata);          if (!stub) { -                INDEX_STACK_UNWIND (fxattrop, frame, -1, ENOMEM, NULL); +                INDEX_STACK_UNWIND (fxattrop, frame, -1, ENOMEM, NULL, xdata);                  return 0;          } @@ -718,13 +721,13 @@ index_fxattrop (call_frame_t *frame, xlator_t *this, fd_t *fd,          return 0;  out:          STACK_WIND (frame, default_fxattrop_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->fxattrop, fd, flags, dict); +                    FIRST_CHILD(this)->fops->fxattrop, fd, flags, dict, xdata);          return 0;  }  int32_t  index_getxattr_wrapper (call_frame_t *frame, xlator_t *this, -                        loc_t *loc, const char *name) +                        loc_t *loc, const char *name, dict_t *xdata)  {          index_priv_t    *priv = NULL;          dict_t          *xattr = NULL; @@ -748,9 +751,9 @@ index_getxattr_wrapper (call_frame_t *frame, xlator_t *this,          }  done:          if (ret) -                STACK_UNWIND_STRICT (getxattr, frame, -1, -ret, xattr); +                STACK_UNWIND_STRICT (getxattr, frame, -1, -ret, xattr, xdata);          else -                STACK_UNWIND_STRICT (getxattr, frame, 0, 0, xattr); +                STACK_UNWIND_STRICT (getxattr, frame, 0, 0, xattr, xdata);          if (xattr)                  dict_unref (xattr); @@ -820,7 +823,7 @@ done:  int32_t  index_readdir_wrapper (call_frame_t *frame, xlator_t *this, -                       fd_t *fd, size_t size, off_t off) +                       fd_t *fd, size_t size, off_t off, dict_t *xdata)  {          index_fd_ctx_t       *fctx           = NULL;          DIR                  *dir            = NULL; @@ -855,13 +858,14 @@ index_readdir_wrapper (call_frame_t *frame, xlator_t *this,          op_errno = errno;          op_ret = count;  done: -        STACK_UNWIND_STRICT (readdir, frame, op_ret, op_errno, &entries); +        STACK_UNWIND_STRICT (readdir, frame, op_ret, op_errno, &entries, xdata);          gf_dirent_free (&entries);          return 0;  }  int -index_unlink_wrapper (call_frame_t *frame, xlator_t *this, loc_t *loc) +index_unlink_wrapper (call_frame_t *frame, xlator_t *this, loc_t *loc, int flag, +                      dict_t *xdata)  {          index_priv_t    *priv = NULL;          int32_t         op_ret = 0; @@ -905,29 +909,30 @@ index_unlink_wrapper (call_frame_t *frame, xlator_t *this, loc_t *loc)          postparent.ia_ino = -1;  done:          INDEX_STACK_UNWIND (unlink, frame, op_ret, op_errno, &preparent, -                            &postparent); +                            &postparent, xdata);          return 0;  }  int32_t  index_getxattr (call_frame_t *frame, xlator_t *this, -                loc_t *loc, const char *name) +                loc_t *loc, const char *name, dict_t *xdata)  {          call_stub_t     *stub = NULL;          if (!name || strcmp (GF_XATTROP_INDEX_GFID, name))                  goto out; -        stub = fop_getxattr_stub (frame, index_getxattr_wrapper, loc, name); +        stub = fop_getxattr_stub (frame, index_getxattr_wrapper, loc, name, +                                  xdata);          if (!stub) { -                STACK_UNWIND_STRICT (getxattr, frame, -1, ENOMEM, NULL); +                STACK_UNWIND_STRICT (getxattr, frame, -1, ENOMEM, NULL, NULL);                  return 0;          }          worker_enqueue (this, stub);          return 0;  out:          STACK_WIND (frame, default_getxattr_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->getxattr, loc, name); +                    FIRST_CHILD(this)->fops->getxattr, loc, name, xdata);          return 0;  } @@ -961,7 +966,7 @@ normal:  int32_t  index_readdir (call_frame_t *frame, xlator_t *this, -               fd_t *fd, size_t size, off_t off) +               fd_t *fd, size_t size, off_t off, dict_t *xdata)  {          call_stub_t     *stub = NULL;          index_priv_t    *priv = NULL; @@ -969,21 +974,23 @@ index_readdir (call_frame_t *frame, xlator_t *this,          priv = this->private;          if (uuid_compare (fd->inode->gfid, priv->xattrop_vgfid))                  goto out; -        stub = fop_readdir_stub (frame, index_readdir_wrapper, fd, size, off); +        stub = fop_readdir_stub (frame, index_readdir_wrapper, fd, size, off, +                                 xdata);          if (!stub) { -                STACK_UNWIND_STRICT (readdir, frame, -1, ENOMEM, NULL); +                STACK_UNWIND_STRICT (readdir, frame, -1, ENOMEM, NULL, NULL);                  return 0;          }          worker_enqueue (this, stub);          return 0;  out:          STACK_WIND (frame, default_readdir_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->readdir, fd, size, off); +                    FIRST_CHILD(this)->fops->readdir, fd, size, off, xdata);          return 0;  }  int -index_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc) +index_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc, int xflag, +              dict_t *xdata)  {          call_stub_t     *stub = NULL;          index_priv_t    *priv = NULL; @@ -992,16 +999,17 @@ index_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc)          if (uuid_compare (loc->pargfid, priv->xattrop_vgfid))                  goto out; -        stub = fop_unlink_stub (frame, index_unlink_wrapper, loc); +        stub = fop_unlink_stub (frame, index_unlink_wrapper, loc, xflag, xdata);          if (!stub) { -                STACK_UNWIND_STRICT (unlink, frame, -1, ENOMEM, NULL, NULL); +                STACK_UNWIND_STRICT (unlink, frame, -1, ENOMEM, NULL, NULL, +                                     NULL);                  return 0;          }          worker_enqueue (this, stub);          return 0;  out:          STACK_WIND (frame, default_unlink_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->unlink, loc); +                    FIRST_CHILD(this)->fops->unlink, loc, xflag, xdata);          return 0;  } diff --git a/xlators/features/locks/src/clear.c b/xlators/features/locks/src/clear.c index 6c6afe008..a4e235886 100644 --- a/xlators/features/locks/src/clear.c +++ b/xlators/features/locks/src/clear.c @@ -193,8 +193,8 @@ clrlk_clear_posixlk (xlator_t *this, pl_inode_t *pl_inode, clrlk_args *args,                                                F_SETLKW, &plock->user_flock,                                                -1, EAGAIN, NULL); -                                STACK_UNWIND (plock->frame, -1, EAGAIN, -                                              &plock->user_flock); +                                STACK_UNWIND_STRICT (lk, plock->frame, -1, EAGAIN, +                                                     &plock->user_flock, NULL);                          } else {                                  gcount++; @@ -261,7 +261,7 @@ blkd:                                &ilock->user_flock, -1, EAGAIN,                                ilock->volume);                  STACK_UNWIND_STRICT (inodelk, ilock->frame, -1, -                                     EAGAIN); +                                     EAGAIN, NULL);                  //No need to take lock as the locks are only in one list                  __pl_inodelk_unref (ilock);          } @@ -335,6 +335,7 @@ blkd:                          }                          bcount++; +                          list_del_init (&elock->blocked_locks);                          list_add_tail (&elock->blocked_locks, &released);                  } @@ -346,7 +347,7 @@ blkd:                  entrylk_trace_out (this, elock->frame, elock->volume, NULL, NULL,                                     elock->basename, ENTRYLK_LOCK, elock->type,                                     -1, EAGAIN); -                STACK_UNWIND_STRICT (entrylk, elock->frame, -1, EAGAIN); +                STACK_UNWIND_STRICT (entrylk, elock->frame, -1, EAGAIN, NULL);                  GF_FREE ((char *) elock->basename);                  GF_FREE (elock);          } diff --git a/xlators/features/locks/src/common.c b/xlators/features/locks/src/common.c index b775fcca7..a92145d23 100644 --- a/xlators/features/locks/src/common.c +++ b/xlators/features/locks/src/common.c @@ -933,7 +933,8 @@ grant_blocked_locks (xlator_t *this, pl_inode_t *pl_inode)                  pl_trace_out (this, lock->frame, NULL, NULL, F_SETLKW,                                &lock->user_flock, 0, 0, NULL); -                STACK_UNWIND (lock->frame, 0, 0, &lock->user_flock); +                STACK_UNWIND_STRICT (lk, lock->frame, 0, 0, +                                     &lock->user_flock, NULL);                  GF_FREE (lock);          } @@ -978,7 +979,8 @@ pl_send_prelock_unlock (xlator_t *this, pl_inode_t *pl_inode,                  pl_trace_out (this, lock->frame, NULL, NULL, F_SETLKW,                                &lock->user_flock, 0, 0, NULL); -                STACK_UNWIND (lock->frame, 0, 0, &lock->user_flock); +                STACK_UNWIND_STRICT (lk, lock->frame, 0, 0, +                                     &lock->user_flock, NULL);                  GF_FREE (lock);          } diff --git a/xlators/features/locks/src/entrylk.c b/xlators/features/locks/src/entrylk.c index 3e91b9d94..e034c37b3 100644 --- a/xlators/features/locks/src/entrylk.c +++ b/xlators/features/locks/src/entrylk.c @@ -505,7 +505,7 @@ grant_blocked_entry_locks (xlator_t *this, pl_inode_t *pl_inode,                                     lock->basename, ENTRYLK_LOCK, lock->type,                                     0, 0); -                STACK_UNWIND_STRICT (entrylk, lock->frame, 0, 0); +                STACK_UNWIND_STRICT (entrylk, lock->frame, 0, 0, NULL);          } @@ -573,7 +573,7 @@ release_entry_locks_for_transport (xlator_t *this, pl_inode_t *pinode,          list_for_each_entry_safe (lock, tmp, &released, blocked_locks) {                  list_del_init (&lock->blocked_locks); -                STACK_UNWIND_STRICT (entrylk, lock->frame, -1, EAGAIN); +                STACK_UNWIND_STRICT (entrylk, lock->frame, -1, EAGAIN, NULL);                  if (lock->basename)                          GF_FREE ((char *)lock->basename); @@ -584,7 +584,7 @@ release_entry_locks_for_transport (xlator_t *this, pl_inode_t *pinode,          list_for_each_entry_safe (lock, tmp, &granted, blocked_locks) {                  list_del_init (&lock->blocked_locks); -                STACK_UNWIND_STRICT (entrylk, lock->frame, 0, 0); +                STACK_UNWIND_STRICT (entrylk, lock->frame, 0, 0, NULL);                  if (lock->basename)                          GF_FREE ((char *)lock->basename); @@ -710,7 +710,7 @@ out:                  entrylk_trace_out (this, frame, volume, fd, loc, basename,                                     cmd, type, op_ret, op_errno); -                STACK_UNWIND_STRICT (entrylk, frame, op_ret, op_errno); +                STACK_UNWIND_STRICT (entrylk, frame, op_ret, op_errno, NULL);          } else {                  entrylk_trace_block (this, frame, volume, fd, loc, basename,                                       cmd, type); diff --git a/xlators/features/locks/src/inodelk.c b/xlators/features/locks/src/inodelk.c index b59f2a280..a2e65d55f 100644 --- a/xlators/features/locks/src/inodelk.c +++ b/xlators/features/locks/src/inodelk.c @@ -369,7 +369,7 @@ grant_blocked_inode_locks (xlator_t *this, pl_inode_t *pl_inode, pl_dom_list_t *                  pl_trace_out (this, lock->frame, NULL, NULL, F_SETLKW,                                &lock->user_flock, 0, 0, lock->volume); -                STACK_UNWIND_STRICT (inodelk, lock->frame, 0, 0); +                STACK_UNWIND_STRICT (inodelk, lock->frame, 0, 0, NULL);          }          pthread_mutex_lock (&pl_inode->mutex); @@ -462,7 +462,7 @@ release_inode_locks_of_transport (xlator_t *this, pl_dom_list_t *dom,          list_for_each_entry_safe (l, tmp, &released, blocked_locks) {                  list_del_init (&l->blocked_locks); -                STACK_UNWIND_STRICT (inodelk, l->frame, -1, EAGAIN); +                STACK_UNWIND_STRICT (inodelk, l->frame, -1, EAGAIN, NULL);                  //No need to take lock as the locks are only in one list                  __pl_inodelk_unref (l);          } @@ -668,7 +668,7 @@ unwind:                  pl_trace_out (this, frame, fd, loc, cmd, flock, op_ret, op_errno, volume);          } -        STACK_UNWIND_STRICT (inodelk, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (inodelk, frame, op_ret, op_errno, NULL);  out:          return 0;  } diff --git a/xlators/features/locks/src/locks.h b/xlators/features/locks/src/locks.h index 6df1235a2..f855c0789 100644 --- a/xlators/features/locks/src/locks.h +++ b/xlators/features/locks/src/locks.h @@ -170,6 +170,7 @@ typedef struct {          loc_t  loc;          fd_t  *fd;          off_t  offset; +        dict_t *xdata;          enum {TRUNCATE, FTRUNCATE} op;  } pl_local_t; diff --git a/xlators/features/locks/src/posix.c b/xlators/features/locks/src/posix.c index 39991299c..81cfc7f91 100644 --- a/xlators/features/locks/src/posix.c +++ b/xlators/features/locks/src/posix.c @@ -102,7 +102,7 @@ out:  int  pl_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)  {          pl_local_t *local = NULL; @@ -111,8 +111,13 @@ pl_truncate_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          if (local->op == TRUNCATE)                  loc_wipe (&local->loc); +        if (local->xdata) +                dict_unref (local->xdata); +        if (local->fd) +                fd_unref (local->fd); +          STACK_UNWIND_STRICT (truncate, frame, op_ret, op_errno, -                             prebuf, postbuf); +                             prebuf, postbuf, xdata);          return 0;  } @@ -153,7 +158,8 @@ truncate_allowed (pl_inode_t *pl_inode,  static int  truncate_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)  {          posix_locks_private_t *priv = NULL;          pl_local_t            *local = NULL; @@ -197,12 +203,12 @@ truncate_stat_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          case TRUNCATE:                  STACK_WIND (frame, pl_truncate_cbk, FIRST_CHILD (this),                              FIRST_CHILD (this)->fops->truncate, -                            &local->loc, local->offset); +                            &local->loc, local->offset, local->xdata);                  break;          case FTRUNCATE:                  STACK_WIND (frame, pl_truncate_cbk, FIRST_CHILD (this),                              FIRST_CHILD (this)->fops->ftruncate, -                            local->fd, local->offset); +                            local->fd, local->offset, local->xdata);                  break;          } @@ -214,14 +220,14 @@ unwind:          if (local->op == TRUNCATE)                  loc_wipe (&local->loc); -        STACK_UNWIND_STRICT (truncate, frame, op_ret, op_errno, buf, NULL); +        STACK_UNWIND_STRICT (truncate, frame, op_ret, op_errno, buf, NULL, xdata);          return 0;  }  int  pl_truncate (call_frame_t *frame, xlator_t *this, -             loc_t *loc, off_t offset) +             loc_t *loc, off_t offset, dict_t *xdata)  {          pl_local_t *local = NULL; @@ -231,18 +237,19 @@ pl_truncate (call_frame_t *frame, xlator_t *this,          local->op         = TRUNCATE;          local->offset     = offset;          loc_copy (&local->loc, loc); +        local->xdata = dict_ref (xdata);          frame->local = local;          STACK_WIND (frame, truncate_stat_cbk, FIRST_CHILD (this), -                    FIRST_CHILD (this)->fops->stat, loc); +                    FIRST_CHILD (this)->fops->stat, loc, NULL);          return 0;  unwind:          gf_log (this->name, GF_LOG_ERROR, "truncate for %s failed with ret: %d, "                  "error: %s", loc->path, -1, strerror (ENOMEM)); -        STACK_UNWIND_STRICT (truncate, frame, -1, ENOMEM, NULL, NULL); +        STACK_UNWIND_STRICT (truncate, frame, -1, ENOMEM, NULL, NULL, NULL);          return 0;  } @@ -250,7 +257,7 @@ unwind:  int  pl_ftruncate (call_frame_t *frame, xlator_t *this, -              fd_t *fd, off_t offset) +              fd_t *fd, off_t offset, dict_t *xdata)  {          pl_local_t *local = NULL; @@ -259,18 +266,19 @@ pl_ftruncate (call_frame_t *frame, xlator_t *this,          local->op         = FTRUNCATE;          local->offset     = offset; -        local->fd         = fd; +        local->fd         = fd_ref (fd); +        local->xdata      = dict_ref (xdata);          frame->local = local;          STACK_WIND (frame, truncate_stat_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->fstat, fd); +                    FIRST_CHILD(this)->fops->fstat, fd, xdata);          return 0;  unwind:          gf_log (this->name, GF_LOG_ERROR, "ftruncate failed with ret: %d, "                  "error: %s", -1, strerror (ENOMEM)); -        STACK_UNWIND_STRICT (ftruncate, frame, -1, ENOMEM, NULL, NULL); +        STACK_UNWIND_STRICT (ftruncate, frame, -1, ENOMEM, NULL, NULL, NULL);          return 0;  } @@ -325,7 +333,8 @@ delete_locks_of_fd (xlator_t *this, pl_inode_t *pl_inode, fd_t *fd)         list_for_each_entry_safe (l, tmp, &blocked_list, list) {                 list_del_init(&l->list); -               STACK_UNWIND_STRICT (lk, l->frame, -1, EAGAIN, &l->user_flock); +               STACK_UNWIND_STRICT (lk, l->frame, -1, EAGAIN, &l->user_flock, +                                    NULL);                 __destroy_lock (l);         } @@ -368,16 +377,16 @@ __delete_locks_of_owner (pl_inode_t *pl_inode,  int32_t  pl_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;  }  int32_t  pl_getxattr (call_frame_t *frame, xlator_t *this, loc_t *loc, -             const char *name) +             const char *name, dict_t *xdata)  {          int                     op_errno        = EINVAL;          int                     op_ret          = -1; @@ -457,7 +466,7 @@ pl_getxattr (call_frame_t *frame, xlator_t *this, loc_t *loc,          op_ret = 0;  out: -        STACK_UNWIND_STRICT (getxattr, frame, op_ret, op_errno, dict); +        STACK_UNWIND_STRICT (getxattr, frame, op_ret, op_errno, dict, xdata);          if (args.opts)                  GF_FREE (args.opts); @@ -469,17 +478,17 @@ out:  usual:          STACK_WIND (frame, pl_getxattr_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->getxattr, loc, name); +                    FIRST_CHILD(this)->fops->getxattr, loc, name, xdata);          return 0;  }  int32_t  pl_opendir_cbk (call_frame_t *frame, -                     void *cookie, -                     xlator_t *this, -                     int32_t op_ret, -                     int32_t op_errno, -                     fd_t *fd) +                void *cookie, +                xlator_t *this, +                int32_t op_ret, +                int32_t op_errno, +                fd_t *fd, dict_t *xdata)  {          pl_fdctx_t *fdctx = NULL; @@ -498,28 +507,28 @@ unwind:                               frame,                               op_ret,                               op_errno, -                             fd); +                             fd, xdata);          return 0;  }  int32_t  pl_opendir (call_frame_t *frame, xlator_t *this, -             loc_t *loc, fd_t *fd) +             loc_t *loc, fd_t *fd, dict_t *xdata)  {          STACK_WIND (frame,                      pl_opendir_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->opendir, -                    loc, fd); +                    loc, fd, xdata);          return 0;  }  int  pl_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;  } @@ -527,7 +536,7 @@ pl_flush_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  pl_flush (call_frame_t *frame, xlator_t *this, -          fd_t *fd) +          fd_t *fd, dict_t *xdata)  {          pl_inode_t *pl_inode = NULL; @@ -535,7 +544,7 @@ pl_flush (call_frame_t *frame, xlator_t *this,          if (!pl_inode) {                  gf_log (this->name, GF_LOG_DEBUG, "Could not get inode."); -                STACK_UNWIND_STRICT (flush, frame, -1, EBADFD); +                STACK_UNWIND_STRICT (flush, frame, -1, EBADFD, NULL);                  return 0;          } @@ -565,14 +574,14 @@ pl_flush (call_frame_t *frame, xlator_t *this,  wind:          STACK_WIND (frame, pl_flush_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->flush, fd); +                    FIRST_CHILD(this)->fops->flush, fd, xdata);          return 0;  }  int  pl_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)  {          pl_fdctx_t *fdctx = NULL; @@ -587,7 +596,7 @@ pl_open_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          }  unwind: -        STACK_UNWIND_STRICT (open, frame, op_ret, op_errno, fd); +        STACK_UNWIND_STRICT (open, frame, op_ret, op_errno, fd, xdata);          return 0;  } @@ -595,12 +604,12 @@ unwind:  int  pl_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)  {          /* why isn't O_TRUNC being handled ? */          STACK_WIND (frame, pl_open_cbk,                      FIRST_CHILD(this), FIRST_CHILD(this)->fops->open, -                    loc, flags & ~O_TRUNC, fd, wbflags); +                    loc, flags & ~O_TRUNC, fd, xdata);          return 0;  } @@ -610,7 +619,7 @@ int  pl_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 *preparent, struct iatt *postparent, dict_t *xdata)  {          pl_fdctx_t *fdctx = NULL; @@ -626,7 +635,7 @@ pl_create_cbk (call_frame_t *frame, void *cookie,  unwind:          STACK_UNWIND_STRICT (create, frame, op_ret, op_errno, fd, inode, buf, -                             preparent, postparent); +                             preparent, postparent, xdata);          return 0;  } @@ -634,11 +643,12 @@ unwind:  int  pl_create (call_frame_t *frame, xlator_t *this, -           loc_t *loc, int32_t flags, mode_t mode, fd_t *fd, dict_t *params) +           loc_t *loc, int32_t flags, mode_t mode, mode_t umask, fd_t *fd, +           dict_t *xdata)  {          STACK_WIND (frame, pl_create_cbk,                      FIRST_CHILD (this), FIRST_CHILD (this)->fops->create, -                    loc, flags, mode, fd, params); +                    loc, flags, mode, umask, fd, xdata);          return 0;  } @@ -647,10 +657,10 @@ int  pl_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 iobref *iobref, dict_t *xdata)  {          STACK_UNWIND_STRICT (readv, frame, op_ret, op_errno, -                             vector, count, stbuf, iobref); +                             vector, count, stbuf, iobref, xdata);          return 0;  } @@ -658,9 +668,10 @@ pl_readv_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  pl_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;  } @@ -718,12 +729,12 @@ __rw_allowable (pl_inode_t *pl_inode, posix_lock_t *region,  int -pl_readv_cont (call_frame_t *frame, xlator_t *this, -               fd_t *fd, size_t size, off_t offset, uint32_t flags) +pl_readv_cont (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size, +               off_t offset, uint32_t flags, dict_t *xdata)  {          STACK_WIND (frame, pl_readv_cbk,                      FIRST_CHILD (this), FIRST_CHILD (this)->fops->readv, -                    fd, size, offset, flags); +                    fd, size, offset, flags, xdata);          return 0;  } @@ -731,7 +742,7 @@ pl_readv_cont (call_frame_t *frame, xlator_t *this,  int  pl_readv (call_frame_t *frame, xlator_t *this, -          fd_t *fd, size_t size, off_t offset, uint32_t flags) +          fd_t *fd, size_t size, off_t offset, uint32_t flags, dict_t *xdata)  {          posix_locks_private_t *priv = NULL;          pl_inode_t            *pl_inode = NULL; @@ -778,7 +789,8 @@ pl_readv (call_frame_t *frame, xlator_t *this,                          }                          rw->stub = fop_readv_stub (frame, pl_readv_cont, -                                                   fd, size, offset, flags); +                                                   fd, size, offset, flags, +                                                   xdata);                          if (!rw->stub) {                                  op_errno = ENOMEM;                                  op_ret = -1; @@ -798,12 +810,12 @@ pl_readv (call_frame_t *frame, xlator_t *this,          if (wind_needed) {                  STACK_WIND (frame, pl_readv_cbk,                              FIRST_CHILD (this), FIRST_CHILD (this)->fops->readv, -                            fd, size, offset, flags); +                            fd, size, offset, flags, xdata);          }          if (op_ret == -1)                  STACK_UNWIND_STRICT (readv, frame, -1, op_errno, -                                     NULL, 0, NULL, NULL); +                                     NULL, 0, NULL, NULL, NULL);          return 0;  } @@ -812,11 +824,11 @@ pl_readv (call_frame_t *frame, xlator_t *this,  int  pl_writev_cont (call_frame_t *frame, xlator_t *this, fd_t *fd,                  struct iovec *vector, int count, off_t offset, -                uint32_t flags, struct iobref *iobref) +                uint32_t flags, struct iobref *iobref, dict_t *xdata)  {          STACK_WIND (frame, pl_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;  } @@ -825,7 +837,7 @@ pl_writev_cont (call_frame_t *frame, xlator_t *this, fd_t *fd,  int  pl_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)  {          posix_locks_private_t *priv = NULL;          pl_inode_t            *pl_inode = NULL; @@ -872,7 +884,7 @@ pl_writev (call_frame_t *frame, xlator_t *this, fd_t *fd,                          rw->stub = fop_writev_stub (frame, pl_writev_cont,                                                      fd, vector, count, offset, -                                                    flags, iobref); +                                                    flags, iobref, xdata);                          if (!rw->stub) {                                  op_errno = ENOMEM;                                  op_ret = -1; @@ -892,10 +904,11 @@ pl_writev (call_frame_t *frame, xlator_t *this, fd_t *fd,          if (wind_needed)                  STACK_WIND (frame, pl_writev_cbk,                              FIRST_CHILD (this), FIRST_CHILD (this)->fops->writev, -                            fd, vector, count, offset, flags, iobref); +                            fd, vector, count, offset, flags, iobref, xdata);          if (op_ret == -1) -                STACK_UNWIND_STRICT (writev, frame, -1, op_errno, NULL, NULL); +                STACK_UNWIND_STRICT (writev, frame, -1, op_errno, NULL, NULL, +                                     NULL);          return 0;  } @@ -1079,7 +1092,7 @@ unlock:  int  pl_lk (call_frame_t *frame, xlator_t *this, -       fd_t *fd, int32_t cmd, struct gf_flock *flock) +       fd_t *fd, int32_t cmd, struct gf_flock *flock, dict_t *xdata)  {          void         *transport  = NULL;          pid_t         client_pid = 0; @@ -1237,7 +1250,7 @@ unwind:          else                  flock->l_type = F_UNLCK; -        STACK_UNWIND_STRICT (lk, frame, op_ret, op_errno, flock); +        STACK_UNWIND_STRICT (lk, frame, op_ret, op_errno, flock, xdata);  out:          return 0;  } @@ -1348,19 +1361,20 @@ pl_forget (xlator_t *this,          list_for_each_entry_safe (ext_l, ext_tmp, &posixlks_released, list) { -                STACK_UNWIND_STRICT (lk, ext_l->frame, -1, 0, &ext_l->user_flock); +                STACK_UNWIND_STRICT (lk, ext_l->frame, -1, 0, +                                     &ext_l->user_flock, NULL);                  __destroy_lock (ext_l);          }          list_for_each_entry_safe (ino_l, ino_tmp, &inodelks_released, blocked_locks) { -                STACK_UNWIND_STRICT (inodelk, ino_l->frame, -1, 0); +                STACK_UNWIND_STRICT (inodelk, ino_l->frame, -1, 0, NULL);                  __pl_inodelk_unref (ino_l);          }          list_for_each_entry_safe (entry_l, entry_tmp, &entrylks_released, blocked_locks) { -                STACK_UNWIND_STRICT (entrylk, entry_l->frame, -1, 0); +                STACK_UNWIND_STRICT (entrylk, entry_l->frame, -1, 0, NULL);                  if (entry_l->basename)                          GF_FREE ((char *)entry_l->basename);                  GF_FREE (entry_l); @@ -1543,7 +1557,7 @@ pl_lookup_cbk (call_frame_t *frame,                      int32_t op_errno,                      inode_t *inode,                      struct iatt *buf, -                    dict_t *dict, +                    dict_t *xdata,                      struct iatt *postparent)  {          pl_local_t *local = NULL; @@ -1557,11 +1571,11 @@ pl_lookup_cbk (call_frame_t *frame,          local = frame->local;          if (local->entrylk_count_req) -                pl_entrylk_xattr_fill (this, inode, dict); +                pl_entrylk_xattr_fill (this, inode, xdata);          if (local->inodelk_count_req) -                pl_inodelk_xattr_fill (this, inode, dict); +                pl_inodelk_xattr_fill (this, inode, xdata);          if (local->posixlk_count_req) -                pl_posixlk_xattr_fill (this, inode, dict); +                pl_posixlk_xattr_fill (this, inode, xdata);          frame->local = NULL; @@ -1573,20 +1587,20 @@ out:          STACK_UNWIND_STRICT (                       lookup,                       frame, -                      op_ret, -                      op_errno, -                      inode, -                      buf, -                      dict, -                      postparent); +                     op_ret, +                     op_errno, +                     inode, +                     buf, +                     xdata, +                     postparent);          return 0;  }  int32_t  pl_lookup (call_frame_t *frame, -                xlator_t *this, -                loc_t *loc, -                dict_t *xattr_req) +           xlator_t *this, +           loc_t *loc, +           dict_t *xdata)  {          pl_local_t *local  = NULL;          int         ret    = -1; @@ -1598,12 +1612,12 @@ pl_lookup (call_frame_t *frame,          local = mem_get0 (this->local_pool);          GF_VALIDATE_OR_GOTO (this->name, local, out); -        if (xattr_req) { -                if (dict_get (xattr_req, GLUSTERFS_ENTRYLK_COUNT)) +        if (xdata) { +                if (dict_get (xdata, GLUSTERFS_ENTRYLK_COUNT))                          local->entrylk_count_req = 1; -                if (dict_get (xattr_req, GLUSTERFS_INODELK_COUNT)) +                if (dict_get (xdata, GLUSTERFS_INODELK_COUNT))                          local->inodelk_count_req = 1; -                if (dict_get (xattr_req, GLUSTERFS_POSIXLK_COUNT)) +                if (dict_get (xdata, GLUSTERFS_POSIXLK_COUNT))                          local->posixlk_count_req = 1;          } @@ -1613,18 +1627,18 @@ pl_lookup (call_frame_t *frame,                      pl_lookup_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->lookup, -                    loc, -                    xattr_req); +                    loc, xdata);          ret = 0;  out:          if (ret == -1) -                STACK_UNWIND_STRICT (lookup, frame, -1, 0, NULL, NULL, NULL, NULL); +                STACK_UNWIND_STRICT (lookup, frame, -1, 0, NULL, +                                     NULL, NULL, NULL);          return 0;  }  int  pl_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)  {          pl_local_t *local  = NULL;          gf_dirent_t *entry = NULL; @@ -1645,7 +1659,7 @@ pl_readdirp_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  unwind:          frame->local = NULL; -        STACK_UNWIND_STRICT (readdirp, frame, op_ret, op_errno, entries); +        STACK_UNWIND_STRICT (readdirp, frame, op_ret, op_errno, entries, xdata);          if (local)                  mem_put (local); @@ -1679,7 +1693,7 @@ pl_readdirp (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size,          return 0;  out: -        STACK_UNWIND_STRICT (readdirp, frame, -1, ENOMEM, NULL); +        STACK_UNWIND_STRICT (readdirp, frame, -1, ENOMEM, NULL, NULL);          return 0;  } @@ -2089,21 +2103,23 @@ fini (xlator_t *this)  int  pl_inodelk (call_frame_t *frame, xlator_t *this, -            const char *volume, loc_t *loc, int32_t cmd, struct gf_flock *flock); +            const char *volume, loc_t *loc, int32_t cmd, struct gf_flock *flock, +            dict_t *xdata);  int  pl_finodelk (call_frame_t *frame, xlator_t *this, -             const char *volume, fd_t *fd, int32_t cmd, struct gf_flock *flock); +             const char *volume, fd_t *fd, int32_t cmd, struct gf_flock *flock, +             dict_t *xdata);  int  pl_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);  int  pl_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);  struct xlator_fops fops = {          .lookup      = pl_lookup, diff --git a/xlators/features/locks/src/reservelk.c b/xlators/features/locks/src/reservelk.c index 7a75cdea1..11b724bc5 100644 --- a/xlators/features/locks/src/reservelk.c +++ b/xlators/features/locks/src/reservelk.c @@ -299,7 +299,8 @@ grant_blocked_reserve_locks (xlator_t *this, pl_inode_t *pl_inode)                          lock->user_flock.l_start,                          lock->user_flock.l_len); -                STACK_UNWIND_STRICT (lk, lock->frame, 0, 0, &lock->user_flock); +                STACK_UNWIND_STRICT (lk, lock->frame, 0, 0, &lock->user_flock, +                                     NULL);          }  } @@ -376,7 +377,9 @@ grant_blocked_lock_calls (xlator_t *this, pl_inode_t *pl_inode)                                  pl_trace_out (this, lock->frame, fd, NULL, cmd,                                                &lock->user_flock, -1, EAGAIN, NULL);                                  pl_update_refkeeper (this, fd->inode); -                                STACK_UNWIND_STRICT (lk, lock->frame, -1, EAGAIN, &lock->user_flock); +                                STACK_UNWIND_STRICT (lk, lock->frame, -1, +                                                     EAGAIN, &lock->user_flock, +                                                     NULL);                                  __destroy_lock (lock);                          }                  } diff --git a/xlators/features/mac-compat/src/mac-compat.c b/xlators/features/mac-compat/src/mac-compat.c index 188b593e4..cce621e67 100644 --- a/xlators/features/mac-compat/src/mac-compat.c +++ b/xlators/features/mac-compat/src/mac-compat.c @@ -57,7 +57,8 @@ static int32_t apple_xattr_len[] = {  int32_t  maccomp_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)  {          intptr_t ax = (intptr_t)this->private;          int i = 0; @@ -80,7 +81,7 @@ maccomp_getxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  }           } -        STACK_UNWIND_STRICT (getxattr, frame, op_ret, op_errno, dict); +        STACK_UNWIND_STRICT (getxattr, frame, op_ret, op_errno, dict, xdata);          return 0;  } @@ -88,7 +89,7 @@ maccomp_getxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int32_t  maccomp_getxattr (call_frame_t *frame, xlator_t *this, loc_t *loc, -                  const char *name) +                  const char *name, dict_t *xdata)  {          intptr_t ax = GF_XATTR_NONE;          int i = 0; @@ -109,14 +110,14 @@ maccomp_getxattr (call_frame_t *frame, xlator_t *this, loc_t *loc,          STACK_WIND (frame, maccomp_getxattr_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->getxattr, -                    loc, name); +                    loc, name, xdata);          return 0;  }  int32_t  maccomp_fgetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd, -                   const char *name) +                   const char *name, dict_t *xdata)  {          intptr_t ax = GF_XATTR_NONE;          int i = 0; @@ -137,21 +138,21 @@ maccomp_fgetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd,          STACK_WIND (frame, maccomp_getxattr_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->fgetxattr, -                    fd, name); +                    fd, name, xdata);          return 0;  }  int32_t  maccomp_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)  {          intptr_t ax = (intptr_t)this->private;          if (op_ret == -1 && ax != GF_XATTR_NONE)                  op_ret = op_errno = 0; -        STACK_UNWIND_STRICT (setxattr, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (setxattr, frame, op_ret, op_errno, xdata);          return 0;  } @@ -159,7 +160,7 @@ maccomp_setxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int32_t  maccomp_setxattr (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *dict, -                  int32_t flags) +                  int32_t flags, dict_t *xdata)  {          intptr_t ax = GF_XATTR_NONE;          int i = 0; @@ -177,14 +178,14 @@ maccomp_setxattr (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *dict,          STACK_WIND (frame, maccomp_setxattr_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->setxattr, -                    loc, dict, flags); +                    loc, dict, flags, xdata);          return 0;  }  int32_t  maccomp_fsetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *dict, -                   int32_t flags) +                   int32_t flags, dict_t *xdata)  {          intptr_t ax = GF_XATTR_NONE;          int i = 0; @@ -202,7 +203,7 @@ maccomp_fsetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *dict,          STACK_WIND (frame, maccomp_setxattr_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->fsetxattr, -                    fd, dict, flags); +                    fd, dict, flags, xdata);          return 0;  } diff --git a/xlators/features/marker/src/marker-quota.c b/xlators/features/marker/src/marker-quota.c index 43e4ec724..c8bb9e490 100644 --- a/xlators/features/marker/src/marker-quota.c +++ b/xlators/features/marker/src/marker-quota.c @@ -208,7 +208,7 @@ out:  int32_t  mq_dirty_inode_updation_done (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)  {          QUOTA_STACK_DESTROY (frame, this); @@ -217,7 +217,7 @@ mq_dirty_inode_updation_done (call_frame_t *frame, void *cookie, xlator_t *this,  int32_t  mq_release_lock_on_dirty_inode (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)  {          struct gf_flock   lock  = {0, };          quota_local_t    *local = NULL; @@ -229,7 +229,7 @@ mq_release_lock_on_dirty_inode (call_frame_t *frame, void *cookie, xlator_t *thi          if (op_ret == -1) {                  local->err = -1; -                mq_dirty_inode_updation_done (frame, NULL, this, 0, 0); +                mq_dirty_inode_updation_done (frame, NULL, this, 0, 0, NULL);                  return 0;          } @@ -247,7 +247,7 @@ mq_release_lock_on_dirty_inode (call_frame_t *frame, void *cookie, xlator_t *thi  	if (ret == -1) {                  local->err = -1;                  frame->local = NULL; -                mq_dirty_inode_updation_done (frame, NULL, this, 0, 0); +                mq_dirty_inode_updation_done (frame, NULL, this, 0, 0, NULL);                  return 0;          } @@ -261,20 +261,21 @@ mq_release_lock_on_dirty_inode (call_frame_t *frame, void *cookie, xlator_t *thi                      mq_dirty_inode_updation_done,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->inodelk, -                    this->name, &loc, F_SETLKW, &lock); +                    this->name, &loc, F_SETLKW, &lock, NULL);          loc_wipe (&loc);          return 0;  out: -        mq_dirty_inode_updation_done (frame, NULL, this, -1, 0); +        mq_dirty_inode_updation_done (frame, NULL, this, -1, 0, NULL);          return 0;  }  int32_t  mq_mark_inode_undirty (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)  {          int32_t        ret     = -1;          int64_t       *size    = NULL; @@ -315,14 +316,14 @@ wind:          STACK_WIND (frame, mq_release_lock_on_dirty_inode,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->setxattr, -                    &local->loc, newdict, 0); +                    &local->loc, newdict, 0, NULL);          ret = 0;  err:          if (op_ret == -1 || ret == -1) {                  local->err = -1; -                mq_release_lock_on_dirty_inode (frame, NULL, this, 0, 0); +                mq_release_lock_on_dirty_inode (frame, NULL, this, 0, 0, NULL);          }          if (newdict) @@ -385,7 +386,7 @@ mq_update_size_xattr (call_frame_t *frame, void *cookie, xlator_t *this,          STACK_WIND (frame, mq_mark_inode_undirty, FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->xattrop, &local->loc, -                    GF_XATTROP_ADD_ARRAY64, new_dict); +                    GF_XATTROP_ADD_ARRAY64, new_dict, NULL);          ret = 0; @@ -393,7 +394,7 @@ err:          if (op_ret == -1 || ret == -1) {                  local->err = -1; -                mq_release_lock_on_dirty_inode (frame, NULL, this, 0, 0); +                mq_release_lock_on_dirty_inode (frame, NULL, this, 0, 0, NULL);          }          if (new_dict) @@ -457,7 +458,7 @@ err:          if (ret) {                  local->err = -1; -                mq_release_lock_on_dirty_inode (frame, NULL, this, 0, 0); +                mq_release_lock_on_dirty_inode (frame, NULL, this, 0, 0, NULL);          }          if (dict) @@ -495,7 +496,8 @@ mq_get_child_contribution (call_frame_t *frame,                  val = -2;                  if (!mq_test_and_set_local_err (local, &val) &&                      val != -2) -                        mq_release_lock_on_dirty_inode (local->frame, NULL, this, 0, 0); +                        mq_release_lock_on_dirty_inode (local->frame, NULL, +                                                        this, 0, 0, NULL);                  goto exit;          } @@ -523,7 +525,7 @@ out:          if (val == 0) {                  mq_dirty_inode_readdir (local->frame, NULL, this, -                                                   0, 0, NULL); +                                        0, 0, NULL, NULL);          }          mq_local_unref (this, local); @@ -539,7 +541,7 @@ mq_readdir_cbk (call_frame_t *frame,                  xlator_t *this,                  int32_t op_ret,                  int32_t op_errno, -                gf_dirent_t *entries) +                gf_dirent_t *entries, dict_t *xdata)  {          char           contri_key [512]   = {0, };          int32_t        ret                = 0; @@ -559,7 +561,7 @@ mq_readdir_cbk (call_frame_t *frame,                          "readdir failed %s", strerror (op_errno));                  local->err = -1; -                mq_release_lock_on_dirty_inode (frame, NULL, this, 0, 0); +                mq_release_lock_on_dirty_inode (frame, NULL, this, 0, 0, NULL);                  goto end;          } else if (op_ret == 0) { @@ -681,7 +683,7 @@ mq_readdir_cbk (call_frame_t *frame,          }          if (ret && val != -2) { -                mq_release_lock_on_dirty_inode (frame, NULL, this, 0, 0); +                mq_release_lock_on_dirty_inode (frame, NULL, this, 0, 0, NULL);          }  end:          mq_local_unref (this, local); @@ -695,7 +697,7 @@ mq_dirty_inode_readdir (call_frame_t *frame,                          xlator_t *this,                          int32_t op_ret,                          int32_t op_errno, -                        fd_t *fd) +                        fd_t *fd, dict_t *xdata)  {          quota_local_t *local = NULL; @@ -703,7 +705,7 @@ mq_dirty_inode_readdir (call_frame_t *frame,          if (op_ret == -1) {                  local->err = -1; -                mq_release_lock_on_dirty_inode (frame, NULL, this, 0, 0); +                mq_release_lock_on_dirty_inode (frame, NULL, this, 0, 0, NULL);                  return 0;          } @@ -714,7 +716,7 @@ mq_dirty_inode_readdir (call_frame_t *frame,                      mq_readdir_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->readdir, -                    local->fd, READDIR_BUF, local->d_off); +                    local->fd, READDIR_BUF, local->d_off, xdata);          return 0;  } @@ -754,7 +756,7 @@ mq_check_if_still_dirty (call_frame_t *frame,          //the inode is not dirty anymore          if (dirty == 0) { -                mq_release_lock_on_dirty_inode (frame, NULL, this, 0, 0); +                mq_release_lock_on_dirty_inode (frame, NULL, this, 0, 0, NULL);                  return 0;          } @@ -771,14 +773,14 @@ mq_check_if_still_dirty (call_frame_t *frame,                     mq_dirty_inode_readdir,                     FIRST_CHILD(this),                     FIRST_CHILD(this)->fops->opendir, -                   &local->loc, fd); +                   &local->loc, fd, NULL);          ret = 0;  err:          if (op_ret == -1 || ret == -1) {                  local->err = -1; -                mq_release_lock_on_dirty_inode (frame, NULL, this, 0, 0); +                mq_release_lock_on_dirty_inode (frame, NULL, this, 0, 0, NULL);          }          if (fd != NULL) { @@ -789,15 +791,15 @@ err:  }  int32_t -mq_get_dirty_xattr (call_frame_t *frame, void *cookie, -                    xlator_t *this, int32_t op_ret, int32_t op_errno) +mq_get_dirty_xattr (call_frame_t *frame, void *cookie, xlator_t *this, +                    int32_t op_ret, int32_t op_errno, dict_t *xdata)  {          int32_t        ret       = -1;          dict_t        *xattr_req = NULL;          quota_local_t *local     = NULL;          if (op_ret == -1) { -                mq_dirty_inode_updation_done (frame, NULL, this, 0, 0); +                mq_dirty_inode_updation_done (frame, NULL, this, 0, 0, NULL);                  return 0;          } @@ -829,7 +831,7 @@ mq_get_dirty_xattr (call_frame_t *frame, void *cookie,  err:          if (ret) {                  local->err = -1; -                mq_release_lock_on_dirty_inode(frame, NULL, this, 0, 0); +                mq_release_lock_on_dirty_inode(frame, NULL, this, 0, 0, NULL);          }          if (xattr_req) @@ -896,7 +898,7 @@ mq_update_dirty_inode (xlator_t *this,                      mq_get_dirty_xattr,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->inodelk, -                    this->name, &local->loc, F_SETLKW, &lock); +                    this->name, &local->loc, F_SETLKW, &lock, NULL);          return 1;  fr_destroy: @@ -909,7 +911,7 @@ out:  int32_t  mq_inode_creation_done (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)  {          quota_local_t *local = NULL; @@ -931,7 +933,7 @@ mq_inode_creation_done (call_frame_t *frame, void *cookie, xlator_t *this,  int32_t  mq_xattr_creation_release_lock (call_frame_t *frame, void *cookie,                                  xlator_t *this, int32_t op_ret, -                                int32_t op_errno) +                                int32_t op_errno, dict_t *xdata)  {          struct gf_flock  lock  = {0, };          quota_local_t   *local = NULL; @@ -949,7 +951,7 @@ mq_xattr_creation_release_lock (call_frame_t *frame, void *cookie,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->inodelk,                      this->name, &local->loc, -                    F_SETLKW, &lock); +                    F_SETLKW, &lock, NULL);          return 0;  } @@ -957,7 +959,8 @@ mq_xattr_creation_release_lock (call_frame_t *frame, void *cookie,  int32_t  mq_create_dirty_xattr (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)  {          int32_t          ret       = -1;          dict_t          *newdict   = NULL; @@ -986,16 +989,16 @@ mq_create_dirty_xattr (call_frame_t *frame, void *cookie, xlator_t *this,                  STACK_WIND (frame, mq_xattr_creation_release_lock,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->setxattr, -                            &local->loc, newdict, 0); +                            &local->loc, newdict, 0, NULL);          } else { -                mq_xattr_creation_release_lock (frame, NULL, this, 0, 0); +                mq_xattr_creation_release_lock (frame, NULL, this, 0, 0, NULL);          }          ret = 0;  err:          if (ret < 0) { -                mq_xattr_creation_release_lock (frame, NULL, this, 0, 0); +                mq_xattr_creation_release_lock (frame, NULL, this, 0, 0, NULL);          }          if (newdict != NULL) @@ -1061,7 +1064,7 @@ mq_create_xattr (xlator_t *this, call_frame_t *frame)          STACK_WIND (frame, mq_create_dirty_xattr, FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->xattrop, &local->loc, -                    GF_XATTROP_ADD_ARRAY64, dict); +                    GF_XATTROP_ADD_ARRAY64, dict, NULL);          ret = 0;  free_size: @@ -1079,7 +1082,7 @@ err:  out:          if (ret < 0) { -                mq_xattr_creation_release_lock (frame, NULL, this, 0, 0); +                mq_xattr_creation_release_lock (frame, NULL, this, 0, 0, NULL);          }          return 0; @@ -1124,7 +1127,7 @@ mq_check_n_set_inode_xattr (call_frame_t *frame, void *cookie,          }  out: -        mq_xattr_creation_release_lock (frame, NULL, this, 0, 0); +        mq_xattr_creation_release_lock (frame, NULL, this, 0, 0, NULL);          return 0;  create_xattr: @@ -1139,7 +1142,7 @@ create_xattr:  int32_t  mq_get_xattr (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)  {          dict_t        *xattr_req = NULL;          quota_local_t *local     = NULL; @@ -1175,14 +1178,14 @@ mq_get_xattr (call_frame_t *frame, void *cookie, xlator_t *this,          return 0;  err: -        mq_xattr_creation_release_lock (frame, NULL, this, 0, 0); +        mq_xattr_creation_release_lock (frame, NULL, this, 0, 0, NULL);          if (xattr_req)                  dict_unref (xattr_req);          return 0;  lock_err: -        mq_inode_creation_done (frame, NULL, this, 0, 0); +        mq_inode_creation_done (frame, NULL, this, 0, 0, NULL);          return 0;  } @@ -1224,7 +1227,7 @@ mq_set_inode_xattr (xlator_t *this, loc_t *loc)                      mq_get_xattr,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->inodelk, -                    this->name, &local->loc, F_SETLKW, &lock); +                    this->name, &local->loc, F_SETLKW, &lock, NULL);          return 0; @@ -1297,7 +1300,7 @@ mq_xattr_updation_done (call_frame_t *frame,                          xlator_t *this,                          int32_t op_ret,                          int32_t op_errno, -                        dict_t *dict) +                        dict_t *dict, dict_t *xdata)  {          QUOTA_STACK_DESTROY (frame, this);          return 0; @@ -1306,7 +1309,7 @@ mq_xattr_updation_done (call_frame_t *frame,  int32_t  mq_inodelk_cbk (call_frame_t *frame, void *cookie, -                xlator_t *this, int32_t op_ret, int32_t op_errno) +                xlator_t *this, int32_t op_ret, int32_t op_errno, dict_t *xdata)  {          int32_t         ret    = 0;          gf_boolean_t    status = _gf_false; @@ -1320,7 +1323,7 @@ mq_inodelk_cbk (call_frame_t *frame, void *cookie,                                  "unlocking failed on path (%s)(%s)",                                  local->parent_loc.path, strerror (op_errno));                  } -                mq_xattr_updation_done (frame, NULL, this, 0, 0, NULL); +                mq_xattr_updation_done (frame, NULL, this, 0, 0, NULL, NULL);                  return 0;          } @@ -1330,11 +1333,12 @@ mq_inodelk_cbk (call_frame_t *frame, void *cookie,          if ((strcmp (local->parent_loc.path, "/") == 0)              || (local->delta == 0)) { -                mq_xattr_updation_done (frame, NULL, this, 0, 0, NULL); +                mq_xattr_updation_done (frame, NULL, this, 0, 0, NULL, NULL);          } else {                  ret = mq_get_parent_inode_local (this, local);                  if (ret < 0) { -                        mq_xattr_updation_done (frame, NULL, this, 0, 0, NULL); +                        mq_xattr_updation_done (frame, NULL, this, 0, 0, NULL, +                                                NULL);                          goto out;                  }                  status = _gf_true; @@ -1343,7 +1347,8 @@ mq_inodelk_cbk (call_frame_t *frame, void *cookie,                  if (ret == 0 && status == _gf_false) {                          mq_get_lock_on_parent (frame, this);                  } else { -                        mq_xattr_updation_done (frame, NULL, this, 0, 0, NULL); +                        mq_xattr_updation_done (frame, NULL, this, 0, 0, NULL, +                                                NULL);                  }          }  out: @@ -1355,7 +1360,7 @@ out:  int32_t  mq_release_parent_lock (call_frame_t *frame, void *cookie,                          xlator_t *this, int32_t op_ret, -                        int32_t op_errno) +                        int32_t op_errno, dict_t *xdata)  {          int32_t            ret      = 0;          quota_local_t     *local    = NULL; @@ -1401,12 +1406,12 @@ wind:                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->inodelk,                      this->name, &local->parent_loc, -                    F_SETLKW, &lock); +                    F_SETLKW, &lock, NULL);          return 0;  err:          mq_xattr_updation_done (frame, NULL, this, -                             0, 0 , NULL); +                                0, 0 , NULL, NULL);          return 0;  } @@ -1417,7 +1422,7 @@ mq_mark_undirty (call_frame_t *frame,                   xlator_t *this,                   int32_t op_ret,                   int32_t op_errno, -                 dict_t *dict) +                 dict_t *dict, dict_t *xdata)  {          int32_t            ret          = -1;          int64_t           *size         = NULL; @@ -1478,14 +1483,14 @@ mq_mark_undirty (call_frame_t *frame,          STACK_WIND (frame, mq_release_parent_lock,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->setxattr, -                    &local->parent_loc, newdict, 0); +                    &local->parent_loc, newdict, 0, NULL);          ret = 0;  err:          if (op_ret == -1 || ret == -1) {                  local->err = op_errno; -                mq_release_parent_lock (frame, NULL, this, 0, 0); +                mq_release_parent_lock (frame, NULL, this, 0, 0, NULL);          }          if (newdict) @@ -1501,7 +1506,7 @@ mq_update_parent_size (call_frame_t *frame,                         xlator_t *this,                         int32_t op_ret,                         int32_t op_errno, -                       dict_t *dict) +                       dict_t *dict, dict_t *xdata)  {          int64_t             *size       = NULL;          int32_t              ret        = -1; @@ -1568,12 +1573,12 @@ mq_update_parent_size (call_frame_t *frame,                      FIRST_CHILD(this)->fops->xattrop,                      &local->parent_loc,                      GF_XATTROP_ADD_ARRAY64, -                    newdict); +                    newdict, NULL);          ret = 0;  err:          if (op_ret == -1 || ret < 0) {                  local->err = op_errno; -                mq_release_parent_lock (frame, NULL, this, 0, 0); +                mq_release_parent_lock (frame, NULL, this, 0, 0, NULL);          }          if (newdict) @@ -1661,7 +1666,7 @@ unlock:          local->delta = size_int - contri_int;          if (local->delta == 0) { -                mq_mark_undirty (frame, NULL, this, 0, 0, NULL); +                mq_mark_undirty (frame, NULL, this, 0, 0, NULL, NULL);                  return 0;          } @@ -1694,14 +1699,14 @@ unlock:                      FIRST_CHILD(this)->fops->xattrop,                      &local->loc,                      GF_XATTROP_ADD_ARRAY64, -                    newdict); +                    newdict, NULL);          ret = 0;  err:          if (op_ret == -1 || ret < 0) {                  local->err = op_errno; -                mq_release_parent_lock (frame, NULL, this, 0, 0); +                mq_release_parent_lock (frame, NULL, this, 0, 0, NULL);          }          if (newdict) @@ -1713,7 +1718,7 @@ err:  int32_t  mq_fetch_child_size_and_contri (call_frame_t *frame, void *cookie,                                  xlator_t *this, int32_t op_ret, -                                int32_t op_errno) +                                int32_t op_errno, dict_t *xdata)  {          int32_t            ret              = -1;          char               contri_key [512] = {0, }; @@ -1795,7 +1800,7 @@ err:                  mq_set_ctx_updation_status (local->ctx, _gf_false); -                mq_release_parent_lock (frame, NULL, this, 0, 0); +                mq_release_parent_lock (frame, NULL, this, 0, 0, NULL);          }          if (newdict) @@ -1806,7 +1811,7 @@ err:  int32_t  mq_markdirty (call_frame_t *frame, void *cookie, -              xlator_t *this, int32_t op_ret, int32_t op_errno) +              xlator_t *this, int32_t op_ret, int32_t op_errno, dict_t *xdata)  {          int32_t        ret      = -1;          dict_t        *dict     = NULL; @@ -1823,7 +1828,7 @@ mq_markdirty (call_frame_t *frame, void *cookie,                  mq_set_ctx_updation_status (local->ctx, _gf_false); -                mq_inodelk_cbk (frame, NULL, this, 0, 0); +                mq_inodelk_cbk (frame, NULL, this, 0, 0, NULL);                  return 0;          } @@ -1848,7 +1853,7 @@ mq_markdirty (call_frame_t *frame, void *cookie,          STACK_WIND (frame, mq_fetch_child_size_and_contri,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->setxattr, -                    &local->parent_loc, dict, 0); +                    &local->parent_loc, dict, 0, NULL);          ret = 0;  err: @@ -1857,7 +1862,7 @@ err:                  mq_set_ctx_updation_status (local->ctx, _gf_false); -                mq_release_parent_lock (frame, NULL, this, 0, 0); +                mq_release_parent_lock (frame, NULL, this, 0, 0, NULL);          }          if (dict) @@ -1895,7 +1900,7 @@ mq_get_lock_on_parent (call_frame_t *frame, xlator_t *this)                      mq_markdirty,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->inodelk, -                    this->name, &local->parent_loc, F_SETLKW, &lock); +                    this->name, &local->parent_loc, F_SETLKW, &lock, NULL);          return 0; @@ -2224,7 +2229,7 @@ out:  int32_t  mq_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)  {          QUOTA_STACK_DESTROY (frame, this); @@ -2233,7 +2238,7 @@ mq_removexattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int32_t  _mq_inode_remove_done (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)  {          int32_t        ret                = 0;          char           contri_key [512]   = {0, }; @@ -2242,7 +2247,7 @@ _mq_inode_remove_done (call_frame_t *frame, void *cookie, xlator_t *this,          local = (quota_local_t *) frame->local;          if (op_ret == -1 || local->err == -1) { -                mq_removexattr_cbk (frame, NULL, this, -1, 0); +                mq_removexattr_cbk (frame, NULL, this, -1, 0, NULL);                  return 0;          } @@ -2253,10 +2258,10 @@ _mq_inode_remove_done (call_frame_t *frame, void *cookie, xlator_t *this,                  STACK_WIND (frame, mq_removexattr_cbk, FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->removexattr, -                            &local->loc, contri_key); +                            &local->loc, contri_key, NULL);                  ret = 0;          } else { -                mq_removexattr_cbk (frame, NULL, this, 0, 0); +                mq_removexattr_cbk (frame, NULL, this, 0, 0, NULL);          }          if (strcmp (local->parent_loc.path, "/") != 0) { @@ -2274,7 +2279,8 @@ out:  int32_t  mq_inode_remove_done (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)  {          int32_t            ret   = -1;          struct gf_flock    lock  = {0, }; @@ -2321,13 +2327,13 @@ mq_inode_remove_done (call_frame_t *frame, void *cookie, xlator_t *this,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->inodelk,                      this->name, &local->parent_loc, -                    F_SETLKW, &lock); +                    F_SETLKW, &lock, NULL);          return 0;  }  int32_t -mq_reduce_parent_size_xattr (call_frame_t *frame, void *cookie, -                             xlator_t *this, int32_t op_ret, int32_t op_errno) +mq_reduce_parent_size_xattr (call_frame_t *frame, void *cookie, xlator_t *this, +                             int32_t op_ret, int32_t op_errno, dict_t *xdata)  {          int32_t                  ret               = -1;          int64_t                 *size              = NULL; @@ -2364,13 +2370,13 @@ mq_reduce_parent_size_xattr (call_frame_t *frame, void *cookie,          STACK_WIND (frame, mq_inode_remove_done, FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->xattrop, &local->parent_loc, -                    GF_XATTROP_ADD_ARRAY64, dict); +                    GF_XATTROP_ADD_ARRAY64, dict, NULL);          dict_unref (dict);          return 0;  err:          local->err = 1; -        mq_inode_remove_done (frame, NULL, this, -1, 0, NULL); +        mq_inode_remove_done (frame, NULL, this, -1, 0, NULL, NULL);          if (dict)                  dict_unref (dict);          return 0; @@ -2455,7 +2461,7 @@ mq_reduce_parent_size (xlator_t *this, loc_t *loc, int64_t contri)                      mq_reduce_parent_size_xattr,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->inodelk, -                    this->name, &local->parent_loc, F_SETLKW, &lock); +                    this->name, &local->parent_loc, F_SETLKW, &lock, NULL);          local = NULL;          ret = 0; diff --git a/xlators/features/marker/src/marker-quota.h b/xlators/features/marker/src/marker-quota.h index 30ee44264..4dd855fd7 100644 --- a/xlators/features/marker/src/marker-quota.h +++ b/xlators/features/marker/src/marker-quota.h @@ -123,7 +123,7 @@ mq_initiate_quota_txn (xlator_t *, loc_t *);  int32_t  mq_dirty_inode_readdir (call_frame_t *, void *, xlator_t *, -                        int32_t, int32_t, fd_t *); +                        int32_t, int32_t, fd_t *, dict_t *);  int32_t  mq_reduce_parent_size (xlator_t *, loc_t *, int64_t); diff --git a/xlators/features/marker/src/marker.c b/xlators/features/marker/src/marker.c index fcaafe746..4f143f5ef 100644 --- a/xlators/features/marker/src/marker.c +++ b/xlators/features/marker/src/marker.c @@ -226,13 +226,14 @@ stat_stampfile (xlator_t *this, marker_conf_t *priv,  int32_t  marker_getxattr_stampfile_cbk (call_frame_t *frame, xlator_t *this, -                               const char *name, struct volume_mark *vol_mark) +                               const char *name, struct volume_mark *vol_mark, +                               dict_t *xdata)  {          int32_t   ret  = -1;          dict_t   *dict = NULL;          if (vol_mark == NULL){ -                STACK_UNWIND_STRICT (getxattr, frame, -1, ENOMEM, NULL); +                STACK_UNWIND_STRICT (getxattr, frame, -1, ENOMEM, NULL, NULL);                  goto out;          } @@ -245,7 +246,7 @@ marker_getxattr_stampfile_cbk (call_frame_t *frame, xlator_t *this,                  gf_log (this->name, GF_LOG_WARNING, "failed to set key %s",                          name); -        STACK_UNWIND_STRICT (getxattr, frame, 0, 0, dict); +        STACK_UNWIND_STRICT (getxattr, frame, 0, 0, dict, xdata);          dict_unref (dict);  out: @@ -269,14 +270,15 @@ call_from_special_client (call_frame_t *frame, xlator_t *this, const char *name)          stat_stampfile (this, priv, &vol_mark); -        marker_getxattr_stampfile_cbk (frame, this, name, vol_mark); +        marker_getxattr_stampfile_cbk (frame, this, name, vol_mark, NULL);  out:          return ret;  }  int32_t  marker_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)  {          if (cookie) {                  gf_log (this->name, GF_LOG_DEBUG, @@ -284,13 +286,13 @@ marker_getxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  dict_foreach (dict, marker_filter_quota_xattr, NULL);          } -        STACK_UNWIND_STRICT (getxattr, frame, op_ret, op_errno, dict); +        STACK_UNWIND_STRICT (getxattr, frame, op_ret, op_errno, dict, xdata);          return 0;  }  int32_t  marker_getxattr (call_frame_t *frame, xlator_t *this, loc_t *loc, -                 const char *name) +                 const char *name, dict_t *xdata)  {          gf_boolean_t   ret    = _gf_false;          marker_conf_t *priv   = NULL; @@ -317,7 +319,7 @@ wind:                  STACK_WIND_COOKIE (frame, marker_getxattr_cbk, (void *)cookie,                                     FIRST_CHILD(this),                                     FIRST_CHILD(this)->fops->getxattr, loc, -                                   name); +                                   name, xdata);          }          return 0; @@ -342,7 +344,7 @@ marker_setxattr_done (call_frame_t *frame)  int  marker_specific_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)  {          int32_t         ret   = 0;          int32_t         done  = 0; @@ -416,7 +418,8 @@ marker_start_setxattr (call_frame_t *frame, xlator_t *this)          }          STACK_WIND (frame, marker_specific_setxattr_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->setxattr, &local->loc, dict, 0); +                    FIRST_CHILD(this)->fops->setxattr, &local->loc, dict, 0, +                    NULL);          ret = 0;  out: @@ -476,7 +479,7 @@ int32_t  marker_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)  {          marker_conf_t      *priv    = NULL;          marker_local_t     *local   = NULL; @@ -491,7 +494,7 @@ marker_mkdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          frame->local = NULL;          STACK_UNWIND_STRICT (mkdir, frame, op_ret, op_errno, inode, -                             buf, preparent, postparent); +                             buf, preparent, postparent, xdata);          if (op_ret == -1 || local == NULL)                  goto out; @@ -512,7 +515,7 @@ out:  int  marker_mkdir (call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode, -              dict_t *params) +              mode_t umask, dict_t *xdata)  {          int32_t          ret   = 0;          marker_local_t  *local = NULL; @@ -533,12 +536,12 @@ marker_mkdir (call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode,                  goto err;  wind:          STACK_WIND (frame, marker_mkdir_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->mkdir, loc, mode, params); +                    FIRST_CHILD(this)->fops->mkdir, loc, mode, umask, xdata);          return 0;  err:          STACK_UNWIND_STRICT (mkdir, frame, -1, ENOMEM, NULL, -                             NULL, NULL, NULL); +                             NULL, NULL, NULL, NULL);          return 0;  } @@ -547,7 +550,7 @@ int32_t  marker_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)  {          marker_local_t     *local   = NULL;          marker_conf_t      *priv    = NULL; @@ -562,7 +565,7 @@ marker_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          frame->local = NULL;          STACK_UNWIND_STRICT (create, frame, op_ret, op_errno, fd, inode, buf, -                             preparent, postparent); +                             preparent, postparent, xdata);          if (op_ret == -1 || local == NULL)                  goto out; @@ -583,7 +586,7 @@ out:  int32_t  marker_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          ret   = 0;          marker_local_t  *local = NULL; @@ -604,12 +607,12 @@ marker_create (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t flags,                  goto err;  wind:          STACK_WIND (frame, marker_create_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->create, loc, flags, mode, fd, -                    params); +                    FIRST_CHILD(this)->fops->create, loc, flags, mode, umask, +                    fd, xdata);          return 0;  err:          STACK_UNWIND_STRICT (create, frame, -1, ENOMEM, NULL, NULL, NULL, NULL, -                             NULL); +                             NULL, NULL);          return 0;  } @@ -618,7 +621,7 @@ err:  int32_t  marker_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)  {          marker_conf_t      *priv    = NULL;          marker_local_t     *local   = NULL; @@ -632,7 +635,8 @@ marker_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);          if (op_ret == -1 || local == NULL)                  goto out; @@ -658,7 +662,7 @@ marker_writev (call_frame_t *frame,                 struct iovec *vector,                 int32_t count,                 off_t offset, uint32_t flags, -               struct iobref *iobref) +               struct iobref *iobref, dict_t *xdata)  {          int32_t          ret   = 0;          marker_local_t  *local = NULL; @@ -680,10 +684,10 @@ marker_writev (call_frame_t *frame,  wind:          STACK_WIND (frame, marker_writev_cbk, FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->writev, fd, vector, count, offset, -                    flags, iobref); +                    flags, iobref, xdata);          return 0;  err: -        STACK_UNWIND_STRICT (writev, frame, -1, ENOMEM, NULL, NULL); +        STACK_UNWIND_STRICT (writev, frame, -1, ENOMEM, NULL, NULL, NULL);          return 0;  } @@ -692,7 +696,7 @@ err:  int32_t  marker_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)  {          marker_conf_t      *priv    = NULL;          marker_local_t     *local   = NULL; @@ -707,7 +711,7 @@ marker_rmdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          frame->local = NULL;          STACK_UNWIND_STRICT (rmdir, frame, op_ret, op_errno, preparent, -                             postparent); +                             postparent, xdata);          if (op_ret == -1 || local == NULL)                  goto out; @@ -726,7 +730,8 @@ out:  }  int32_t -marker_rmdir (call_frame_t *frame, xlator_t *this, loc_t *loc, int flags) +marker_rmdir (call_frame_t *frame, xlator_t *this, loc_t *loc, int flags, +              dict_t *xdata)  {          int32_t          ret   = 0;          marker_local_t  *local = NULL; @@ -747,10 +752,10 @@ marker_rmdir (call_frame_t *frame, xlator_t *this, loc_t *loc, int flags)                  goto err;  wind:          STACK_WIND (frame, marker_rmdir_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->rmdir, loc, flags); +                    FIRST_CHILD(this)->fops->rmdir, loc, flags, xdata);          return 0;  err: -        STACK_UNWIND_STRICT (rmdir, frame, -1, ENOMEM, NULL, NULL); +        STACK_UNWIND_STRICT (rmdir, frame, -1, ENOMEM, NULL, NULL, NULL);          return 0;  } @@ -759,7 +764,7 @@ err:  int32_t  marker_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)  {          marker_conf_t      *priv    = NULL;          marker_local_t     *local   = NULL; @@ -774,7 +779,7 @@ marker_unlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          frame->local = NULL;          STACK_UNWIND_STRICT (unlink, frame, op_ret, op_errno, preparent, -                             postparent); +                             postparent, xdata);          if (op_ret == -1 || local == NULL)                  goto out; @@ -795,7 +800,8 @@ out:  int32_t  marker_unlink_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)  {          marker_local_t *local = NULL; @@ -812,18 +818,20 @@ marker_unlink_stat_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          local->ia_nlink = buf->ia_nlink;          STACK_WIND (frame, marker_unlink_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->unlink, &local->loc); +                    FIRST_CHILD(this)->fops->unlink, &local->loc, local->xflag, +                    NULL);          return 0;  err:          frame->local = NULL; -        STACK_UNWIND_STRICT (unlink, frame, -1, op_errno, NULL, NULL); +        STACK_UNWIND_STRICT (unlink, frame, -1, op_errno, NULL, NULL, NULL);          marker_local_unref (local);          return 0;  }  int32_t -marker_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc) +marker_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc, int xflag, +               dict_t *xdata)  {          int32_t          ret   = 0;          marker_local_t  *local = NULL; @@ -835,7 +843,7 @@ marker_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc)                  goto unlink_wind;          local = mem_get0 (this->local_pool); - +        local->xflag = xflag;          MARKER_INIT_LOCAL (frame, local);          ret = loc_copy (&local->loc, loc); @@ -847,16 +855,16 @@ marker_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc)                  uuid_copy (loc->gfid, loc->inode->gfid);          STACK_WIND (frame, marker_unlink_stat_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->stat, loc); +                    FIRST_CHILD(this)->fops->stat, loc, xdata);          return 0;  unlink_wind:          STACK_WIND (frame, marker_unlink_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->unlink, loc); +                    FIRST_CHILD(this)->fops->unlink, loc, xflag, xdata);          return 0;  err:          frame->local = NULL; -        STACK_UNWIND_STRICT (unlink, frame, -1, ENOMEM, NULL, NULL); +        STACK_UNWIND_STRICT (unlink, frame, -1, ENOMEM, NULL, NULL, NULL);          marker_local_unref (local);          return 0;  } @@ -866,7 +874,7 @@ int32_t  marker_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 *postparent, dict_t *xdata)  {          marker_local_t     *local   = NULL;          marker_conf_t      *priv    = NULL; @@ -881,7 +889,7 @@ marker_link_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          frame->local = NULL;          STACK_UNWIND_STRICT (link, frame, op_ret, op_errno, inode, buf, -                             preparent, postparent); +                             preparent, postparent, xdata);          if (op_ret == -1 || local == NULL)                  goto out; @@ -900,7 +908,8 @@ out:  }  int32_t -marker_link (call_frame_t *frame, xlator_t *this, loc_t *oldloc, loc_t *newloc) +marker_link (call_frame_t *frame, xlator_t *this, loc_t *oldloc, loc_t *newloc, +             dict_t *xdata)  {          int32_t          ret   = 0;          marker_local_t  *local = NULL; @@ -921,10 +930,11 @@ marker_link (call_frame_t *frame, xlator_t *this, loc_t *oldloc, loc_t *newloc)                  goto err;  wind:          STACK_WIND (frame, marker_link_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->link, oldloc, newloc); +                    FIRST_CHILD(this)->fops->link, oldloc, newloc, xdata);          return 0;  err: -        STACK_UNWIND_STRICT (link, frame, -1, ENOMEM, NULL, NULL, NULL, NULL); +        STACK_UNWIND_STRICT (link, frame, -1, ENOMEM, NULL, NULL, NULL, NULL, +                             NULL);          return 0;  } @@ -932,7 +942,7 @@ err:  int32_t  marker_rename_done (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)  {          marker_local_t *local  = NULL, *oplocal = NULL;          loc_t           newloc = {0, }; @@ -962,7 +972,7 @@ marker_rename_done (call_frame_t *frame, void *cookie, xlator_t *this,                  local->stub = NULL;          } else if (local->err != 0) {                  STACK_UNWIND_STRICT (rename, frame, -1, local->err, NULL, NULL, -                                     NULL, NULL, NULL); +                                     NULL, NULL, NULL, NULL);          }          mq_reduce_parent_size (this, &oplocal->loc, oplocal->contribution); @@ -998,7 +1008,7 @@ marker_rename_done (call_frame_t *frame, void *cookie, xlator_t *this,  int32_t  marker_rename_release_newp_lock (call_frame_t *frame, void *cookie,                                   xlator_t *this, int32_t op_ret, -                                 int32_t op_errno) +                                 int32_t op_errno, dict_t *xdata)  {          marker_local_t  *local = NULL, *oplocal = NULL;          struct gf_flock  lock  = {0, }; @@ -1019,7 +1029,7 @@ marker_rename_release_newp_lock (call_frame_t *frame, void *cookie,          }          if (local->next_lock_on == NULL) { -                marker_rename_done (frame, NULL, this, 0, 0); +                marker_rename_done (frame, NULL, this, 0, 0, NULL);                  goto out;          } @@ -1033,7 +1043,7 @@ marker_rename_release_newp_lock (call_frame_t *frame, void *cookie,                      marker_rename_done,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->inodelk, -                    this->name, &local->parent_loc, F_SETLKW, &lock); +                    this->name, &local->parent_loc, F_SETLKW, &lock, NULL);  out:          return 0; @@ -1043,7 +1053,7 @@ out:  int32_t  marker_rename_release_oldp_lock (call_frame_t *frame, void *cookie,                                   xlator_t *this, int32_t op_ret, -                                 int32_t op_errno) +                                 int32_t op_errno, dict_t *xdata)  {          marker_local_t  *local = NULL, *oplocal = NULL;          struct gf_flock  lock  = {0, }; @@ -1069,7 +1079,7 @@ marker_rename_release_oldp_lock (call_frame_t *frame, void *cookie,                      marker_rename_release_newp_lock,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->inodelk, -                    this->name, &oplocal->parent_loc, F_SETLKW, &lock); +                    this->name, &oplocal->parent_loc, F_SETLKW, &lock, NULL);          return 0;  } @@ -1078,7 +1088,8 @@ int32_t  marker_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)  {          marker_conf_t  *priv                 = NULL;          marker_local_t *local                = NULL; @@ -1113,7 +1124,7 @@ marker_rename_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  stub = fop_rename_cbk_stub (frame, default_rename_cbk, op_ret,                                              op_errno, buf, preoldparent,                                              postoldparent, prenewparent, -                                            postnewparent); +                                            postnewparent, xdata);                  if (stub == NULL) {                          local->err = ENOMEM;                          goto quota_err; @@ -1143,7 +1154,7 @@ marker_rename_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  STACK_WIND_COOKIE (frame, marker_rename_release_oldp_lock,                                     frame->cookie, FIRST_CHILD(this),                                     FIRST_CHILD(this)->fops->removexattr, -                                   &newloc, contri_key); +                                   &newloc, contri_key, NULL);                  loc_wipe (&newloc);          } else { @@ -1151,7 +1162,7 @@ marker_rename_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  STACK_UNWIND_STRICT (rename, frame, op_ret, op_errno, buf,                                       preoldparent, postoldparent, prenewparent, -                                     postnewparent); +                                     postnewparent, xdata);                  if ((op_ret < 0) || (local == NULL)) {                          goto out; @@ -1174,15 +1185,14 @@ out:          return 0;  quota_err: -        marker_rename_release_oldp_lock (frame, NULL, this, 0, 0); +        marker_rename_release_oldp_lock (frame, NULL, this, 0, 0, NULL);          return 0;  }  int32_t  marker_do_rename (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)  {          marker_local_t       *local           = NULL, *oplocal = NULL;          char                  contri_key[512] = {0, }; @@ -1221,12 +1231,12 @@ marker_do_rename (call_frame_t *frame, void *cookie, xlator_t *this,          STACK_WIND (frame, marker_rename_cbk, FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->rename, &oplocal->loc, -                    &local->loc); +                    &local->loc, NULL);          return 0;  err: -        marker_rename_release_oldp_lock (frame, NULL, this, 0, 0); +        marker_rename_release_oldp_lock (frame, NULL, this, 0, 0, NULL);          return 0;  } @@ -1234,7 +1244,7 @@ err:  int32_t  marker_get_newpath_contribution (call_frame_t *frame, void *cookie,                                   xlator_t *this, int32_t op_ret, -                                 int32_t op_errno, dict_t *dict) +                                 int32_t op_errno, dict_t *dict, dict_t *xdata)  {          marker_local_t *local           = NULL, *oplocal = NULL;          char            contri_key[512] = {0, }; @@ -1286,14 +1296,14 @@ marker_get_newpath_contribution (call_frame_t *frame, void *cookie,                  STACK_WIND_COOKIE (frame, marker_do_rename,                                     frame->cookie, FIRST_CHILD(this),                                     FIRST_CHILD(this)->fops->getxattr, -                                   &local->loc, contri_key); +                                   &local->loc, contri_key, NULL);          } else { -                marker_do_rename (frame, NULL, this, 0, 0, NULL); +                marker_do_rename (frame, NULL, this, 0, 0, NULL, NULL);          }          return 0;  err: -        marker_rename_release_oldp_lock (frame, NULL, this, 0, 0); +        marker_rename_release_oldp_lock (frame, NULL, this, 0, 0, NULL);          return 0;  } @@ -1301,7 +1311,7 @@ err:  int32_t  marker_get_oldpath_contribution (call_frame_t *frame, void *cookie,                                   xlator_t *this, int32_t op_ret, -                                 int32_t op_errno) +                                 int32_t op_errno, dict_t *xdata)  {          marker_local_t *local           = NULL, *oplocal = NULL;          char            contri_key[512] = {0, }; @@ -1340,20 +1350,20 @@ marker_get_oldpath_contribution (call_frame_t *frame, void *cookie,          STACK_WIND_COOKIE (frame, marker_get_newpath_contribution,                             frame->cookie, FIRST_CHILD(this),                             FIRST_CHILD(this)->fops->getxattr, -                           &oplocal->loc, contri_key); +                           &oplocal->loc, contri_key, NULL);          return 0;  quota_err: -        marker_rename_release_oldp_lock (frame, NULL, this, 0, 0); +        marker_rename_release_oldp_lock (frame, NULL, this, 0, 0, NULL);          return 0;  lock_err:          if ((local->next_lock_on == NULL)              || (local->next_lock_on == &local->parent_loc)) {                  local->next_lock_on = NULL; -                marker_rename_release_oldp_lock (frame, NULL, this, 0, 0); +                marker_rename_release_oldp_lock (frame, NULL, this, 0, 0, NULL);          } else { -                marker_rename_release_newp_lock (frame, NULL, this, 0, 0); +                marker_rename_release_newp_lock (frame, NULL, this, 0, 0, NULL);          }          return 0; @@ -1362,7 +1372,7 @@ lock_err:  int32_t  marker_rename_inodelk_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)  {          marker_local_t  *local = NULL, *oplocal = NULL;          loc_t           *loc   = NULL; @@ -1397,22 +1407,22 @@ marker_rename_inodelk_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->inodelk,                              this->name, local->next_lock_on, -                            F_SETLKW, &lock); +                            F_SETLKW, &lock, NULL);          } else { -                marker_get_oldpath_contribution (frame, 0, this, 0, 0); +                marker_get_oldpath_contribution (frame, 0, this, 0, 0, NULL);          }          return 0;  err: -        marker_rename_done (frame, NULL, this, 0, 0); +        marker_rename_done (frame, NULL, this, 0, 0, NULL);          return 0;  }  int32_t  marker_rename (call_frame_t *frame, xlator_t *this, loc_t *oldloc, -               loc_t *newloc) +               loc_t *newloc, dict_t *xdata)  {          int32_t         ret              = 0;          marker_local_t *local            = NULL; @@ -1481,18 +1491,18 @@ marker_rename (call_frame_t *frame, xlator_t *this, loc_t *oldloc,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->inodelk,                      this->name, lock_on, -                    F_SETLKW, &lock); +                    F_SETLKW, &lock, NULL);          return 0;  rename_wind:          STACK_WIND (frame, marker_rename_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->rename, oldloc, newloc); +                    FIRST_CHILD(this)->fops->rename, oldloc, newloc, xdata);          return 0;  err:          STACK_UNWIND_STRICT (rename, frame, -1, ENOMEM, NULL, -                             NULL, NULL, NULL, NULL); +                             NULL, NULL, NULL, NULL, NULL);          return 0;  } @@ -1501,7 +1511,7 @@ err:  int32_t  marker_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)  {          marker_local_t     *local   = NULL;          marker_conf_t      *priv    = NULL; @@ -1516,7 +1526,7 @@ marker_truncate_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          frame->local = NULL;          STACK_UNWIND_STRICT (truncate, frame, op_ret, op_errno, prebuf, -                             postbuf); +                             postbuf, xdata);          if (op_ret == -1 || local == NULL)                  goto out; @@ -1536,7 +1546,8 @@ out:  }  int32_t -marker_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, off_t offset) +marker_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, off_t offset, +                 dict_t *xdata)  {          int32_t          ret   = 0;          marker_local_t  *local = NULL; @@ -1557,10 +1568,10 @@ marker_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, off_t offset)                  goto err;  wind:          STACK_WIND (frame, marker_truncate_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->truncate, loc, offset); +                    FIRST_CHILD(this)->fops->truncate, loc, offset, xdata);          return 0;  err: -        STACK_UNWIND_STRICT (truncate, frame, -1, ENOMEM, NULL, NULL); +        STACK_UNWIND_STRICT (truncate, frame, -1, ENOMEM, NULL, NULL, NULL);          return 0;  } @@ -1569,7 +1580,7 @@ err:  int32_t  marker_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)  {          marker_local_t     *local   = NULL;          marker_conf_t      *priv    = NULL; @@ -1584,7 +1595,7 @@ marker_ftruncate_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          frame->local = NULL;          STACK_UNWIND_STRICT (ftruncate, frame, op_ret, op_errno, prebuf, -                             postbuf); +                             postbuf, xdata);          if (op_ret == -1 || local == NULL)                  goto out; @@ -1603,7 +1614,8 @@ out:  }  int32_t -marker_ftruncate (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset) +marker_ftruncate (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset, +                  dict_t *xdata)  {          int32_t          ret   = 0;          marker_local_t  *local = NULL; @@ -1624,10 +1636,10 @@ marker_ftruncate (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset)                  goto err;  wind:          STACK_WIND (frame, marker_ftruncate_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->ftruncate, fd, offset); +                    FIRST_CHILD(this)->fops->ftruncate, fd, offset, xdata);          return 0;  err: -        STACK_UNWIND_STRICT (ftruncate, frame, -1, ENOMEM, NULL, NULL); +        STACK_UNWIND_STRICT (ftruncate, frame, -1, ENOMEM, NULL, NULL, NULL);          return 0;  } @@ -1637,7 +1649,7 @@ int32_t  marker_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)  {          marker_conf_t      *priv    = NULL;          marker_local_t     *local   = NULL; @@ -1652,7 +1664,7 @@ marker_symlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          frame->local = NULL;          STACK_UNWIND_STRICT (symlink, frame, op_ret, op_errno, inode, buf, -                             preparent, postparent); +                             preparent, postparent, xdata);          if (op_ret == -1 || local == NULL)                  goto out; @@ -1672,7 +1684,7 @@ out:  int  marker_symlink (call_frame_t *frame, xlator_t *this, const char *linkpath, -                loc_t *loc, dict_t *params) +                loc_t *loc, mode_t umask, dict_t *xdata)  {          int32_t          ret   = 0;          marker_local_t  *local = NULL; @@ -1693,11 +1705,12 @@ marker_symlink (call_frame_t *frame, xlator_t *this, const char *linkpath,                  goto err;  wind:          STACK_WIND (frame, marker_symlink_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->symlink, linkpath, loc, params); +                    FIRST_CHILD(this)->fops->symlink, linkpath, loc, umask, +                    xdata);          return 0;  err:          STACK_UNWIND_STRICT (symlink, frame, -1, ENOMEM, NULL, -                             NULL, NULL, NULL); +                             NULL, NULL, NULL, NULL);          return 0;  } @@ -1706,7 +1719,7 @@ int32_t  marker_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)  {          marker_local_t     *local   = NULL;          marker_conf_t      *priv    = NULL; @@ -1721,7 +1734,7 @@ marker_mknod_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          frame->local = NULL;          STACK_UNWIND_STRICT (mknod, frame, op_ret, op_errno, inode, -                             buf, preparent, postparent); +                             buf, preparent, postparent, xdata);          if (op_ret == -1 ||  local == NULL)                  goto out; @@ -1742,7 +1755,7 @@ out:  int  marker_mknod (call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode, -              dev_t rdev, dict_t *parms) +              dev_t rdev, mode_t umask, dict_t *xdata)  {          int32_t          ret   = 0;          marker_local_t  *local = NULL; @@ -1765,11 +1778,12 @@ marker_mknod (call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode,                  goto err;  wind:          STACK_WIND (frame, marker_mknod_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->mknod, loc, mode, rdev, parms); +                    FIRST_CHILD(this)->fops->mknod, loc, mode, rdev, umask, +                    xdata);          return 0;  err:          STACK_UNWIND_STRICT (mknod, frame, -1, ENOMEM, NULL, -                             NULL, NULL, NULL); +                             NULL, NULL, NULL, NULL);          return 0;  } @@ -1829,7 +1843,7 @@ call_from_sp_client_to_reset_tmfile (call_frame_t *frame,                  op_errno = EINVAL;          }  out: -        STACK_UNWIND_STRICT (setxattr, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (setxattr, frame, op_ret, op_errno, NULL);          return 0;  } @@ -1837,7 +1851,7 @@ out:  int32_t  marker_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)  {          marker_local_t     *local   = NULL;          marker_conf_t      *priv    = NULL; @@ -1851,7 +1865,7 @@ marker_setxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          frame->local = NULL; -        STACK_UNWIND_STRICT (setxattr, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (setxattr, frame, op_ret, op_errno, xdata);          if (op_ret == -1 || local == NULL)                  goto out; @@ -1868,7 +1882,7 @@ out:  int32_t  marker_setxattr (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *dict, -                 int32_t flags) +                 int32_t flags, dict_t *xdata)  {          int32_t          ret   = 0;          marker_local_t  *local = NULL; @@ -1893,10 +1907,10 @@ marker_setxattr (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *dict,                  goto err;  wind:          STACK_WIND (frame, marker_setxattr_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->setxattr, loc, dict, flags); +                    FIRST_CHILD(this)->fops->setxattr, loc, dict, flags, xdata);          return 0;  err: -        STACK_UNWIND_STRICT (setxattr, frame, -1, ENOMEM); +        STACK_UNWIND_STRICT (setxattr, frame, -1, ENOMEM, NULL);          return 0;  } @@ -1904,7 +1918,7 @@ err:  int32_t  marker_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)  {          marker_local_t     *local   = NULL;          marker_conf_t      *priv    = NULL; @@ -1918,7 +1932,7 @@ marker_fsetxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          frame->local = NULL; -        STACK_UNWIND_STRICT (fsetxattr, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (fsetxattr, frame, op_ret, op_errno, xdata);          if (op_ret == -1 || local == NULL)                  goto out; @@ -1935,7 +1949,7 @@ out:  int32_t  marker_fsetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *dict, -                  int32_t flags) +                  int32_t flags, dict_t *xdata)  {          int32_t          ret   = 0;          marker_local_t  *local = NULL; @@ -1960,10 +1974,10 @@ marker_fsetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *dict,                  goto err;  wind:          STACK_WIND (frame, marker_fsetxattr_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->fsetxattr, fd, dict, flags); +                    FIRST_CHILD(this)->fops->fsetxattr, fd, dict, flags, xdata);          return 0;  err: -        STACK_UNWIND_STRICT (fsetxattr, frame, -1, ENOMEM); +        STACK_UNWIND_STRICT (fsetxattr, frame, -1, ENOMEM, NULL);          return 0;  } @@ -1972,7 +1986,7 @@ err:  int32_t  marker_fsetattr_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)  {          marker_local_t     *local   = NULL;          marker_conf_t      *priv    = NULL; @@ -1987,7 +2001,7 @@ marker_fsetattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          frame->local = NULL;          STACK_UNWIND_STRICT (fsetattr, frame, op_ret, op_errno, statpre, -                             statpost); +                             statpost, xdata);          if (op_ret == -1 || local == NULL)                  goto out; @@ -2005,7 +2019,7 @@ out:  int32_t  marker_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)  {          int32_t          ret   = 0;          marker_local_t  *local = NULL; @@ -2026,10 +2040,10 @@ marker_fsetattr (call_frame_t *frame, xlator_t *this, fd_t *fd,                  goto err;  wind:          STACK_WIND (frame, marker_fsetattr_cbk, FIRST_CHILD (this), -                    FIRST_CHILD (this)->fops->fsetattr, fd, stbuf, valid); +                    FIRST_CHILD (this)->fops->fsetattr, fd, stbuf, valid, xdata);          return 0;  err: -        STACK_UNWIND_STRICT (fsetattr, frame, -1, ENOMEM, NULL, NULL); +        STACK_UNWIND_STRICT (fsetattr, frame, -1, ENOMEM, NULL, NULL, NULL);          return 0;  } @@ -2038,7 +2052,7 @@ err:  int32_t  marker_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)  {          marker_local_t     *local   = NULL;          marker_conf_t      *priv    = NULL; @@ -2056,7 +2070,7 @@ marker_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 (op_ret == -1 || local == NULL)                  goto out; @@ -2073,7 +2087,7 @@ out:  int32_t  marker_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)  {          int32_t          ret   = 0;          marker_local_t  *local = NULL; @@ -2094,10 +2108,10 @@ marker_setattr (call_frame_t *frame, xlator_t *this, loc_t *loc,                  goto err;  wind:          STACK_WIND (frame, marker_setattr_cbk, FIRST_CHILD (this), -                    FIRST_CHILD (this)->fops->setattr, loc, stbuf, valid); +                    FIRST_CHILD (this)->fops->setattr, loc, stbuf, valid, xdata);          return 0;  err: -        STACK_UNWIND_STRICT (setattr, frame, -1, ENOMEM, NULL, NULL); +        STACK_UNWIND_STRICT (setattr, frame, -1, ENOMEM, NULL, NULL, NULL);          return 0;  } @@ -2105,7 +2119,7 @@ err:  int32_t  marker_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)  {          marker_local_t     *local   = NULL;          marker_conf_t      *priv    = NULL; @@ -2119,7 +2133,7 @@ marker_removexattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          frame->local = NULL; -        STACK_UNWIND_STRICT (removexattr, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (removexattr, frame, op_ret, op_errno, xdata);          if (op_ret == -1 || local == NULL)                  goto out; @@ -2136,7 +2150,7 @@ out:  int32_t  marker_removexattr (call_frame_t *frame, xlator_t *this, loc_t *loc, -                    const char *name) +                    const char *name, dict_t *xdata)  {          int32_t          ret   = 0;          marker_local_t  *local = NULL; @@ -2157,10 +2171,10 @@ marker_removexattr (call_frame_t *frame, xlator_t *this, loc_t *loc,                  goto err;  wind:          STACK_WIND (frame, marker_removexattr_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->removexattr, loc, name); +                    FIRST_CHILD(this)->fops->removexattr, loc, name, xdata);          return 0;  err: -        STACK_UNWIND_STRICT (removexattr, frame, -1, ENOMEM); +        STACK_UNWIND_STRICT (removexattr, frame, -1, ENOMEM, NULL);          return 0;  } @@ -2239,7 +2253,8 @@ err:  int  marker_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; @@ -2251,7 +2266,7 @@ marker_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/features/marker/src/marker.h b/xlators/features/marker/src/marker.h index 3dcb41f8a..cf0f92b79 100644 --- a/xlators/features/marker/src/marker.h +++ b/xlators/features/marker/src/marker.h @@ -117,6 +117,8 @@ struct marker_local{          quota_inode_ctx_t    *ctx;          inode_contribution_t *contri; + +        int xflag;  };  typedef struct marker_local marker_local_t; diff --git a/xlators/features/quiesce/src/quiesce.c b/xlators/features/quiesce/src/quiesce.c index 1b150b215..d355a19fa 100644 --- a/xlators/features/quiesce/src/quiesce.c +++ b/xlators/features/quiesce/src/quiesce.c @@ -191,7 +191,8 @@ out:  int32_t  quiesce_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)  {          call_stub_t    *stub = NULL;          quiesce_local_t *local = NULL; @@ -201,10 +202,10 @@ quiesce_stat_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          if ((op_ret == -1) && (op_errno == ENOTCONN)) {                  /* Re-transmit (by putting in the queue) */                  stub = fop_stat_stub (frame, default_stat_resume, -                                      &local->loc); +                                      &local->loc, xdata);                  if (!stub) {                          STACK_UNWIND_STRICT (stat, frame, -1, ENOMEM, -                                             NULL); +                                             NULL, NULL);                          goto out;                  } @@ -212,7 +213,7 @@ quiesce_stat_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  goto out;          } -        STACK_UNWIND_STRICT (stat, frame, op_ret, op_errno, buf); +        STACK_UNWIND_STRICT (stat, frame, op_ret, op_errno, buf, xdata);  out:          gf_quiesce_local_wipe (this, local); @@ -221,7 +222,7 @@ out:  int32_t  quiesce_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)  {          call_stub_t    *stub = NULL;          quiesce_local_t *local = NULL; @@ -231,9 +232,9 @@ quiesce_access_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          if ((op_ret == -1) && (op_errno == ENOTCONN)) {                  /* Re-transmit (by putting in the queue) */                  stub = fop_access_stub (frame, default_access_resume, -                                        &local->loc, local->flag); +                                        &local->loc, local->flag, xdata);                  if (!stub) { -                        STACK_UNWIND_STRICT (access, frame, -1, ENOMEM); +                        STACK_UNWIND_STRICT (access, frame, -1, ENOMEM, NULL);                          goto out;                  } @@ -241,7 +242,7 @@ quiesce_access_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  goto out;          } -        STACK_UNWIND_STRICT (access, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (access, frame, op_ret, op_errno, xdata);  out:          gf_quiesce_local_wipe (this, local); @@ -251,7 +252,7 @@ out:  int32_t  quiesce_readlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                        int32_t op_ret, int32_t op_errno, const char *path, -                      struct iatt *buf) +                      struct iatt *buf, dict_t *xdata)  {          call_stub_t    *stub = NULL;          quiesce_local_t *local = NULL; @@ -261,10 +262,10 @@ quiesce_readlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          if ((op_ret == -1) && (op_errno == ENOTCONN)) {                  /* Re-transmit (by putting in the queue) */                  stub = fop_readlink_stub (frame, default_readlink_resume, -                                          &local->loc, local->size); +                                          &local->loc, local->size, xdata);                  if (!stub) {                          STACK_UNWIND_STRICT (readlink, frame, -1, ENOMEM, -                                             NULL, NULL); +                                             NULL, NULL, NULL);                          goto out;                  } @@ -272,7 +273,7 @@ quiesce_readlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  goto out;          } -        STACK_UNWIND_STRICT (readlink, frame, op_ret, op_errno, path, buf); +        STACK_UNWIND_STRICT (readlink, frame, op_ret, op_errno, path, buf, xdata);  out:          gf_quiesce_local_wipe (this, local); @@ -281,7 +282,7 @@ out:  int32_t  quiesce_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)  {          call_stub_t    *stub = NULL;          quiesce_local_t *local = NULL; @@ -292,10 +293,10 @@ quiesce_open_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  /* Re-transmit (by putting in the queue) */                  stub = fop_open_stub (frame, default_open_resume,                                        &local->loc, local->flag, local->fd, -                                      local->wbflags); +                                      xdata);                  if (!stub) {                          STACK_UNWIND_STRICT (open, frame, -1, ENOMEM, -                                             NULL); +                                             NULL, NULL);                          goto out;                  } @@ -303,7 +304,7 @@ quiesce_open_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  goto out;          } -        STACK_UNWIND_STRICT (open, frame, op_ret, op_errno, fd); +        STACK_UNWIND_STRICT (open, frame, op_ret, op_errno, fd, xdata);  out:          gf_quiesce_local_wipe (this, local); @@ -313,7 +314,7 @@ out:  int32_t  quiesce_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)  {          call_stub_t    *stub = NULL;          quiesce_local_t *local = NULL; @@ -324,10 +325,10 @@ quiesce_readv_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  /* Re-transmit (by putting in the queue) */                  stub = fop_readv_stub (frame, default_readv_resume,                                         local->fd, local->size, local->offset, -                                       local->io_flag); +                                       local->io_flag, xdata);                  if (!stub) {                          STACK_UNWIND_STRICT (readv, frame, -1, ENOMEM, -                                             NULL, 0, NULL, NULL); +                                             NULL, 0, NULL, NULL, NULL);                          goto out;                  } @@ -336,7 +337,7 @@ quiesce_readv_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          }          STACK_UNWIND_STRICT (readv, frame, op_ret, op_errno, vector, count, -                             stbuf, iobref); +                             stbuf, iobref, xdata);  out:          gf_quiesce_local_wipe (this, local); @@ -345,7 +346,7 @@ out:  int32_t  quiesce_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)  {          call_stub_t    *stub = NULL;          quiesce_local_t *local = NULL; @@ -355,9 +356,9 @@ quiesce_flush_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          if ((op_ret == -1) && (op_errno == ENOTCONN)) {                  /* Re-transmit (by putting in the queue) */                  stub = fop_flush_stub (frame, default_flush_resume, -                                       local->fd); +                                       local->fd, xdata);                  if (!stub) { -                        STACK_UNWIND_STRICT (flush, frame, -1, ENOMEM); +                        STACK_UNWIND_STRICT (flush, frame, -1, ENOMEM, NULL);                          goto out;                  } @@ -365,7 +366,7 @@ quiesce_flush_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  goto out;          } -        STACK_UNWIND_STRICT (flush, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (flush, frame, op_ret, op_errno, xdata);  out:          gf_quiesce_local_wipe (this, local); @@ -377,7 +378,7 @@ out:  int32_t  quiesce_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)  {          call_stub_t    *stub = NULL;          quiesce_local_t *local = NULL; @@ -387,10 +388,10 @@ quiesce_fsync_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          if ((op_ret == -1) && (op_errno == ENOTCONN)) {                  /* Re-transmit (by putting in the queue) */                  stub = fop_fsync_stub (frame, default_fsync_resume, -                                       local->fd, local->flag); +                                       local->fd, local->flag, xdata);                  if (!stub) {                          STACK_UNWIND_STRICT (fsync, frame, -1, ENOMEM, -                                             NULL, NULL); +                                             NULL, NULL, NULL);                          goto out;                  } @@ -398,7 +399,7 @@ quiesce_fsync_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  goto out;          } -        STACK_UNWIND_STRICT (fsync, frame, op_ret, op_errno, prebuf, postbuf); +        STACK_UNWIND_STRICT (fsync, frame, op_ret, op_errno, prebuf, postbuf, xdata);  out:          gf_quiesce_local_wipe (this, local); @@ -407,7 +408,7 @@ out:  int32_t  quiesce_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)  {          call_stub_t    *stub = NULL;          quiesce_local_t *local = NULL; @@ -417,10 +418,10 @@ quiesce_fstat_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          if ((op_ret == -1) && (op_errno == ENOTCONN)) {                  /* Re-transmit (by putting in the queue) */                  stub = fop_fstat_stub (frame, default_fstat_resume, -                                       local->fd); +                                       local->fd, xdata);                  if (!stub) {                          STACK_UNWIND_STRICT (fstat, frame, -1, ENOMEM, -                                             NULL); +                                             NULL, NULL);                          goto out;                  } @@ -428,7 +429,7 @@ quiesce_fstat_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  goto out;          } -        STACK_UNWIND_STRICT (fstat, frame, op_ret, op_errno, buf); +        STACK_UNWIND_STRICT (fstat, frame, op_ret, op_errno, buf, xdata);  out:          gf_quiesce_local_wipe (this, local); @@ -437,7 +438,7 @@ out:  int32_t  quiesce_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)  {          call_stub_t    *stub = NULL;          quiesce_local_t *local = NULL; @@ -447,10 +448,10 @@ quiesce_opendir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          if ((op_ret == -1) && (op_errno == ENOTCONN)) {                  /* Re-transmit (by putting in the queue) */                  stub = fop_opendir_stub (frame, default_opendir_resume, -                                         &local->loc, local->fd); +                                         &local->loc, local->fd, xdata);                  if (!stub) {                          STACK_UNWIND_STRICT (opendir, frame, -1, ENOMEM, -                                             NULL); +                                             NULL, NULL);                          goto out;                  } @@ -458,7 +459,7 @@ quiesce_opendir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  goto out;          } -        STACK_UNWIND_STRICT (opendir, frame, op_ret, op_errno, fd); +        STACK_UNWIND_STRICT (opendir, frame, op_ret, op_errno, fd, xdata);  out:          gf_quiesce_local_wipe (this, local); @@ -467,7 +468,7 @@ out:  int32_t  quiesce_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)  {          call_stub_t    *stub = NULL;          quiesce_local_t *local = NULL; @@ -477,9 +478,9 @@ quiesce_fsyncdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          if ((op_ret == -1) && (op_errno == ENOTCONN)) {                  /* Re-transmit (by putting in the queue) */                  stub = fop_fsyncdir_stub (frame, default_fsyncdir_resume, -                                          local->fd, local->flag); +                                          local->fd, local->flag, xdata);                  if (!stub) { -                        STACK_UNWIND_STRICT (fsyncdir, frame, -1, ENOMEM); +                        STACK_UNWIND_STRICT (fsyncdir, frame, -1, ENOMEM, NULL);                          goto out;                  } @@ -487,7 +488,7 @@ quiesce_fsyncdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  goto out;          } -        STACK_UNWIND_STRICT (fsyncdir, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (fsyncdir, frame, op_ret, op_errno, xdata);  out:          gf_quiesce_local_wipe (this, local); @@ -496,7 +497,7 @@ out:  int32_t  quiesce_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)  {          call_stub_t    *stub = NULL;          quiesce_local_t *local = NULL; @@ -506,10 +507,10 @@ quiesce_statfs_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          if ((op_ret == -1) && (op_errno == ENOTCONN)) {                  /* Re-transmit (by putting in the queue) */                  stub = fop_statfs_stub (frame, default_statfs_resume, -                                        &local->loc); +                                        &local->loc, xdata);                  if (!stub) {                          STACK_UNWIND_STRICT (statfs, frame, -1, ENOMEM, -                                             NULL); +                                             NULL, NULL);                          goto out;                  } @@ -517,7 +518,7 @@ quiesce_statfs_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  goto out;          } -        STACK_UNWIND_STRICT (statfs, frame, op_ret, op_errno, buf); +        STACK_UNWIND_STRICT (statfs, frame, op_ret, op_errno, buf, xdata);  out:          gf_quiesce_local_wipe (this, local); @@ -526,7 +527,7 @@ out:  int32_t  quiesce_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)  {          call_stub_t    *stub = NULL;          quiesce_local_t *local = NULL; @@ -536,10 +537,10 @@ quiesce_fgetxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          if ((op_ret == -1) && (op_errno == ENOTCONN)) {                  /* Re-transmit (by putting in the queue) */                  stub = fop_fgetxattr_stub (frame, default_fgetxattr_resume, -                                           local->fd, local->name); +                                           local->fd, local->name, xdata);                  if (!stub) {                          STACK_UNWIND_STRICT (fgetxattr, frame, -1, ENOMEM, -                                             NULL); +                                             NULL, NULL);                          goto out;                  } @@ -547,7 +548,7 @@ quiesce_fgetxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  goto out;          } -        STACK_UNWIND_STRICT (fgetxattr, frame, op_ret, op_errno, dict); +        STACK_UNWIND_STRICT (fgetxattr, frame, op_ret, op_errno, dict, xdata);  out:          gf_quiesce_local_wipe (this, local); @@ -557,7 +558,7 @@ out:  int32_t  quiesce_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)  {          call_stub_t    *stub = NULL;          quiesce_local_t *local = NULL; @@ -567,10 +568,10 @@ quiesce_getxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          if ((op_ret == -1) && (op_errno == ENOTCONN)) {                  /* Re-transmit (by putting in the queue) */                  stub = fop_getxattr_stub (frame, default_getxattr_resume, -                                          &local->loc, local->name); +                                          &local->loc, local->name, xdata);                  if (!stub) {                          STACK_UNWIND_STRICT (getxattr, frame, -1, ENOMEM, -                                             NULL); +                                             NULL, NULL);                          goto out;                  } @@ -578,7 +579,7 @@ quiesce_getxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  goto out;          } -        STACK_UNWIND_STRICT (getxattr, frame, op_ret, op_errno, dict); +        STACK_UNWIND_STRICT (getxattr, frame, op_ret, op_errno, dict, xdata);  out:          gf_quiesce_local_wipe (this, local); @@ -589,7 +590,7 @@ out:  int32_t  quiesce_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)  {          call_stub_t    *stub = NULL;          quiesce_local_t *local = NULL; @@ -599,10 +600,10 @@ quiesce_rchecksum_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          if ((op_ret == -1) && (op_errno == ENOTCONN)) {                  /* Re-transmit (by putting in the queue) */                  stub = fop_rchecksum_stub (frame, default_rchecksum_resume, -                                           local->fd, local->offset, local->flag); +                                           local->fd, local->offset, local->flag, xdata);                  if (!stub) {                          STACK_UNWIND_STRICT (rchecksum, frame, -1, ENOMEM, -                                             0, NULL); +                                             0, NULL, NULL);                          goto out;                  } @@ -611,7 +612,7 @@ quiesce_rchecksum_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          }          STACK_UNWIND_STRICT (rchecksum, frame, op_ret, op_errno, weak_checksum, -                             strong_checksum); +                             strong_checksum, xdata);  out:          gf_quiesce_local_wipe (this, local); @@ -621,7 +622,7 @@ out:  int32_t  quiesce_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)  {          call_stub_t    *stub = NULL;          quiesce_local_t *local = NULL; @@ -631,10 +632,10 @@ quiesce_readdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          if ((op_ret == -1) && (op_errno == ENOTCONN)) {                  /* Re-transmit (by putting in the queue) */                  stub = fop_readdir_stub (frame, default_readdir_resume, -                                         local->fd, local->size, local->offset); +                                         local->fd, local->size, local->offset, xdata);                  if (!stub) {                          STACK_UNWIND_STRICT (readdir, frame, -1, ENOMEM, -                                             NULL); +                                             NULL, NULL);                          goto out;                  } @@ -642,7 +643,7 @@ quiesce_readdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  goto out;          } -        STACK_UNWIND_STRICT (readdir, frame, op_ret, op_errno, entries); +        STACK_UNWIND_STRICT (readdir, frame, op_ret, op_errno, entries, xdata);  out:          gf_quiesce_local_wipe (this, local); @@ -652,7 +653,7 @@ out:  int32_t  quiesce_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)  {          call_stub_t    *stub = NULL;          quiesce_local_t *local = NULL; @@ -666,7 +667,7 @@ quiesce_readdirp_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                                            local->dict);                  if (!stub) {                          STACK_UNWIND_STRICT (readdirp, frame, -1, ENOMEM, -                                             NULL); +                                             NULL, NULL);                          goto out;                  } @@ -674,7 +675,7 @@ quiesce_readdirp_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  goto out;          } -        STACK_UNWIND_STRICT (readdirp, frame, op_ret, op_errno, entries); +        STACK_UNWIND_STRICT (readdirp, frame, op_ret, op_errno, entries, xdata);  out:          gf_quiesce_local_wipe (this, local); @@ -687,7 +688,7 @@ out:  int32_t  quiesce_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)  {          quiesce_priv_t *priv = NULL;          call_stub_t    *stub = NULL; @@ -702,10 +703,10 @@ quiesce_writev_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  stub = fop_writev_stub (frame, default_writev_resume,                                          local->fd, local->vector, local->flag,                                          local->offset, local->io_flags, -                                        local->iobref); +                                        local->iobref, xdata);                  if (!stub) {                          STACK_UNWIND_STRICT (writev, frame, -1, ENOMEM, -                                             NULL, NULL); +                                             NULL, NULL, NULL);                          goto out;                  } @@ -713,7 +714,7 @@ quiesce_writev_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  goto out;          } -        STACK_UNWIND_STRICT (writev, frame, op_ret, op_errno, prebuf, postbuf); +        STACK_UNWIND_STRICT (writev, frame, op_ret, op_errno, prebuf, postbuf, xdata);  out:          gf_quiesce_local_wipe (this, local); @@ -722,7 +723,7 @@ out:  int32_t  quiesce_xattrop_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)  {          quiesce_priv_t *priv = NULL;          call_stub_t    *stub = NULL; @@ -736,10 +737,10 @@ quiesce_xattrop_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  /* Re-transmit (by putting in the queue) */                  stub = fop_xattrop_stub (frame, default_xattrop_resume,                                           &local->loc, local->xattrop_flags, -                                         local->dict); +                                         local->dict, xdata);                  if (!stub) {                          STACK_UNWIND_STRICT (xattrop, frame, -1, ENOMEM, -                                             NULL); +                                             NULL, NULL);                          goto out;                  } @@ -747,7 +748,7 @@ quiesce_xattrop_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  goto out;          } -        STACK_UNWIND_STRICT (xattrop, frame, op_ret, op_errno, dict); +        STACK_UNWIND_STRICT (xattrop, frame, op_ret, op_errno, dict, xdata);  out:          gf_quiesce_local_wipe (this, local); @@ -756,7 +757,7 @@ out:  int32_t  quiesce_fxattrop_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)  {          quiesce_priv_t *priv = NULL;          call_stub_t    *stub = NULL; @@ -770,10 +771,10 @@ quiesce_fxattrop_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  /* Re-transmit (by putting in the queue) */                  stub = fop_fxattrop_stub (frame, default_fxattrop_resume,                                            local->fd, local->xattrop_flags, -                                          local->dict); +                                          local->dict, xdata);                  if (!stub) {                          STACK_UNWIND_STRICT (fxattrop, frame, -1, ENOMEM, -                                             NULL); +                                             NULL, NULL);                          goto out;                  } @@ -781,7 +782,7 @@ quiesce_fxattrop_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  goto out;          } -        STACK_UNWIND_STRICT (fxattrop, frame, op_ret, op_errno, dict); +        STACK_UNWIND_STRICT (fxattrop, frame, op_ret, op_errno, dict, xdata);  out:          gf_quiesce_local_wipe (this, local); @@ -790,7 +791,7 @@ out:  int32_t  quiesce_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_ret, int32_t op_errno, struct gf_flock *lock, dict_t *xdata)  {          quiesce_priv_t *priv = NULL;          call_stub_t    *stub = NULL; @@ -803,10 +804,10 @@ quiesce_lk_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          if ((op_ret == -1) && (op_errno == ENOTCONN)) {                  /* Re-transmit (by putting in the queue) */                  stub = fop_lk_stub (frame, default_lk_resume, -                                    local->fd, local->flag, &local->flock); +                                    local->fd, local->flag, &local->flock, xdata);                  if (!stub) {                          STACK_UNWIND_STRICT (lk, frame, -1, ENOMEM, -                                             NULL); +                                             NULL, NULL);                          goto out;                  } @@ -814,7 +815,7 @@ quiesce_lk_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  goto out;          } -        STACK_UNWIND_STRICT (lk, frame, op_ret, op_errno, lock); +        STACK_UNWIND_STRICT (lk, frame, op_ret, op_errno, lock, xdata);  out:          gf_quiesce_local_wipe (this, local); @@ -823,7 +824,7 @@ out:  int32_t  quiesce_inodelk_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)  {          quiesce_priv_t *priv = NULL;          call_stub_t    *stub = NULL; @@ -837,9 +838,9 @@ quiesce_inodelk_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  /* Re-transmit (by putting in the queue) */                  stub = fop_inodelk_stub (frame, default_inodelk_resume,                                           local->volname, &local->loc, -                                         local->flag, &local->flock); +                                         local->flag, &local->flock, xdata);                  if (!stub) { -                        STACK_UNWIND_STRICT (inodelk, frame, -1, ENOMEM); +                        STACK_UNWIND_STRICT (inodelk, frame, -1, ENOMEM, NULL);                          goto out;                  } @@ -847,7 +848,7 @@ quiesce_inodelk_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  goto out;          } -        STACK_UNWIND_STRICT (inodelk, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (inodelk, frame, op_ret, op_errno, xdata);  out:          gf_quiesce_local_wipe (this, local); @@ -857,7 +858,7 @@ out:  int32_t  quiesce_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)  {          quiesce_priv_t *priv = NULL;          call_stub_t    *stub = NULL; @@ -871,9 +872,9 @@ quiesce_finodelk_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  /* Re-transmit (by putting in the queue) */                  stub = fop_finodelk_stub (frame, default_finodelk_resume,                                           local->volname, local->fd, -                                         local->flag, &local->flock); +                                         local->flag, &local->flock, xdata);                  if (!stub) { -                        STACK_UNWIND_STRICT (finodelk, frame, -1, ENOMEM); +                        STACK_UNWIND_STRICT (finodelk, frame, -1, ENOMEM, NULL);                          goto out;                  } @@ -881,7 +882,7 @@ quiesce_finodelk_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  goto out;          } -        STACK_UNWIND_STRICT (finodelk, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (finodelk, frame, op_ret, op_errno, xdata);  out:          gf_quiesce_local_wipe (this, local); @@ -890,7 +891,7 @@ out:  int32_t  quiesce_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)  {          quiesce_priv_t *priv = NULL;          call_stub_t    *stub = NULL; @@ -904,9 +905,9 @@ quiesce_entrylk_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  /* Re-transmit (by putting in the queue) */                  stub = fop_entrylk_stub (frame, default_entrylk_resume,                                           local->volname, &local->loc, -                                         local->name, local->cmd, local->type); +                                         local->name, local->cmd, local->type, xdata);                  if (!stub) { -                        STACK_UNWIND_STRICT (entrylk, frame, -1, ENOMEM); +                        STACK_UNWIND_STRICT (entrylk, frame, -1, ENOMEM, NULL);                          goto out;                  } @@ -914,7 +915,7 @@ quiesce_entrylk_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  goto out;          } -        STACK_UNWIND_STRICT (entrylk, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (entrylk, frame, op_ret, op_errno, xdata);  out:          gf_quiesce_local_wipe (this, local); @@ -923,7 +924,7 @@ out:  int32_t  quiesce_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)  {          quiesce_priv_t *priv = NULL;          call_stub_t    *stub = NULL; @@ -937,9 +938,9 @@ quiesce_fentrylk_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  /* Re-transmit (by putting in the queue) */                  stub = fop_fentrylk_stub (frame, default_fentrylk_resume,                                            local->volname, local->fd, -                                          local->name, local->cmd, local->type); +                                          local->name, local->cmd, local->type, xdata);                  if (!stub) { -                        STACK_UNWIND_STRICT (fentrylk, frame, -1, ENOMEM); +                        STACK_UNWIND_STRICT (fentrylk, frame, -1, ENOMEM, NULL);                          goto out;                  } @@ -947,7 +948,7 @@ quiesce_fentrylk_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  goto out;          } -        STACK_UNWIND_STRICT (fentrylk, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (fentrylk, frame, op_ret, op_errno, xdata);  out:          gf_quiesce_local_wipe (this, local); @@ -957,7 +958,7 @@ out:  int32_t  quiesce_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)  {          quiesce_priv_t *priv = NULL;          call_stub_t    *stub = NULL; @@ -970,10 +971,10 @@ quiesce_setattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          if ((op_ret == -1) && (op_errno == ENOTCONN)) {                  /* Re-transmit (by putting in the queue) */                  stub = fop_setattr_stub (frame, default_setattr_resume, -                                         &local->loc, &local->stbuf, local->flag); +                                         &local->loc, &local->stbuf, local->flag, xdata);                  if (!stub) {                          STACK_UNWIND_STRICT (setattr, frame, -1, ENOMEM, -                                             NULL, NULL); +                                             NULL, NULL, NULL);                          goto out;                  } @@ -982,7 +983,7 @@ quiesce_setattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          }          STACK_UNWIND_STRICT (setattr, frame, op_ret, op_errno, statpre, -                             statpost); +                             statpost, xdata);  out:          gf_quiesce_local_wipe (this, local); @@ -992,7 +993,7 @@ out:  int32_t  quiesce_fsetattr_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)  {          quiesce_priv_t *priv = NULL;          call_stub_t    *stub = NULL; @@ -1006,10 +1007,10 @@ quiesce_fsetattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          if ((op_ret == -1) && (op_errno == ENOTCONN)) {                  /* Re-transmit (by putting in the queue) */                  stub = fop_fsetattr_stub (frame, default_fsetattr_resume, -                                          local->fd, &local->stbuf, local->flag); +                                          local->fd, &local->stbuf, local->flag, xdata);                  if (!stub) {                          STACK_UNWIND_STRICT (fsetattr, frame, -1, ENOMEM, -                                             NULL, NULL); +                                             NULL, NULL, NULL);                          goto out;                  } @@ -1018,7 +1019,7 @@ quiesce_fsetattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          }          STACK_UNWIND_STRICT (fsetattr, frame, op_ret, op_errno, statpre, -                             statpost); +                             statpost, xdata);  out:          gf_quiesce_local_wipe (this, local); @@ -1036,7 +1037,7 @@ int32_t  quiesce_removexattr (call_frame_t *frame,  		     xlator_t *this,  		     loc_t *loc, -		     const char *name) +		     const char *name, dict_t *xdata)  {  	quiesce_priv_t *priv = NULL;          call_stub_t    *stub = NULL; @@ -1049,14 +1050,14 @@ quiesce_removexattr (call_frame_t *frame,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->removexattr,                              loc, -                            name); -	        return 0; +                            name, xdata); +                return 0;          }          stub = fop_removexattr_stub (frame, default_removexattr_resume, -                                     loc, name); +                                     loc, name, xdata);          if (!stub) { -                STACK_UNWIND_STRICT (removexattr, frame, -1, ENOMEM); +                STACK_UNWIND_STRICT (removexattr, frame, -1, ENOMEM, NULL);                  return 0;          } @@ -1069,7 +1070,7 @@ int32_t  quiesce_truncate (call_frame_t *frame,  		  xlator_t *this,  		  loc_t *loc, -		  off_t offset) +		  off_t offset, dict_t *xdata)  {  	quiesce_priv_t *priv = NULL;          call_stub_t    *stub = NULL; @@ -1082,13 +1083,13 @@ quiesce_truncate (call_frame_t *frame,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->truncate,                              loc, -                            offset); -	        return 0; +                            offset, xdata); +                return 0;          } -        stub = fop_truncate_stub (frame, default_truncate_resume, loc, offset); +        stub = fop_truncate_stub (frame, default_truncate_resume, loc, offset, xdata);          if (!stub) { -                STACK_UNWIND_STRICT (truncate, frame, -1, ENOMEM, NULL, NULL); +                STACK_UNWIND_STRICT (truncate, frame, -1, ENOMEM, NULL, NULL, NULL);                  return 0;          } @@ -1102,7 +1103,7 @@ quiesce_fsetxattr (call_frame_t *frame,                     xlator_t *this,                     fd_t *fd,                     dict_t *dict, -                   int32_t flags) +                   int32_t flags, dict_t *xdata)  {  	quiesce_priv_t *priv = NULL;          call_stub_t    *stub = NULL; @@ -1116,14 +1117,14 @@ quiesce_fsetxattr (call_frame_t *frame,                              FIRST_CHILD(this)->fops->fsetxattr,                              fd,                              dict, -                            flags); -	        return 0; +                            flags, xdata); +                return 0;          }          stub = fop_fsetxattr_stub (frame, default_fsetxattr_resume, -                                   fd, dict, flags); +                                   fd, dict, flags, xdata);          if (!stub) { -                STACK_UNWIND_STRICT (fsetxattr, frame, -1, ENOMEM); +                STACK_UNWIND_STRICT (fsetxattr, frame, -1, ENOMEM, NULL);                  return 0;          } @@ -1137,7 +1138,7 @@ quiesce_setxattr (call_frame_t *frame,  		  xlator_t *this,  		  loc_t *loc,  		  dict_t *dict, -		  int32_t flags) +		  int32_t flags, dict_t *xdata)  {  	quiesce_priv_t *priv = NULL;          call_stub_t    *stub = NULL; @@ -1151,14 +1152,14 @@ quiesce_setxattr (call_frame_t *frame,                              FIRST_CHILD(this)->fops->setxattr,                              loc,                              dict, -                            flags); -	        return 0; +                            flags, xdata); +                return 0;          }          stub = fop_setxattr_stub (frame, default_setxattr_resume, -                                  loc, dict, flags); +                                  loc, dict, flags, xdata);          if (!stub) { -                STACK_UNWIND_STRICT (setxattr, frame, -1, ENOMEM); +                STACK_UNWIND_STRICT (setxattr, frame, -1, ENOMEM, NULL);                  return 0;          } @@ -1170,7 +1171,7 @@ quiesce_setxattr (call_frame_t *frame,  int32_t  quiesce_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 umask, fd_t *fd, dict_t *xdata)  {  	quiesce_priv_t *priv = NULL;          call_stub_t    *stub = NULL; @@ -1183,15 +1184,15 @@ quiesce_create (call_frame_t *frame, xlator_t *this,                  STACK_WIND (frame, default_create_cbk,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->create, -                            loc, (flags & ~O_APPEND), mode, fd, params); -	        return 0; +                            loc, (flags & ~O_APPEND), mode, umask, fd, xdata); +                return 0;          }          stub = fop_create_stub (frame, default_create_resume, -                                loc, (flags & ~O_APPEND), mode, fd, params); +                                loc, (flags & ~O_APPEND), mode, umask, fd, xdata);          if (!stub) {                  STACK_UNWIND_STRICT (create, frame, -1, ENOMEM, -                                     NULL, NULL, NULL, NULL, NULL); +                                     NULL, NULL, NULL, NULL, NULL, NULL);                  return 0;          } @@ -1204,7 +1205,7 @@ int32_t  quiesce_link (call_frame_t *frame,  	      xlator_t *this,  	      loc_t *oldloc, -	      loc_t *newloc) +	      loc_t *newloc, dict_t *xdata)  {  	quiesce_priv_t *priv = NULL;          call_stub_t    *stub = NULL; @@ -1216,14 +1217,14 @@ quiesce_link (call_frame_t *frame,                              default_link_cbk,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->link, -                            oldloc, newloc); -	        return 0; +                            oldloc, newloc, xdata); +                return 0;          } -        stub = fop_link_stub (frame, default_link_resume, oldloc, newloc); +        stub = fop_link_stub (frame, default_link_resume, oldloc, newloc, xdata);          if (!stub) {                  STACK_UNWIND_STRICT (link, frame, -1, ENOMEM, -                                     NULL, NULL, NULL, NULL); +                                     NULL, NULL, NULL, NULL, NULL);                  return 0;          } @@ -1236,7 +1237,7 @@ int32_t  quiesce_rename (call_frame_t *frame,  		xlator_t *this,  		loc_t *oldloc, -		loc_t *newloc) +		loc_t *newloc, dict_t *xdata)  {  	quiesce_priv_t *priv = NULL;          call_stub_t    *stub = NULL; @@ -1248,14 +1249,14 @@ quiesce_rename (call_frame_t *frame,                              default_rename_cbk,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->rename, -                            oldloc, newloc); -	        return 0; +                            oldloc, newloc, xdata); +                return 0;          } -        stub = fop_rename_stub (frame, default_rename_resume, oldloc, newloc); +        stub = fop_rename_stub (frame, default_rename_resume, oldloc, newloc, xdata);          if (!stub) {                  STACK_UNWIND_STRICT (rename, frame, -1, ENOMEM, -                                     NULL, NULL, NULL, NULL, NULL); +                                     NULL, NULL, NULL, NULL, NULL, NULL);                  return 0;          } @@ -1267,7 +1268,7 @@ quiesce_rename (call_frame_t *frame,  int  quiesce_symlink (call_frame_t *frame, xlator_t *this, -		 const char *linkpath, loc_t *loc, dict_t *params) +		 const char *linkpath, loc_t *loc, mode_t umask, dict_t *xdata)  {  	quiesce_priv_t *priv = NULL;          call_stub_t    *stub = NULL; @@ -1278,15 +1279,15 @@ quiesce_symlink (call_frame_t *frame, xlator_t *this,                  STACK_WIND (frame, default_symlink_cbk,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->symlink, -                            linkpath, loc, params); -	        return 0; +                            linkpath, loc, umask, xdata); +                return 0;          }          stub = fop_symlink_stub (frame, default_symlink_resume, -                                 linkpath, loc, params); +                                 linkpath, loc, umask, xdata);          if (!stub) {                  STACK_UNWIND_STRICT (symlink, frame, -1, ENOMEM, -                                     NULL, NULL, NULL, NULL); +                                     NULL, NULL, NULL, NULL, NULL);                  return 0;          } @@ -1297,7 +1298,7 @@ quiesce_symlink (call_frame_t *frame, xlator_t *this,  int -quiesce_rmdir (call_frame_t *frame, xlator_t *this, loc_t *loc, int flags) +quiesce_rmdir (call_frame_t *frame, xlator_t *this, loc_t *loc, int flags, dict_t *xdata)  {  	quiesce_priv_t *priv = NULL;          call_stub_t    *stub = NULL; @@ -1308,13 +1309,13 @@ quiesce_rmdir (call_frame_t *frame, xlator_t *this, loc_t *loc, int flags)                  STACK_WIND (frame, default_rmdir_cbk,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->rmdir, -                            loc, flags); -	        return 0; +                            loc, flags, xdata); +                return 0;          } -        stub = fop_rmdir_stub (frame, default_rmdir_resume, loc, flags); +        stub = fop_rmdir_stub (frame, default_rmdir_resume, loc, flags, xdata);          if (!stub) { -                STACK_UNWIND_STRICT (rmdir, frame, -1, ENOMEM, NULL, NULL); +                STACK_UNWIND_STRICT (rmdir, frame, -1, ENOMEM, NULL, NULL, NULL);                  return 0;          } @@ -1326,7 +1327,7 @@ quiesce_rmdir (call_frame_t *frame, xlator_t *this, loc_t *loc, int flags)  int32_t  quiesce_unlink (call_frame_t *frame,  		xlator_t *this, -		loc_t *loc) +		loc_t *loc, int xflag, dict_t *xdata)  {  	quiesce_priv_t *priv = NULL;          call_stub_t    *stub = NULL; @@ -1338,13 +1339,13 @@ quiesce_unlink (call_frame_t *frame,                              default_unlink_cbk,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->unlink, -                            loc); -	        return 0; +                            loc, xflag, xdata); +                return 0;          } -        stub = fop_unlink_stub (frame, default_unlink_resume, loc); +        stub = fop_unlink_stub (frame, default_unlink_resume, loc, xflag, xdata);          if (!stub) { -                STACK_UNWIND_STRICT (unlink, frame, -1, ENOMEM, NULL, NULL); +                STACK_UNWIND_STRICT (unlink, frame, -1, ENOMEM, NULL, NULL, NULL);                  return 0;          } @@ -1355,7 +1356,7 @@ quiesce_unlink (call_frame_t *frame,  int  quiesce_mkdir (call_frame_t *frame, xlator_t *this, -	       loc_t *loc, mode_t mode, dict_t *params) +	       loc_t *loc, mode_t mode, mode_t umask, dict_t *xdata)  {  	quiesce_priv_t *priv = NULL;          call_stub_t    *stub = NULL; @@ -1366,15 +1367,15 @@ quiesce_mkdir (call_frame_t *frame, xlator_t *this,                  STACK_WIND (frame, default_mkdir_cbk,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->mkdir, -                            loc, mode, params); -	        return 0; +                            loc, mode, umask, xdata); +                return 0;          }          stub = fop_mkdir_stub (frame, default_mkdir_resume, -                               loc, mode, params); +                               loc, mode, umask, xdata);          if (!stub) {                  STACK_UNWIND_STRICT (mkdir, frame, -1, ENOMEM, -                                     NULL, NULL, NULL, NULL); +                                     NULL, NULL, NULL, NULL, NULL);                  return 0;          } @@ -1386,7 +1387,7 @@ quiesce_mkdir (call_frame_t *frame, xlator_t *this,  int  quiesce_mknod (call_frame_t *frame, xlator_t *this, -	       loc_t *loc, mode_t mode, dev_t rdev, dict_t *parms) +	       loc_t *loc, mode_t mode, dev_t rdev, mode_t umask, dict_t *xdata)  {  	quiesce_priv_t *priv = NULL;          call_stub_t    *stub = NULL; @@ -1397,15 +1398,15 @@ quiesce_mknod (call_frame_t *frame, xlator_t *this,                  STACK_WIND (frame, default_mknod_cbk,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->mknod, -                            loc, mode, rdev, parms); -	        return 0; +                            loc, mode, rdev, umask, xdata); +                return 0;          }          stub = fop_mknod_stub (frame, default_mknod_resume, -                               loc, mode, rdev, parms); +                               loc, mode, rdev, umask, xdata);          if (!stub) {                  STACK_UNWIND_STRICT (mknod, frame, -1, ENOMEM, -                                     NULL, NULL, NULL, NULL); +                                     NULL, NULL, NULL, NULL, NULL);                  return 0;          } @@ -1418,7 +1419,7 @@ int32_t  quiesce_ftruncate (call_frame_t *frame,  		   xlator_t *this,  		   fd_t *fd, -		   off_t offset) +		   off_t offset, dict_t *xdata)  {  	quiesce_priv_t *priv = NULL;          call_stub_t    *stub = NULL; @@ -1431,13 +1432,13 @@ quiesce_ftruncate (call_frame_t *frame,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->ftruncate,                              fd, -                            offset); -	        return 0; +                            offset, xdata); +                return 0;          } -        stub = fop_ftruncate_stub (frame, default_ftruncate_resume, fd, offset); +        stub = fop_ftruncate_stub (frame, default_ftruncate_resume, fd, offset, xdata);          if (!stub) { -                STACK_UNWIND_STRICT (ftruncate, frame, -1, ENOMEM, NULL, NULL); +                STACK_UNWIND_STRICT (ftruncate, frame, -1, ENOMEM, NULL, NULL, NULL);                  return 0;          } @@ -1452,7 +1453,7 @@ int32_t  quiesce_readlink (call_frame_t *frame,  		  xlator_t *this,  		  loc_t *loc, -		  size_t size) +		  size_t size, dict_t *xdata)  {  	quiesce_priv_t *priv = NULL;          call_stub_t    *stub = NULL; @@ -1471,13 +1472,13 @@ quiesce_readlink (call_frame_t *frame,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->readlink,                              loc, -                            size); -	        return 0; +                            size, xdata); +                return 0;          } -        stub = fop_readlink_stub (frame, default_readlink_resume, loc, size); +        stub = fop_readlink_stub (frame, default_readlink_resume, loc, size, xdata);          if (!stub) { -                STACK_UNWIND_STRICT (readlink, frame, -1, ENOMEM, NULL, NULL); +                STACK_UNWIND_STRICT (readlink, frame, -1, ENOMEM, NULL, NULL, NULL);                  return 0;          } @@ -1491,7 +1492,7 @@ int32_t  quiesce_access (call_frame_t *frame,  		xlator_t *this,  		loc_t *loc, -		int32_t mask) +		int32_t mask, dict_t *xdata)  {  	quiesce_priv_t *priv = NULL;          call_stub_t    *stub = NULL; @@ -1510,13 +1511,13 @@ quiesce_access (call_frame_t *frame,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->access,                              loc, -                            mask); -	        return 0; +                            mask, xdata); +                return 0;          } -        stub = fop_access_stub (frame, default_access_resume, loc, mask); +        stub = fop_access_stub (frame, default_access_resume, loc, mask, xdata);          if (!stub) { -                STACK_UNWIND_STRICT (access, frame, -1, ENOMEM); +                STACK_UNWIND_STRICT (access, frame, -1, ENOMEM, NULL);                  return 0;          } @@ -1529,7 +1530,7 @@ int32_t  quiesce_fgetxattr (call_frame_t *frame,                     xlator_t *this,                     fd_t *fd, -                   const char *name) +                   const char *name, dict_t *xdata)  {          quiesce_priv_t *priv = NULL;          call_stub_t    *stub = NULL; @@ -1550,13 +1551,13 @@ quiesce_fgetxattr (call_frame_t *frame,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->fgetxattr,                              fd, -                            name); +                            name, xdata);                  return 0;          } -        stub = fop_fgetxattr_stub (frame, default_fgetxattr_resume, fd, name); +        stub = fop_fgetxattr_stub (frame, default_fgetxattr_resume, fd, name, xdata);          if (!stub) { -                STACK_UNWIND_STRICT (fgetxattr, frame, -1, ENOMEM, NULL); +                STACK_UNWIND_STRICT (fgetxattr, frame, -1, ENOMEM, NULL, NULL);                  return 0;          } @@ -1568,7 +1569,7 @@ quiesce_fgetxattr (call_frame_t *frame,  int32_t  quiesce_statfs (call_frame_t *frame,  		xlator_t *this, -		loc_t *loc) +		loc_t *loc, dict_t *xdata)  {  	quiesce_priv_t *priv = NULL;          call_stub_t    *stub = NULL; @@ -1585,13 +1586,13 @@ quiesce_statfs (call_frame_t *frame,                              quiesce_statfs_cbk,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->statfs, -                            loc); -	        return 0; +                            loc, xdata); +                return 0;          } -        stub = fop_statfs_stub (frame, default_statfs_resume, loc); +        stub = fop_statfs_stub (frame, default_statfs_resume, loc, xdata);          if (!stub) { -                STACK_UNWIND_STRICT (statfs, frame, -1, ENOMEM, NULL); +                STACK_UNWIND_STRICT (statfs, frame, -1, ENOMEM, NULL, NULL);                  return 0;          } @@ -1604,7 +1605,7 @@ int32_t  quiesce_fsyncdir (call_frame_t *frame,  		  xlator_t *this,  		  fd_t *fd, -		  int32_t flags) +		  int32_t flags, dict_t *xdata)  {  	quiesce_priv_t *priv = NULL;          call_stub_t    *stub = NULL; @@ -1623,13 +1624,13 @@ quiesce_fsyncdir (call_frame_t *frame,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->fsyncdir,                              fd, -                            flags); -	        return 0; +                            flags, xdata); +                return 0;          } -        stub = fop_fsyncdir_stub (frame, default_fsyncdir_resume, fd, flags); +        stub = fop_fsyncdir_stub (frame, default_fsyncdir_resume, fd, flags, xdata);          if (!stub) { -                STACK_UNWIND_STRICT (fsyncdir, frame, -1, ENOMEM); +                STACK_UNWIND_STRICT (fsyncdir, frame, -1, ENOMEM, NULL);                  return 0;          } @@ -1641,7 +1642,7 @@ quiesce_fsyncdir (call_frame_t *frame,  int32_t  quiesce_opendir (call_frame_t *frame,  		 xlator_t *this, -		 loc_t *loc, fd_t *fd) +		 loc_t *loc, fd_t *fd, dict_t *xdata)  {  	quiesce_priv_t *priv = NULL;          call_stub_t    *stub = NULL; @@ -1659,13 +1660,13 @@ quiesce_opendir (call_frame_t *frame,                              quiesce_opendir_cbk,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->opendir, -                            loc, fd); -	        return 0; +                            loc, fd, xdata); +                return 0;          } -        stub = fop_opendir_stub (frame, default_opendir_resume, loc, fd); +        stub = fop_opendir_stub (frame, default_opendir_resume, loc, fd, xdata);          if (!stub) { -                STACK_UNWIND_STRICT (opendir, frame, -1, ENOMEM, NULL); +                STACK_UNWIND_STRICT (opendir, frame, -1, ENOMEM, NULL, NULL);                  return 0;          } @@ -1677,7 +1678,7 @@ quiesce_opendir (call_frame_t *frame,  int32_t  quiesce_fstat (call_frame_t *frame,  	       xlator_t *this, -	       fd_t *fd) +	       fd_t *fd, dict_t *xdata)  {  	quiesce_priv_t *priv = NULL;          call_stub_t    *stub = NULL; @@ -1694,13 +1695,13 @@ quiesce_fstat (call_frame_t *frame,                              quiesce_fstat_cbk,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->fstat, -                            fd); -	        return 0; +                            fd, xdata); +                return 0;          } -        stub = fop_fstat_stub (frame, default_fstat_resume, fd); +        stub = fop_fstat_stub (frame, default_fstat_resume, fd, xdata);          if (!stub) { -                STACK_UNWIND_STRICT (fstat, frame, -1, ENOMEM, NULL); +                STACK_UNWIND_STRICT (fstat, frame, -1, ENOMEM, NULL, NULL);                  return 0;          } @@ -1713,7 +1714,7 @@ int32_t  quiesce_fsync (call_frame_t *frame,  	       xlator_t *this,  	       fd_t *fd, -	       int32_t flags) +	       int32_t flags, dict_t *xdata)  {  	quiesce_priv_t *priv = NULL;          call_stub_t    *stub = NULL; @@ -1732,13 +1733,13 @@ quiesce_fsync (call_frame_t *frame,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->fsync,                              fd, -                            flags); -	        return 0; +                            flags, xdata); +                return 0;          } -        stub = fop_fsync_stub (frame, default_fsync_resume, fd, flags); +        stub = fop_fsync_stub (frame, default_fsync_resume, fd, flags, xdata);          if (!stub) { -                STACK_UNWIND_STRICT (fsync, frame, -1, ENOMEM, NULL, NULL); +                STACK_UNWIND_STRICT (fsync, frame, -1, ENOMEM, NULL, NULL, NULL);                  return 0;          } @@ -1750,7 +1751,7 @@ quiesce_fsync (call_frame_t *frame,  int32_t  quiesce_flush (call_frame_t *frame,  	       xlator_t *this, -	       fd_t *fd) +	       fd_t *fd, dict_t *xdata)  {  	quiesce_priv_t *priv = NULL;          call_stub_t    *stub = NULL; @@ -1767,13 +1768,13 @@ quiesce_flush (call_frame_t *frame,                              quiesce_flush_cbk,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->flush, -                            fd); -	        return 0; +                            fd, xdata); +                return 0;          } -        stub = fop_flush_stub (frame, default_flush_resume, fd); +        stub = fop_flush_stub (frame, default_flush_resume, fd, xdata);          if (!stub) { -                STACK_UNWIND_STRICT (flush, frame, -1, ENOMEM); +                STACK_UNWIND_STRICT (flush, frame, -1, ENOMEM, NULL);                  return 0;          } @@ -1789,7 +1790,7 @@ quiesce_writev (call_frame_t *frame,  		struct iovec *vector,  		int32_t count,  		off_t off, uint32_t flags, -                struct iobref *iobref) +                struct iobref *iobref, dict_t *xdata)  {  	quiesce_priv_t *priv = NULL;          call_stub_t    *stub = NULL; @@ -1805,14 +1806,14 @@ quiesce_writev (call_frame_t *frame,                              vector,                              count,                              off, flags, -                            iobref); -	        return 0; +                            iobref, xdata); +                return 0;          }          stub = fop_writev_stub (frame, default_writev_resume, -                                fd, vector, count, off, flags, iobref); +                                fd, vector, count, off, flags, iobref, xdata);          if (!stub) { -                STACK_UNWIND_STRICT (writev, frame, -1, ENOMEM, NULL, NULL); +                STACK_UNWIND_STRICT (writev, frame, -1, ENOMEM, NULL, NULL, NULL);                  return 0;          } @@ -1826,7 +1827,7 @@ quiesce_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)  {  	quiesce_priv_t *priv = NULL;          call_stub_t    *stub = NULL; @@ -1848,15 +1849,15 @@ quiesce_readv (call_frame_t *frame,                              FIRST_CHILD(this)->fops->readv,                              fd,                              size, -                            offset, flags); -	        return 0; +                            offset, flags, xdata); +                return 0;          }          stub = fop_readv_stub (frame, default_readv_resume, fd, size, offset, -                               flags); +                               flags, xdata);          if (!stub) {                  STACK_UNWIND_STRICT (readv, frame, -1, ENOMEM, -                                     NULL, 0, NULL, NULL); +                                     NULL, 0, NULL, NULL, NULL);                  return 0;          } @@ -1871,7 +1872,7 @@ quiesce_open (call_frame_t *frame,  	      xlator_t *this,  	      loc_t *loc,  	      int32_t flags, fd_t *fd, -              int32_t wbflags) +              dict_t *xdata)  {  	quiesce_priv_t *priv = NULL;          call_stub_t    *stub = NULL; @@ -1887,21 +1888,20 @@ quiesce_open (call_frame_t *frame,                  /* Don't send O_APPEND below, as write() re-transmittions can                     fail with O_APPEND */                  local->flag = (flags & ~O_APPEND); -                local->wbflags = wbflags;                  frame->local = local;                  STACK_WIND (frame,                              quiesce_open_cbk,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->open, -                            loc, (flags & ~O_APPEND), fd, wbflags); -	        return 0; +                            loc, (flags & ~O_APPEND), fd, xdata); +                return 0;          }          stub = fop_open_stub (frame, default_open_resume, loc, -                              (flags & ~O_APPEND), fd, wbflags); +                              (flags & ~O_APPEND), fd, xdata);          if (!stub) { -                STACK_UNWIND_STRICT (open, frame, -1, ENOMEM, NULL); +                STACK_UNWIND_STRICT (open, frame, -1, ENOMEM, NULL, NULL);                  return 0;          } @@ -1914,7 +1914,7 @@ int32_t  quiesce_getxattr (call_frame_t *frame,  		  xlator_t *this,  		  loc_t *loc, -		  const char *name) +		  const char *name, dict_t *xdata)  {  	quiesce_priv_t *priv = NULL;          call_stub_t    *stub = NULL; @@ -1935,13 +1935,13 @@ quiesce_getxattr (call_frame_t *frame,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->getxattr,                              loc, -                            name); -	        return 0; +                            name, xdata); +                return 0;          } -        stub = fop_getxattr_stub (frame, default_getxattr_resume, loc, name); +        stub = fop_getxattr_stub (frame, default_getxattr_resume, loc, name, xdata);          if (!stub) { -                STACK_UNWIND_STRICT (getxattr, frame, -1, ENOMEM, NULL); +                STACK_UNWIND_STRICT (getxattr, frame, -1, ENOMEM, NULL, NULL);                  return 0;          } @@ -1956,7 +1956,7 @@ quiesce_xattrop (call_frame_t *frame,  		 xlator_t *this,  		 loc_t *loc,  		 gf_xattrop_flags_t flags, -		 dict_t *dict) +		 dict_t *dict, dict_t *xdata)  {  	quiesce_priv_t *priv = NULL;          call_stub_t    *stub = NULL; @@ -1970,14 +1970,14 @@ quiesce_xattrop (call_frame_t *frame,                              FIRST_CHILD(this)->fops->xattrop,                              loc,                              flags, -                            dict); -	        return 0; +                            dict, xdata); +                return 0;          }          stub = fop_xattrop_stub (frame, default_xattrop_resume, -                                 loc, flags, dict); +                                 loc, flags, dict, xdata);          if (!stub) { -                STACK_UNWIND_STRICT (xattrop, frame, -1, ENOMEM, NULL); +                STACK_UNWIND_STRICT (xattrop, frame, -1, ENOMEM, NULL, NULL);                  return 0;          } @@ -1991,7 +1991,7 @@ quiesce_fxattrop (call_frame_t *frame,  		  xlator_t *this,  		  fd_t *fd,  		  gf_xattrop_flags_t flags, -		  dict_t *dict) +		  dict_t *dict, dict_t *xdata)  {  	quiesce_priv_t *priv = NULL;          call_stub_t    *stub = NULL; @@ -2005,14 +2005,14 @@ quiesce_fxattrop (call_frame_t *frame,                              FIRST_CHILD(this)->fops->fxattrop,                              fd,                              flags, -                            dict); -	        return 0; +                            dict, xdata); +                return 0;          }          stub = fop_fxattrop_stub (frame, default_fxattrop_resume, -                                  fd, flags, dict); +                                  fd, flags, dict, xdata);          if (!stub) { -                STACK_UNWIND_STRICT (fxattrop, frame, -1, ENOMEM, NULL); +                STACK_UNWIND_STRICT (fxattrop, frame, -1, ENOMEM, NULL, NULL);                  return 0;          } @@ -2026,7 +2026,7 @@ quiesce_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)  {  	quiesce_priv_t *priv = NULL;          call_stub_t    *stub = NULL; @@ -2040,13 +2040,13 @@ quiesce_lk (call_frame_t *frame,                              FIRST_CHILD(this)->fops->lk,                              fd,                              cmd, -                            lock); -	        return 0; +                            lock, xdata); +                return 0;          } -        stub = fop_lk_stub (frame, default_lk_resume, fd, cmd, lock); +        stub = fop_lk_stub (frame, default_lk_resume, fd, cmd, lock, xdata);          if (!stub) { -                STACK_UNWIND_STRICT (lk, frame, -1, ENOMEM, NULL); +                STACK_UNWIND_STRICT (lk, frame, -1, ENOMEM, NULL, NULL);                  return 0;          } @@ -2059,7 +2059,7 @@ quiesce_lk (call_frame_t *frame,  int32_t  quiesce_inodelk (call_frame_t *frame, xlator_t *this,  		 const char *volume, loc_t *loc, int32_t cmd, -                 struct gf_flock *lock) +                 struct gf_flock *lock, dict_t *xdata)  {  	quiesce_priv_t *priv = NULL;          call_stub_t    *stub = NULL; @@ -2071,14 +2071,14 @@ quiesce_inodelk (call_frame_t *frame, xlator_t *this,                              default_inodelk_cbk,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->inodelk, -                            volume, loc, cmd, lock); -	        return 0; +                            volume, loc, cmd, lock, xdata); +                return 0;          }          stub = fop_inodelk_stub (frame, default_inodelk_resume, -                                 volume, loc, cmd, lock); +                                 volume, loc, cmd, lock, xdata);          if (!stub) { -                STACK_UNWIND_STRICT (inodelk, frame, -1, ENOMEM); +                STACK_UNWIND_STRICT (inodelk, frame, -1, ENOMEM, NULL);                  return 0;          } @@ -2089,7 +2089,7 @@ quiesce_inodelk (call_frame_t *frame, xlator_t *this,  int32_t  quiesce_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)  {  	quiesce_priv_t *priv = NULL;          call_stub_t    *stub = NULL; @@ -2101,14 +2101,14 @@ quiesce_finodelk (call_frame_t *frame, xlator_t *this,                              default_finodelk_cbk,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->finodelk, -                            volume, fd, cmd, lock); -	        return 0; +                            volume, fd, cmd, lock, xdata); +                return 0;          }          stub = fop_finodelk_stub (frame, default_finodelk_resume, -                                  volume, fd, cmd, lock); +                                  volume, fd, cmd, lock, xdata);          if (!stub) { -                STACK_UNWIND_STRICT (finodelk, frame, -1, ENOMEM); +                STACK_UNWIND_STRICT (finodelk, frame, -1, ENOMEM, NULL);                  return 0;          } @@ -2120,7 +2120,7 @@ quiesce_finodelk (call_frame_t *frame, xlator_t *this,  int32_t  quiesce_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)  {  	quiesce_priv_t *priv = NULL;          call_stub_t    *stub = NULL; @@ -2131,14 +2131,14 @@ quiesce_entrylk (call_frame_t *frame, xlator_t *this,                  STACK_WIND (frame, default_entrylk_cbk,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->entrylk, -                            volume, loc, basename, cmd, type); -	        return 0; +                            volume, loc, basename, cmd, type, xdata); +                return 0;          }          stub = fop_entrylk_stub (frame, default_entrylk_resume, -                                 volume, loc, basename, cmd, type); +                                 volume, loc, basename, cmd, type, xdata);          if (!stub) { -                STACK_UNWIND_STRICT (entrylk, frame, -1, ENOMEM); +                STACK_UNWIND_STRICT (entrylk, frame, -1, ENOMEM, NULL);                  return 0;          } @@ -2150,7 +2150,7 @@ quiesce_entrylk (call_frame_t *frame, xlator_t *this,  int32_t  quiesce_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)  {  	quiesce_priv_t *priv = NULL;          call_stub_t    *stub = NULL; @@ -2161,14 +2161,14 @@ quiesce_fentrylk (call_frame_t *frame, xlator_t *this,                  STACK_WIND (frame, default_fentrylk_cbk,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->fentrylk, -                            volume, fd, basename, cmd, type); -	        return 0; +                            volume, fd, basename, cmd, type, xdata); +                return 0;          }          stub = fop_fentrylk_stub (frame, default_fentrylk_resume, -                                  volume, fd, basename, cmd, type); +                                  volume, fd, basename, cmd, type, xdata);          if (!stub) { -                STACK_UNWIND_STRICT (fentrylk, frame, -1, ENOMEM); +                STACK_UNWIND_STRICT (fentrylk, frame, -1, ENOMEM, NULL);                  return 0;          } @@ -2181,7 +2181,7 @@ int32_t  quiesce_rchecksum (call_frame_t *frame,                     xlator_t *this,                     fd_t *fd, off_t offset, -                   int32_t len) +                   int32_t len, dict_t *xdata)  {  	quiesce_priv_t *priv = NULL;          call_stub_t    *stub = NULL; @@ -2200,14 +2200,14 @@ quiesce_rchecksum (call_frame_t *frame,                              quiesce_rchecksum_cbk,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->rchecksum, -                            fd, offset, len); -	        return 0; +                            fd, offset, len, xdata); +                return 0;          }          stub = fop_rchecksum_stub (frame, default_rchecksum_resume, -                                   fd, offset, len); +                                   fd, offset, len, xdata);          if (!stub) { -                STACK_UNWIND_STRICT (rchecksum, frame, -1, ENOMEM, 0, NULL); +                STACK_UNWIND_STRICT (rchecksum, frame, -1, ENOMEM, 0, NULL, NULL);                  return 0;          } @@ -2222,7 +2222,7 @@ quiesce_readdir (call_frame_t *frame,  		 xlator_t *this,  		 fd_t *fd,  		 size_t size, -		 off_t off) +		 off_t off, dict_t *xdata)  {  	quiesce_priv_t *priv = NULL;          call_stub_t    *stub = NULL; @@ -2241,13 +2241,13 @@ quiesce_readdir (call_frame_t *frame,                              quiesce_readdir_cbk,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->readdir, -                            fd, size, off); -	        return 0; +                            fd, size, off, xdata); +                return 0;          } -        stub = fop_readdir_stub (frame, default_readdir_resume, fd, size, off); +        stub = fop_readdir_stub (frame, default_readdir_resume, fd, size, off, xdata);          if (!stub) { -                STACK_UNWIND_STRICT (readdir, frame, -1, ENOMEM, NULL); +                STACK_UNWIND_STRICT (readdir, frame, -1, ENOMEM, NULL, NULL);                  return 0;          } @@ -2283,13 +2283,13 @@ quiesce_readdirp (call_frame_t *frame,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->readdirp,                              fd, size, off, dict); -	        return 0; +                return 0;          }          stub = fop_readdirp_stub (frame, default_readdirp_resume, fd, size,                                    off, dict);          if (!stub) { -                STACK_UNWIND_STRICT (readdirp, frame, -1, ENOMEM, NULL); +                STACK_UNWIND_STRICT (readdirp, frame, -1, ENOMEM, NULL, NULL);                  return 0;          } @@ -2303,7 +2303,7 @@ quiesce_setattr (call_frame_t *frame,                   xlator_t *this,                   loc_t *loc,                   struct iatt *stbuf, -                 int32_t valid) +                 int32_t valid, dict_t *xdata)  {  	quiesce_priv_t *priv = NULL;          call_stub_t    *stub = NULL; @@ -2315,14 +2315,14 @@ quiesce_setattr (call_frame_t *frame,                              default_setattr_cbk,                              FIRST_CHILD (this),                              FIRST_CHILD (this)->fops->setattr, -                            loc, stbuf, valid); -	        return 0; +                            loc, stbuf, valid, xdata); +                return 0;          }          stub = fop_setattr_stub (frame, default_setattr_resume, -                                   loc, stbuf, valid); +                                   loc, stbuf, valid, xdata);          if (!stub) { -                STACK_UNWIND_STRICT (setattr, frame, -1, ENOMEM, NULL, NULL); +                STACK_UNWIND_STRICT (setattr, frame, -1, ENOMEM, NULL, NULL, NULL);                  return 0;          } @@ -2335,7 +2335,7 @@ quiesce_setattr (call_frame_t *frame,  int32_t  quiesce_stat (call_frame_t *frame,  	      xlator_t *this, -	      loc_t *loc) +	      loc_t *loc, dict_t *xdata)  {  	quiesce_priv_t *priv = NULL;          call_stub_t    *stub = NULL; @@ -2352,13 +2352,13 @@ quiesce_stat (call_frame_t *frame,                              quiesce_stat_cbk,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->stat, -                            loc); -	        return 0; +                            loc, xdata); +                return 0;          } -        stub = fop_stat_stub (frame, default_stat_resume, loc); +        stub = fop_stat_stub (frame, default_stat_resume, loc, xdata);          if (!stub) { -                STACK_UNWIND_STRICT (stat, frame, -1, ENOMEM, NULL); +                STACK_UNWIND_STRICT (stat, frame, -1, ENOMEM, NULL, NULL);                  return 0;          } @@ -2389,9 +2389,8 @@ quiesce_lookup (call_frame_t *frame,                              quiesce_lookup_cbk,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->lookup, -                            loc, -                            xattr_req); -	        return 0; +                            loc, xattr_req); +                return 0;          }          stub = fop_lookup_stub (frame, default_lookup_resume, loc, xattr_req); @@ -2411,7 +2410,7 @@ quiesce_fsetattr (call_frame_t *frame,                    xlator_t *this,                    fd_t *fd,                    struct iatt *stbuf, -                  int32_t valid) +                  int32_t valid, dict_t *xdata)  {  	quiesce_priv_t *priv = NULL;          call_stub_t    *stub = NULL; @@ -2423,14 +2422,14 @@ quiesce_fsetattr (call_frame_t *frame,                              default_fsetattr_cbk,                              FIRST_CHILD (this),                              FIRST_CHILD (this)->fops->fsetattr, -                            fd, stbuf, valid); -	        return 0; +                            fd, stbuf, valid, xdata); +                return 0;          }          stub = fop_fsetattr_stub (frame, default_fsetattr_resume, -                                  fd, stbuf, valid); +                                  fd, stbuf, valid, xdata);          if (!stub) { -                STACK_UNWIND_STRICT (fsetattr, frame, -1, ENOMEM, NULL, NULL); +                STACK_UNWIND_STRICT (fsetattr, frame, -1, ENOMEM, NULL, NULL, NULL);                  return 0;          } diff --git a/xlators/features/quota/src/quota.c b/xlators/features/quota/src/quota.c index 42bcc2183..10b61721f 100644 --- a/xlators/features/quota/src/quota.c +++ b/xlators/features/quota/src/quota.c @@ -194,7 +194,8 @@ out:  int32_t  quota_validate_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)  {          quota_local_t     *local          = NULL;          uint32_t           validate_count = 0, link_count = 0; @@ -457,7 +458,7 @@ validate:          STACK_WIND (frame, quota_validate_cbk, FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->getxattr, &local->validate_loc, -                    QUOTA_SIZE_KEY); +                    QUOTA_SIZE_KEY, NULL);  loc_fill_failed:          inode_unref (_inode); @@ -803,7 +804,7 @@ out:  int32_t  quota_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)  {          int32_t                  ret            = 0;          uint64_t                 ctx_int        = 0; @@ -847,7 +848,8 @@ quota_writev_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          }  out: -        QUOTA_STACK_UNWIND (writev, frame, op_ret, op_errno, prebuf, postbuf); +        QUOTA_STACK_UNWIND (writev, frame, op_ret, op_errno, prebuf, postbuf, +                            xdata);          return 0;  } @@ -856,7 +858,7 @@ out:  int32_t  quota_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)  {          quota_local_t *local    = NULL;          int32_t        op_errno = EINVAL; @@ -874,11 +876,11 @@ quota_writev_helper (call_frame_t *frame, xlator_t *this, fd_t *fd,          STACK_WIND (frame, quota_writev_cbk, FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->writev, fd, vector, count, off, -                    flags, iobref); +                    flags, iobref, xdata);          return 0;  unwind: -        QUOTA_STACK_UNWIND (writev, frame, -1, op_errno, NULL, NULL); +        QUOTA_STACK_UNWIND (writev, frame, -1, op_errno, NULL, NULL, NULL);          return 0;  } @@ -886,7 +888,7 @@ unwind:  int32_t  quota_writev (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)  {          int32_t            ret     = -1, op_errno = EINVAL;          int32_t            parents = 0; @@ -918,7 +920,7 @@ quota_writev (call_frame_t *frame, xlator_t *this, fd_t *fd,          }          stub = fop_writev_stub (frame, quota_writev_helper, fd, vector, count, -                                off, flags, iobref); +                                off, flags, iobref, xdata);          if (stub == NULL) {                  op_errno = ENOMEM;                  goto unwind; @@ -967,7 +969,7 @@ quota_writev (call_frame_t *frame, xlator_t *this, fd_t *fd,          return 0;  unwind: -        QUOTA_STACK_UNWIND (writev, frame, -1, op_errno, NULL, NULL); +        QUOTA_STACK_UNWIND (writev, frame, -1, op_errno, NULL, NULL, NULL);          return 0;  } @@ -976,17 +978,17 @@ int32_t  quota_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)  {          QUOTA_STACK_UNWIND (mkdir, frame, op_ret, op_errno, inode, -                            buf, preparent, postparent); +                            buf, preparent, postparent, xdata);          return 0;  }  int32_t  quota_mkdir_helper (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)  {          quota_local_t *local    = NULL;          int32_t        op_errno = EINVAL; @@ -1004,19 +1006,19 @@ quota_mkdir_helper (call_frame_t *frame, xlator_t *this, loc_t *loc,          }          STACK_WIND (frame, quota_mkdir_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->mkdir, loc, mode, params); +                    FIRST_CHILD(this)->fops->mkdir, loc, mode, umask, xdata);          return 0;  unwind:          QUOTA_STACK_UNWIND (mkdir, frame, -1, op_errno, NULL, NULL, -                            NULL, NULL); +                            NULL, NULL, NULL);          return 0;  }  int32_t  quota_mkdir (call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode, -             dict_t *params) +             mode_t umask, dict_t *xdata)  {          int32_t        ret            = 0, op_errno = 0;          quota_local_t *local          = NULL; @@ -1039,7 +1041,8 @@ quota_mkdir (call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode,                  goto err;          } -        stub = fop_mkdir_stub (frame, quota_mkdir_helper, loc, mode, params); +        stub = fop_mkdir_stub (frame, quota_mkdir_helper, loc, mode, umask, +                               xdata);          if (stub == NULL) {                  op_errno = ENOMEM;                  goto err; @@ -1070,7 +1073,7 @@ quota_mkdir (call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode,          return 0;  err:          QUOTA_STACK_UNWIND (mkdir, frame, -1, op_errno, NULL, NULL, NULL, -                            NULL); +                            NULL, NULL);          return 0;  } @@ -1080,7 +1083,7 @@ int32_t  quota_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)  {          int32_t            ret    = -1;          quota_local_t     *local  = NULL; @@ -1123,14 +1126,15 @@ unlock:  unwind:          QUOTA_STACK_UNWIND (create, frame, op_ret, op_errno, fd, inode, buf, -                            preparent, postparent); +                            preparent, postparent, xdata);          return 0;  }  int32_t  quota_create_helper (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)  {          quota_local_t *local    = NULL;          int32_t        op_errno = EINVAL; @@ -1147,20 +1151,20 @@ quota_create_helper (call_frame_t *frame, xlator_t *this, loc_t *loc,          }          STACK_WIND (frame, quota_create_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->create, loc, flags, mode, fd, -                    params); +                    FIRST_CHILD(this)->fops->create, loc, flags, mode, umask, +                    fd, xdata);          return 0;  unwind:          QUOTA_STACK_UNWIND (create, frame, -1, op_errno, NULL, NULL, -                            NULL, NULL, NULL); +                            NULL, NULL, NULL, NULL);          return 0;  }  int32_t  quota_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            ret            = -1;          quota_local_t     *local          = NULL; @@ -1180,7 +1184,7 @@ quota_create (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t flags,          }          stub = fop_create_stub (frame, quota_create_helper, loc, flags, mode, -                                fd, params); +                                umask, fd, xdata);          if (stub == NULL) {                  goto err;          } @@ -1210,7 +1214,7 @@ quota_create (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t flags,          return 0;  err:          QUOTA_STACK_UNWIND (create, frame, -1, ENOMEM, NULL, NULL, NULL, NULL, -                            NULL); +                            NULL, NULL);          return 0;  } @@ -1219,7 +1223,7 @@ err:  int32_t  quota_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)  {          quota_local_t     *local = NULL;          quota_inode_ctx_t *ctx   = NULL; @@ -1247,13 +1251,14 @@ quota_unlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  out:          QUOTA_STACK_UNWIND (unlink, frame, op_ret, op_errno, preparent, -                            postparent); +                            postparent, xdata);          return 0;  }  int32_t -quota_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc) +quota_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc, int xflag, +              dict_t *xdata)  {          int32_t        ret = 0;          quota_local_t *local = NULL; @@ -1272,13 +1277,13 @@ quota_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc)          }          STACK_WIND (frame, quota_unlink_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->unlink, loc); +                    FIRST_CHILD(this)->fops->unlink, loc, xflag, xdata);          ret = 0;  err:          if (ret == -1) { -                QUOTA_STACK_UNWIND (unlink, frame, -1, 0, NULL, NULL); +                QUOTA_STACK_UNWIND (unlink, frame, -1, 0, NULL, NULL, NULL);          }          return 0; @@ -1289,7 +1294,7 @@ int32_t  quota_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 *postparent, dict_t *xdata)  {          int32_t               ret          = -1;          quota_local_t        *local        = NULL; @@ -1354,7 +1359,7 @@ unlock:  out:          QUOTA_STACK_UNWIND (link, frame, op_ret, op_errno, inode, buf, -                            preparent, postparent); +                            preparent, postparent, xdata);          return 0;  } @@ -1362,7 +1367,7 @@ out:  int32_t  quota_link_helper (call_frame_t *frame, xlator_t *this, loc_t *oldloc, -                   loc_t *newloc) +                   loc_t *newloc, dict_t *xdata)  {          quota_local_t *local    = NULL;          int32_t        op_errno = EINVAL; @@ -1380,18 +1385,19 @@ quota_link_helper (call_frame_t *frame, xlator_t *this, loc_t *oldloc,          }          STACK_WIND (frame, quota_link_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->link, oldloc, newloc); +                    FIRST_CHILD(this)->fops->link, oldloc, newloc, xdata);          return 0;  unwind:          QUOTA_STACK_UNWIND (link, frame, -1, op_errno, NULL, NULL, -                            NULL, NULL); +                            NULL, NULL, NULL);          return 0;  }  int32_t -quota_link (call_frame_t *frame, xlator_t *this, loc_t *oldloc, loc_t *newloc) +quota_link (call_frame_t *frame, xlator_t *this, loc_t *oldloc, loc_t *newloc, +            dict_t *xdata)  {          int32_t            ret   = -1, op_errno = ENOMEM;          quota_local_t     *local = NULL; @@ -1411,7 +1417,7 @@ quota_link (call_frame_t *frame, xlator_t *this, loc_t *oldloc, loc_t *newloc)                  goto err;          } -        stub = fop_link_stub (frame, quota_link_helper, oldloc, newloc); +        stub = fop_link_stub (frame, quota_link_helper, oldloc, newloc, xdata);          if (stub == NULL) {                  goto err;          } @@ -1454,7 +1460,7 @@ quota_link (call_frame_t *frame, xlator_t *this, loc_t *oldloc, loc_t *newloc)  err:          if (ret < 0) {                  QUOTA_STACK_UNWIND (link, frame, -1, op_errno, NULL, NULL, -                                    NULL, NULL); +                                    NULL, NULL, NULL);          }          return 0; @@ -1465,7 +1471,8 @@ int32_t  quota_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)  {          int32_t               ret              = -1;          quota_local_t        *local            = NULL; @@ -1569,7 +1576,7 @@ unlock:  out:          QUOTA_STACK_UNWIND (rename, frame, op_ret, op_errno, buf, preoldparent, -                            postoldparent, prenewparent, postnewparent); +                            postoldparent, prenewparent, postnewparent, xdata);          return 0;  } @@ -1577,7 +1584,7 @@ out:  int32_t  quota_rename_helper (call_frame_t *frame, xlator_t *this, loc_t *oldloc, -                     loc_t *newloc) +                     loc_t *newloc, dict_t *xdata)  {          quota_local_t *local    = NULL;          int32_t        op_errno = EINVAL; @@ -1595,19 +1602,19 @@ quota_rename_helper (call_frame_t *frame, xlator_t *this, loc_t *oldloc,          }          STACK_WIND (frame, quota_rename_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->rename, oldloc, newloc); +                    FIRST_CHILD(this)->fops->rename, oldloc, newloc, xdata);          return 0;  unwind:          QUOTA_STACK_UNWIND (rename, frame, -1, op_errno, NULL, NULL, -                            NULL, NULL, NULL); +                            NULL, NULL, NULL, NULL);          return 0;  }  int32_t  quota_rename (call_frame_t *frame, xlator_t *this, loc_t *oldloc, -              loc_t *newloc) +              loc_t *newloc, dict_t *xdata)  {          int32_t            ret            = -1, op_errno = ENOMEM;          quota_local_t     *local          = NULL; @@ -1633,7 +1640,8 @@ quota_rename (call_frame_t *frame, xlator_t *this, loc_t *oldloc,                  goto err;          } -        stub = fop_rename_stub (frame, quota_rename_helper, oldloc, newloc); +        stub = fop_rename_stub (frame, quota_rename_helper, oldloc, newloc, +                                xdata);          if (stub == NULL) {                  goto err;          } @@ -1681,7 +1689,7 @@ quota_rename (call_frame_t *frame, xlator_t *this, loc_t *oldloc,  err:          if (ret == -1) {                  QUOTA_STACK_UNWIND (rename, frame, -1, op_errno, NULL, -                                    NULL, NULL, NULL, NULL); +                                    NULL, NULL, NULL, NULL, NULL);          }          return 0; @@ -1692,7 +1700,7 @@ int32_t  quota_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)  {          int64_t            size   = 0;          quota_local_t     *local  = NULL; @@ -1736,7 +1744,7 @@ quota_symlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  out:          QUOTA_STACK_UNWIND (symlink, frame, op_ret, op_errno, inode, buf, -                            preparent, postparent); +                            preparent, postparent, xdata);          return 0;  } @@ -1744,7 +1752,7 @@ out:  int  quota_symlink_helper (call_frame_t *frame, xlator_t *this, const char *linkpath, -                      loc_t *loc, dict_t *params) +                      loc_t *loc, mode_t umask, dict_t *xdata)  {          quota_local_t *local    = NULL;          int32_t        op_errno = EINVAL; @@ -1761,19 +1769,20 @@ quota_symlink_helper (call_frame_t *frame, xlator_t *this, const char *linkpath,          }          STACK_WIND (frame, quota_symlink_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->symlink, linkpath, loc, params); +                    FIRST_CHILD(this)->fops->symlink, linkpath, loc, umask, +                    xdata);          return 0;  unwind:          QUOTA_STACK_UNWIND (symlink, frame, -1, op_errno, NULL, NULL, -                            NULL, NULL); +                            NULL, NULL, NULL);          return 0;  }  int  quota_symlink (call_frame_t *frame, xlator_t *this, const char *linkpath, -               loc_t *loc, dict_t *params) +               loc_t *loc, mode_t umask, dict_t *xdata)  {          int32_t          ret      = -1;          int32_t          op_errno = ENOMEM; @@ -1796,7 +1805,7 @@ quota_symlink (call_frame_t *frame, xlator_t *this, const char *linkpath,          local->link_count = 1;          stub = fop_symlink_stub (frame, quota_symlink_helper, linkpath, loc, -                                 params); +                                 umask, xdata);          if (stub == NULL) {                  goto err;          } @@ -1827,7 +1836,7 @@ quota_symlink (call_frame_t *frame, xlator_t *this, const char *linkpath,  err:          QUOTA_STACK_UNWIND (symlink, frame, -1, op_errno, NULL, NULL, NULL, -                            NULL); +                            NULL, NULL);          return 0;  } @@ -1836,7 +1845,7 @@ err:  int32_t  quota_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)  {          quota_local_t     *local = NULL;          int64_t            delta = 0; @@ -1873,13 +1882,14 @@ quota_truncate_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  out:          QUOTA_STACK_UNWIND (truncate, frame, op_ret, op_errno, prebuf, -                            postbuf); +                            postbuf, xdata);          return 0;  }  int32_t -quota_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, off_t offset) +quota_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, off_t offset, +                dict_t *xdata)  {          int32_t          ret   = -1;          quota_local_t   *local = NULL; @@ -1898,11 +1908,11 @@ quota_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, off_t offset)          }          STACK_WIND (frame, quota_truncate_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->truncate, loc, offset); +                    FIRST_CHILD(this)->fops->truncate, loc, offset, xdata);          return 0;  err: -        QUOTA_STACK_UNWIND (truncate, frame, -1, ENOMEM, NULL, NULL); +        QUOTA_STACK_UNWIND (truncate, frame, -1, ENOMEM, NULL, NULL, NULL);          return 0;  } @@ -1911,7 +1921,7 @@ err:  int32_t  quota_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)  {          quota_local_t     *local = NULL;          int64_t            delta = 0; @@ -1948,13 +1958,14 @@ quota_ftruncate_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  out:          QUOTA_STACK_UNWIND (ftruncate, frame, op_ret, op_errno, prebuf, -                            postbuf); +                            postbuf, xdata);          return 0;  }  int32_t -quota_ftruncate (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset) +quota_ftruncate (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset, +                 dict_t *xdata)  {          quota_local_t   *local = NULL; @@ -1967,11 +1978,11 @@ quota_ftruncate (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset)          local->loc.inode = inode_ref (fd->inode);          STACK_WIND (frame, quota_ftruncate_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->ftruncate, fd, offset); +                    FIRST_CHILD(this)->fops->ftruncate, fd, offset, xdata);          return 0;  err: -        QUOTA_STACK_UNWIND (ftruncate, frame, -1, ENOMEM, NULL, NULL); +        QUOTA_STACK_UNWIND (ftruncate, frame, -1, ENOMEM, NULL, NULL, NULL);          return 0;  } @@ -2006,7 +2017,7 @@ quota_send_dir_limit_to_cli (call_frame_t *frame, xlator_t *this,          gf_log (this->name, GF_LOG_INFO, "str = %s", dir_limit); -        QUOTA_STACK_UNWIND (getxattr, frame, 0, 0, dict); +        QUOTA_STACK_UNWIND (getxattr, frame, 0, 0, dict, NULL);          ret = 0; @@ -2017,7 +2028,7 @@ out:  int32_t  quota_fgetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd, -                 const char *name) +                 const char *name, dict_t *xdata)  {          int32_t ret     = 0; @@ -2030,14 +2041,14 @@ quota_fgetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd,          }          STACK_WIND (frame, default_fgetxattr_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->fgetxattr, fd, name); +                    FIRST_CHILD(this)->fops->fgetxattr, fd, name, xdata);          return 0;  }  int32_t  quota_getxattr (call_frame_t *frame, xlator_t *this, loc_t *loc, -                const char *name) +                const char *name, dict_t *xdata)  {          int32_t ret     = 0; @@ -2049,14 +2060,14 @@ quota_getxattr (call_frame_t *frame, xlator_t *this, loc_t *loc,          }          STACK_WIND (frame, default_getxattr_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->getxattr, loc, name); +                    FIRST_CHILD(this)->fops->getxattr, loc, name, xdata);          return 0;  }  int32_t  quota_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)  {          quota_local_t     *local = NULL;          quota_inode_ctx_t *ctx   = NULL; @@ -2088,13 +2099,13 @@ quota_stat_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          UNLOCK (&ctx->lock);  out: -        QUOTA_STACK_UNWIND (stat, frame, op_ret, op_errno, buf); +        QUOTA_STACK_UNWIND (stat, frame, op_ret, op_errno, buf, xdata);          return 0;  }  int32_t -quota_stat (call_frame_t *frame, xlator_t *this, loc_t *loc) +quota_stat (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *xdata)  {          quota_local_t *local = NULL;          int32_t        ret   = -1; @@ -2112,18 +2123,19 @@ quota_stat (call_frame_t *frame, xlator_t *this, loc_t *loc)          }          STACK_WIND (frame, quota_stat_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->stat, loc); +                    FIRST_CHILD(this)->fops->stat, loc, xdata);          return 0;  unwind: -        QUOTA_STACK_UNWIND (stat, frame, -1, ENOMEM, NULL); +        QUOTA_STACK_UNWIND (stat, frame, -1, ENOMEM, NULL, NULL);          return 0;  }  int32_t  quota_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)  {          quota_local_t     *local = NULL;          quota_inode_ctx_t *ctx   = NULL; @@ -2155,13 +2167,13 @@ quota_fstat_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          UNLOCK (&ctx->lock);  out: -        QUOTA_STACK_UNWIND (fstat, frame, op_ret, op_errno, buf); +        QUOTA_STACK_UNWIND (fstat, frame, op_ret, op_errno, buf, xdata);          return 0;  }  int32_t -quota_fstat (call_frame_t *frame, xlator_t *this, fd_t *fd) +quota_fstat (call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *xdata)  {          quota_local_t *local = NULL; @@ -2175,11 +2187,11 @@ quota_fstat (call_frame_t *frame, xlator_t *this, fd_t *fd)          local->loc.inode = inode_ref (fd->inode);          STACK_WIND (frame, quota_fstat_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->fstat, fd); +                    FIRST_CHILD(this)->fops->fstat, fd, xdata);          return 0;  unwind: -        QUOTA_STACK_UNWIND (fstat, frame, -1, ENOMEM, NULL); +        QUOTA_STACK_UNWIND (fstat, frame, -1, ENOMEM, NULL, NULL);          return 0;  } @@ -2187,7 +2199,7 @@ unwind:  int32_t  quota_readlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                      int32_t op_ret, int32_t op_errno, const char *path, -                    struct iatt *buf) +                    struct iatt *buf, dict_t *xdata)  {          quota_local_t     *local = NULL;          quota_inode_ctx_t *ctx   = NULL; @@ -2218,13 +2230,14 @@ quota_readlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          UNLOCK (&ctx->lock);  out: -        QUOTA_STACK_UNWIND (readlink, frame, op_ret, op_errno, path, buf); +        QUOTA_STACK_UNWIND (readlink, frame, op_ret, op_errno, path, buf, xdata);          return 0;  }  int32_t -quota_readlink (call_frame_t *frame, xlator_t *this, loc_t *loc, size_t size) +quota_readlink (call_frame_t *frame, xlator_t *this, loc_t *loc, size_t size, +                dict_t *xdata)  {          quota_local_t *local = NULL;          int32_t        ret   = -1; @@ -2243,11 +2256,11 @@ quota_readlink (call_frame_t *frame, xlator_t *this, loc_t *loc, size_t size)          }          STACK_WIND (frame, quota_readlink_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->readlink, loc, size); +                    FIRST_CHILD(this)->fops->readlink, loc, size, xdata);          return 0;  unwind: -        QUOTA_STACK_UNWIND (readlink, frame, -1, ENOMEM, NULL, NULL); +        QUOTA_STACK_UNWIND (readlink, frame, -1, ENOMEM, NULL, NULL, NULL);          return 0;  } @@ -2255,7 +2268,8 @@ unwind:  int32_t  quota_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 *buf, struct iobref *iobref) +                 int32_t count, struct iatt *buf, struct iobref *iobref, +                 dict_t *xdata)  {          quota_local_t     *local = NULL;          quota_inode_ctx_t *ctx   = NULL; @@ -2287,14 +2301,14 @@ quota_readv_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  out:          QUOTA_STACK_UNWIND (readv, frame, op_ret, op_errno, vector, count, -                            buf, iobref); +                            buf, iobref, xdata);          return 0;  }  int32_t  quota_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)  {          quota_local_t *local = NULL; @@ -2308,11 +2322,12 @@ quota_readv (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size,          local->loc.inode = inode_ref (fd->inode);          STACK_WIND (frame, quota_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: -        QUOTA_STACK_UNWIND (readv, frame, -1, ENOMEM, NULL, -1, NULL, NULL); +        QUOTA_STACK_UNWIND (readv, frame, -1, ENOMEM, NULL, -1, NULL, NULL, NULL);          return 0;  } @@ -2320,7 +2335,7 @@ unwind:  int32_t  quota_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)  {          quota_local_t     *local = NULL;          quota_inode_ctx_t *ctx   = NULL; @@ -2351,13 +2366,15 @@ quota_fsync_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          UNLOCK (&ctx->lock);  out: -        QUOTA_STACK_UNWIND (fsync, frame, op_ret, op_errno, prebuf, postbuf); +        QUOTA_STACK_UNWIND (fsync, frame, op_ret, op_errno, prebuf, postbuf, +                            xdata);          return 0;  }  int32_t -quota_fsync (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t flags) +quota_fsync (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t flags, +             dict_t *xdata)  {          quota_local_t *local = NULL; @@ -2371,11 +2388,11 @@ quota_fsync (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t flags)          frame->local = local;          STACK_WIND (frame, quota_fsync_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->fsync, fd, flags); +                    FIRST_CHILD(this)->fops->fsync, fd, flags, xdata);          return 0;  unwind: -        QUOTA_STACK_UNWIND (fsync, frame, -1, ENOMEM, NULL, NULL); +        QUOTA_STACK_UNWIND (fsync, frame, -1, ENOMEM, NULL, NULL, NULL);          return 0;  } @@ -2384,7 +2401,7 @@ unwind:  int32_t  quota_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)  {          quota_local_t     *local = NULL;          quota_inode_ctx_t *ctx   = NULL; @@ -2417,14 +2434,14 @@ quota_setattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  out:          QUOTA_STACK_UNWIND (setattr, frame, op_ret, op_errno, statpre, -                            statpost); +                            statpost, xdata);          return 0;  }  int32_t  quota_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)  {          quota_local_t *local = NULL;          int32_t        ret   = -1; @@ -2443,11 +2460,11 @@ quota_setattr (call_frame_t *frame, xlator_t *this, loc_t *loc,          }          STACK_WIND (frame, quota_setattr_cbk, FIRST_CHILD (this), -                    FIRST_CHILD (this)->fops->setattr, loc, stbuf, valid); +                    FIRST_CHILD (this)->fops->setattr, loc, stbuf, valid, xdata);          return 0;  unwind: -        QUOTA_STACK_UNWIND (setattr, frame, -1, ENOMEM, NULL, NULL); +        QUOTA_STACK_UNWIND (setattr, frame, -1, ENOMEM, NULL, NULL, NULL);          return 0;  } @@ -2455,7 +2472,7 @@ unwind:  int32_t  quota_fsetattr_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)  {          quota_local_t     *local = NULL;          quota_inode_ctx_t *ctx   = NULL; @@ -2487,14 +2504,14 @@ quota_fsetattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  out:          QUOTA_STACK_UNWIND (fsetattr, frame, op_ret, op_errno, statpre, -                            statpost); +                            statpost, xdata);          return 0;  }  int32_t  quota_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)  {          quota_local_t *local = NULL; @@ -2508,11 +2525,11 @@ quota_fsetattr (call_frame_t *frame, xlator_t *this, fd_t *fd,          local->loc.inode = inode_ref (fd->inode);          STACK_WIND (frame, quota_fsetattr_cbk, FIRST_CHILD (this), -                    FIRST_CHILD (this)->fops->fsetattr, fd, stbuf, valid); +                    FIRST_CHILD (this)->fops->fsetattr, fd, stbuf, valid, xdata);          return 0;  unwind: -        QUOTA_STACK_UNWIND (fsetattr, frame, -1, ENOMEM, NULL, NULL); +        QUOTA_STACK_UNWIND (fsetattr, frame, -1, ENOMEM, NULL, NULL, NULL);          return 0;  } @@ -2521,7 +2538,7 @@ int32_t  quota_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)  {          int32_t            ret    = -1;          quota_local_t     *local  = NULL; @@ -2563,14 +2580,14 @@ unlock:  unwind:          QUOTA_STACK_UNWIND (mknod, frame, op_ret, op_errno, inode, -                            buf, preparent, postparent); +                            buf, preparent, postparent, xdata);          return 0;  }  int  quota_mknod_helper (call_frame_t *frame, xlator_t *this, loc_t *loc, -                    mode_t mode, dev_t rdev, dict_t *parms) +                    mode_t mode, dev_t rdev, mode_t umask, dict_t *xdata)  {          quota_local_t *local    = NULL;          int32_t        op_errno = EINVAL; @@ -2587,20 +2604,21 @@ quota_mknod_helper (call_frame_t *frame, xlator_t *this, loc_t *loc,          }          STACK_WIND (frame, quota_mknod_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->mknod, loc, mode, rdev, parms); +                    FIRST_CHILD(this)->fops->mknod, loc, mode, rdev, umask, +                    xdata);          return 0;  unwind:          QUOTA_STACK_UNWIND (mknod, frame, -1, op_errno, NULL, NULL, -                            NULL, NULL); +                            NULL, NULL, NULL);          return 0;  }  int  quota_mknod (call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode, -             dev_t rdev, dict_t *parms) +             dev_t rdev, mode_t umask, dict_t *xdata)  {          int32_t            ret            = -1;          quota_local_t     *local          = NULL; @@ -2620,7 +2638,7 @@ quota_mknod (call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode,          }          stub = fop_mknod_stub (frame, quota_mknod_helper, loc, mode, rdev, -                               parms); +                               umask, xdata);          if (stub == NULL) {                  goto err;          } @@ -2649,22 +2667,23 @@ quota_mknod (call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode,          return 0;  err: -        QUOTA_STACK_UNWIND (mknod, frame, -1, ENOMEM, NULL, NULL, NULL, NULL); +        QUOTA_STACK_UNWIND (mknod, frame, -1, ENOMEM, NULL, NULL, NULL, NULL, +                            NULL);          return 0;  }  int  quota_setxattr_cbk (call_frame_t *frame, void *cookie, -                    xlator_t *this, int op_ret, int op_errno) +                    xlator_t *this, int op_ret, int op_errno, dict_t *xdata)  { -        QUOTA_STACK_UNWIND (setxattr, frame, op_ret, op_errno); +        QUOTA_STACK_UNWIND (setxattr, frame, op_ret, op_errno, xdata);          return 0;  }  int  quota_setxattr (call_frame_t *frame, xlator_t *this, -                loc_t *loc, dict_t *dict, int flags) +                loc_t *loc, dict_t *dict, int flags, dict_t *xdata)  {          data_pair_t    *trav     = NULL;          int             op_errno = EINVAL; @@ -2680,24 +2699,24 @@ quota_setxattr (call_frame_t *frame, xlator_t *this,          STACK_WIND (frame, quota_setxattr_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->setxattr, -                    loc, dict, flags); +                    loc, dict, flags, xdata);          return 0;  err: -        QUOTA_STACK_UNWIND (setxattr, frame, op_ret, op_errno); +        QUOTA_STACK_UNWIND (setxattr, frame, op_ret, op_errno, NULL);          return 0;  }  int  quota_fsetxattr_cbk (call_frame_t *frame, void *cookie, -                     xlator_t *this, int op_ret, int op_errno) +                     xlator_t *this, int op_ret, int op_errno, dict_t *xdata)  { -        QUOTA_STACK_UNWIND (fsetxattr, frame, op_ret, op_errno); +        QUOTA_STACK_UNWIND (fsetxattr, frame, op_ret, op_errno, xdata);          return 0;  }  int  quota_fsetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd, -                 dict_t *dict, int flags) +                 dict_t *dict, int flags, dict_t *xdata)  {          data_pair_t    *trav     = NULL;          int32_t         op_ret   = -1; @@ -2713,25 +2732,25 @@ quota_fsetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd,          STACK_WIND (frame, quota_fsetxattr_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->fsetxattr, -                    fd, dict, flags); +                    fd, dict, flags, xdata);          return 0;   err: -        QUOTA_STACK_UNWIND (fsetxattr, frame, op_ret, op_errno); +        QUOTA_STACK_UNWIND (fsetxattr, frame, op_ret, op_errno, NULL);          return 0;  }  int -quota_removexattr_cbk (call_frame_t *frame, void *cookie, -                       xlator_t *this, int32_t op_ret, int32_t op_errno) +quota_removexattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, +                       int32_t op_ret, int32_t op_errno, dict_t *xdata)  { -        QUOTA_STACK_UNWIND (removexattr, frame, op_ret, op_errno); +        QUOTA_STACK_UNWIND (removexattr, frame, op_ret, op_errno, xdata);          return 0;  }  int  quota_removexattr (call_frame_t *frame, xlator_t *this, -                   loc_t *loc, const char *name) +                   loc_t *loc, const char *name, dict_t *xdata)  {          int32_t         op_errno = EINVAL; @@ -2746,25 +2765,25 @@ quota_removexattr (call_frame_t *frame, xlator_t *this,          STACK_WIND (frame, quota_removexattr_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->removexattr, -                    loc, name); +                    loc, name, xdata);          return 0;  err: -        QUOTA_STACK_UNWIND (removexattr, frame, -1,  op_errno); +        QUOTA_STACK_UNWIND (removexattr, frame, -1,  op_errno, NULL);          return 0;  }  int -quota_fremovexattr_cbk (call_frame_t *frame, void *cookie, -                        xlator_t *this, int32_t op_ret, int32_t op_errno) +quota_fremovexattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, +                        int32_t op_ret, int32_t op_errno, dict_t *xdata)  { -        QUOTA_STACK_UNWIND (fremovexattr, frame, op_ret, op_errno); +        QUOTA_STACK_UNWIND (fremovexattr, frame, op_ret, op_errno, xdata);          return 0;  }  int  quota_fremovexattr (call_frame_t *frame, xlator_t *this, -                    fd_t *fd, const char *name) +                    fd_t *fd, const char *name, dict_t *xdata)  {          int32_t         op_ret   = -1;          int32_t         op_errno = EINVAL; @@ -2779,16 +2798,17 @@ quota_fremovexattr (call_frame_t *frame, xlator_t *this,          STACK_WIND (frame, quota_fremovexattr_cbk,                      FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->fremovexattr, -                    fd, name); +                    fd, name, xdata);          return 0;   err: -        QUOTA_STACK_UNWIND (fremovexattr, frame, op_ret, op_errno); +        QUOTA_STACK_UNWIND (fremovexattr, frame, op_ret, op_errno, NULL);          return 0;  }  int32_t  quota_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)  {  	inode_t            *root_inode = NULL;          quota_priv_t       *priv       = NULL; @@ -2853,13 +2873,13 @@ unwind:  	if (root_inode) {  		inode_unref(root_inode);  	} -        STACK_UNWIND_STRICT (statfs, frame, op_ret, op_errno, buf); +        STACK_UNWIND_STRICT (statfs, frame, op_ret, op_errno, buf, xdata);          return 0;  }  int32_t -quota_statfs (call_frame_t *frame, xlator_t *this, loc_t *loc) +quota_statfs (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *xdata)  {  	inode_t *root_inode = NULL; @@ -2868,7 +2888,7 @@ quota_statfs (call_frame_t *frame, xlator_t *this, loc_t *loc)  		inode_ref(root_inode);  		STACK_WIND_COOKIE (frame, quota_statfs_cbk, root_inode,  				   FIRST_CHILD(this), -				   FIRST_CHILD(this)->fops->statfs, loc); +				   FIRST_CHILD(this)->fops->statfs, loc, xdata);  	}  	else {  		/* @@ -2881,7 +2901,7 @@ quota_statfs (call_frame_t *frame, xlator_t *this, loc_t *loc)  		gf_log(this->name,GF_LOG_WARNING,  		       "missing inode, cannot adjust for quota");  		STACK_WIND (frame, default_statfs_cbk, FIRST_CHILD(this), -			    FIRST_CHILD(this)->fops->statfs, loc); +			    FIRST_CHILD(this)->fops->statfs, loc, xdata);  	}          return 0;  } @@ -2889,7 +2909,8 @@ quota_statfs (call_frame_t *frame, xlator_t *this, loc_t *loc)  int  quota_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; @@ -2901,7 +2922,7 @@ quota_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;  } @@ -2923,7 +2944,7 @@ quota_readdirp (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size,                      fd, size, offset, dict);          return 0;  err: -        STACK_UNWIND_STRICT (readdirp, frame, -1, EINVAL, NULL); +        STACK_UNWIND_STRICT (readdirp, frame, -1, EINVAL, NULL, NULL);          return 0;  } diff --git a/xlators/features/read-only/src/read-only-common.c b/xlators/features/read-only/src/read-only-common.c index efd175081..dbb529ce5 100644 --- a/xlators/features/read-only/src/read-only-common.c +++ b/xlators/features/read-only/src/read-only-common.c @@ -27,220 +27,223 @@  int32_t  ro_xattrop (call_frame_t *frame, xlator_t *this, loc_t *loc, -            gf_xattrop_flags_t flags, dict_t *dict) +            gf_xattrop_flags_t flags, dict_t *dict, dict_t *xdata)  { -        STACK_UNWIND_STRICT (xattrop, frame, -1, EROFS, NULL); +        STACK_UNWIND_STRICT (xattrop, frame, -1, EROFS, NULL, xdata);          return 0;  }  int32_t  ro_fxattrop (call_frame_t *frame, xlator_t *this, -             fd_t *fd, gf_xattrop_flags_t flags, dict_t *dict) +             fd_t *fd, gf_xattrop_flags_t flags, dict_t *dict, dict_t *xdata)  { -        STACK_UNWIND_STRICT (fxattrop, frame, -1, EROFS, NULL); +        STACK_UNWIND_STRICT (fxattrop, frame, -1, EROFS, NULL, xdata);          return 0;  }  int32_t  ro_entrylk (call_frame_t *frame, xlator_t *this, const char *volume,              loc_t *loc, const char *basename, entrylk_cmd cmd, -            entrylk_type type) +            entrylk_type type, dict_t *xdata)  { -        STACK_UNWIND_STRICT (entrylk, frame, -1, EROFS); +        STACK_UNWIND_STRICT (entrylk, frame, -1, EROFS, xdata);          return 0;  }  int32_t  ro_fentrylk (call_frame_t *frame, xlator_t *this, const char *volume, -             fd_t *fd, const char *basename, entrylk_cmd cmd, entrylk_type type) +             fd_t *fd, const char *basename, entrylk_cmd cmd, entrylk_type type, dict_t *xdata)  { -        STACK_UNWIND_STRICT (fentrylk, frame, -1, EROFS); +        STACK_UNWIND_STRICT (fentrylk, frame, -1, EROFS, xdata);          return 0;  }  int32_t  ro_inodelk (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_UNWIND_STRICT (inodelk, frame, -1, EROFS); +        STACK_UNWIND_STRICT (inodelk, frame, -1, EROFS, xdata);          return 0;  }  int32_t  ro_finodelk (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)  { -        STACK_UNWIND_STRICT (finodelk, frame, -1, EROFS); +        STACK_UNWIND_STRICT (finodelk, frame, -1, EROFS, xdata);          return 0;  }  int32_t  ro_lk (call_frame_t *frame, xlator_t *this, fd_t *fd, int cmd, -       struct gf_flock *flock) +       struct gf_flock *flock, dict_t *xdata)  { -        STACK_UNWIND_STRICT (lk, frame, -1, EROFS, NULL); +        STACK_UNWIND_STRICT (lk, frame, -1, EROFS, NULL, xdata);          return 0;  }  int32_t  ro_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)  { -        STACK_UNWIND_STRICT (setattr, frame, -1, EROFS, NULL, NULL); +        STACK_UNWIND_STRICT (setattr, frame, -1, EROFS, NULL, NULL, xdata);  	return 0;  }  int32_t  ro_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)  { -        STACK_UNWIND_STRICT (fsetattr, frame, -1, EROFS, NULL, NULL); +        STACK_UNWIND_STRICT (fsetattr, frame, -1, EROFS, NULL, NULL, xdata);          return 0;  }  int32_t -ro_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, off_t offset) +ro_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, off_t offset, dict_t *xdata)  { -        STACK_UNWIND_STRICT (truncate, frame, -1, EROFS, NULL, NULL); +        STACK_UNWIND_STRICT (truncate, frame, -1, EROFS, NULL, NULL, xdata);  	return 0;  }  int32_t -ro_ftruncate (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset) +ro_ftruncate (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset, dict_t *xdata)  { -        STACK_UNWIND_STRICT (ftruncate, frame, -1, EROFS, NULL, NULL); +        STACK_UNWIND_STRICT (ftruncate, frame, -1, EROFS, NULL, NULL, xdata);  	return 0;  }  int  ro_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)  { -        STACK_UNWIND_STRICT (mknod, frame, -1, EROFS, NULL, NULL, NULL, NULL); +        STACK_UNWIND_STRICT (mknod, frame, -1, EROFS, NULL, NULL, NULL, NULL, xdata);          return 0;  }  int  ro_mkdir (call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode, -          dict_t *params) +          mode_t umask, dict_t *xdata)  { -        STACK_UNWIND_STRICT (mkdir, frame, -1, EROFS, NULL, NULL, NULL, NULL); +        STACK_UNWIND_STRICT (mkdir, frame, -1, EROFS, NULL, NULL, NULL, NULL, xdata);          return 0;  }  int32_t -ro_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc) +ro_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc, int xflag, +           dict_t *xdata)  { -        STACK_UNWIND_STRICT (unlink, frame, -1, EROFS, NULL, NULL); +        STACK_UNWIND_STRICT (unlink, frame, -1, EROFS, NULL, NULL, xdata);          return 0;  }  int -ro_rmdir (call_frame_t *frame, xlator_t *this, loc_t *loc, int flags) +ro_rmdir (call_frame_t *frame, xlator_t *this, loc_t *loc, int flags, +          dict_t *xdata)  { -        STACK_UNWIND_STRICT (rmdir, frame, -1, EROFS, NULL, NULL); +        STACK_UNWIND_STRICT (rmdir, frame, -1, EROFS, NULL, NULL, xdata);          return 0;  }  int  ro_symlink (call_frame_t *frame, xlator_t *this, const char *linkpath, -            loc_t *loc, dict_t *params) +            loc_t *loc, mode_t umask, dict_t *xdata)  { -        STACK_UNWIND_STRICT (symlink, frame, -1, EROFS, NULL, NULL, NULL, NULL); +        STACK_UNWIND_STRICT (symlink, frame, -1, EROFS, NULL, NULL, NULL, +                             NULL, xdata);          return 0;  }  int32_t -ro_rename (call_frame_t *frame, xlator_t *this, loc_t *oldloc, loc_t *newloc) +ro_rename (call_frame_t *frame, xlator_t *this, loc_t *oldloc, loc_t *newloc, dict_t *xdata)  {          STACK_UNWIND_STRICT (rename, frame, -1, EROFS, NULL, NULL, NULL, NULL, -                             NULL); +                             NULL, xdata);          return 0;  }  int32_t -ro_link (call_frame_t *frame, xlator_t *this, loc_t *oldloc, loc_t *newloc) +ro_link (call_frame_t *frame, xlator_t *this, loc_t *oldloc, loc_t *newloc, dict_t *xdata)  { -        STACK_UNWIND_STRICT (link, frame, -1, EROFS, NULL, NULL, NULL, NULL); +        STACK_UNWIND_STRICT (link, frame, -1, EROFS, NULL, NULL, NULL, NULL, xdata);          return 0;  }  int32_t  ro_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)  {          STACK_UNWIND_STRICT (create, frame, -1, EROFS, NULL, NULL, NULL, -                             NULL, NULL); +                             NULL, NULL, xdata);          return 0;  }  static int32_t  ro_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;  }  int32_t  ro_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)  {          if (((flags & O_ACCMODE) == O_WRONLY) ||                ((flags & O_ACCMODE) == O_RDWR)) { -                STACK_UNWIND_STRICT (open, frame, -1, EROFS, NULL); +                STACK_UNWIND_STRICT (open, frame, -1, EROFS, NULL, xdata);                  return 0;  	}  	STACK_WIND (frame, ro_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;  }  int32_t  ro_fsetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *dict, -              int32_t flags) +              int32_t flags, dict_t *xdata)  { -        STACK_UNWIND_STRICT (fsetxattr, frame, -1, EROFS); +        STACK_UNWIND_STRICT (fsetxattr, frame, -1, EROFS, xdata);  	return 0;  }  int32_t -ro_fsyncdir (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t flags) +ro_fsyncdir (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t flags, dict_t *xdata)  { -        STACK_UNWIND_STRICT (fsyncdir, frame, -1, EROFS); +        STACK_UNWIND_STRICT (fsyncdir, frame, -1, EROFS, xdata);  	return 0;  }  int32_t  ro_writev (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) +           int32_t count, off_t off, uint32_t flags, struct iobref *iobref, dict_t *xdata)  { -        STACK_UNWIND_STRICT (writev, frame, -1, EROFS, NULL, NULL); +        STACK_UNWIND_STRICT (writev, frame, -1, EROFS, NULL, NULL, xdata);          return 0;  }  int32_t  ro_setxattr (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *dict, -             int32_t flags) +             int32_t flags, dict_t *xdata)  { -        STACK_UNWIND_STRICT (setxattr, frame, -1, EROFS); +        STACK_UNWIND_STRICT (setxattr, frame, -1, EROFS, xdata);          return 0;  }  int32_t  ro_removexattr (call_frame_t *frame, xlator_t *this, loc_t *loc, -                const char *name) +                const char *name, dict_t *xdata)  { -        STACK_UNWIND_STRICT (removexattr, frame, -1, EROFS); +        STACK_UNWIND_STRICT (removexattr, frame, -1, EROFS, xdata);          return 0;  } diff --git a/xlators/features/read-only/src/read-only-common.h b/xlators/features/read-only/src/read-only-common.h index 8c89e88ce..0a3f7dceb 100644 --- a/xlators/features/read-only/src/read-only-common.h +++ b/xlators/features/read-only/src/read-only-common.h @@ -27,97 +27,99 @@  int32_t  ro_xattrop (call_frame_t *frame, xlator_t *this, loc_t *loc, -            gf_xattrop_flags_t flags, dict_t *dict); +            gf_xattrop_flags_t flags, dict_t *dict, dict_t *xdata);  int32_t  ro_fxattrop (call_frame_t *frame, xlator_t *this, -             fd_t *fd, gf_xattrop_flags_t flags, dict_t *dict); +             fd_t *fd, gf_xattrop_flags_t flags, dict_t *dict, dict_t *xdata);  int32_t  ro_entrylk (call_frame_t *frame, xlator_t *this, const char *volume,              loc_t *loc, const char *basename, entrylk_cmd cmd, -            entrylk_type type); +            entrylk_type type, dict_t *xdata);  int32_t  ro_fentrylk (call_frame_t *frame, xlator_t *this, const char *volume,               fd_t *fd, const char *basename, entrylk_cmd cmd, entrylk_type -             type); +             type, dict_t *xdata);  int32_t  ro_inodelk (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);  int32_t  ro_finodelk (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);  int32_t  ro_lk (call_frame_t *frame, xlator_t *this, fd_t *fd, int cmd, -       struct gf_flock *flock); +       struct gf_flock *flock, dict_t *xdata);  int32_t  ro_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);  int32_t  ro_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);  int32_t -ro_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, off_t offset); +ro_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, off_t offset, dict_t *xdata);  int32_t -ro_ftruncate (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset); +ro_ftruncate (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset, dict_t *xdata);  int  ro_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);  int  ro_mkdir (call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode, -          dict_t *params); +          mode_t umask, dict_t *xdata);  int32_t -ro_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc); +ro_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc, int xflag, +           dict_t *xdata);  int -ro_rmdir (call_frame_t *frame, xlator_t *this, loc_t *loc, int flags); +ro_rmdir (call_frame_t *frame, xlator_t *this, loc_t *loc, int flags, +          dict_t *xdata);  int  ro_symlink (call_frame_t *frame, xlator_t *this, const char *linkpath, -            loc_t *loc, dict_t *params); +            loc_t *loc, mode_t umask, dict_t *xdata);  int32_t -ro_rename (call_frame_t *frame, xlator_t *this, loc_t *oldloc, loc_t *newloc); +ro_rename (call_frame_t *frame, xlator_t *this, loc_t *oldloc, loc_t *newloc, dict_t *xdata);  int32_t -ro_link (call_frame_t *frame, xlator_t *this, loc_t *oldloc, loc_t *newloc); +ro_link (call_frame_t *frame, xlator_t *this, loc_t *oldloc, loc_t *newloc, dict_t *xdata);  int32_t  ro_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  ro_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);  int32_t  ro_fsetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *dict, -              int32_t flags); +              int32_t flags, dict_t *xdata);  int32_t -ro_fsyncdir (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t flags); +ro_fsyncdir (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t flags, dict_t *xdata);  int32_t  ro_writev (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); +           int32_t count, off_t off, uint32_t flags, struct iobref *iobref, dict_t *xdata);  int32_t  ro_setxattr (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *dict, -             int32_t flags); +             int32_t flags, dict_t *xdata);  int32_t  ro_removexattr (call_frame_t *frame, xlator_t *this, loc_t *loc, -                const char *name); +                const char *name, dict_t *xdata); diff --git a/xlators/features/read-only/src/worm.c b/xlators/features/read-only/src/worm.c index 790bc3234..d6c1e1b7d 100644 --- a/xlators/features/read-only/src/worm.c +++ b/xlators/features/read-only/src/worm.c @@ -28,25 +28,25 @@  static int32_t  worm_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;  }  int32_t  worm_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)  {          if ((((flags & O_ACCMODE) == O_WRONLY) ||                ((flags & O_ACCMODE) == O_RDWR)) &&                !(flags & O_APPEND)) { -                STACK_UNWIND_STRICT (open, frame, -1, EROFS, NULL); +                STACK_UNWIND_STRICT (open, frame, -1, EROFS, NULL, NULL);                  return 0;          }          STACK_WIND (frame, worm_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;  } @@ -75,7 +75,6 @@ fini (xlator_t *this)  }  struct xlator_fops fops = { -                  .open        = worm_open,          .unlink      = ro_unlink, diff --git a/xlators/lib/src/libxlator.c b/xlators/lib/src/libxlator.c index 85b5f685e..fe11e35b5 100644 --- a/xlators/lib/src/libxlator.c +++ b/xlators/lib/src/libxlator.c @@ -77,7 +77,7 @@ marker_local_incr_errcount (xl_marker_local_t *local, int op_errno)  /* Aggregate all the <volid>.xtime attrs of the cluster and send the max*/  int32_t  cluster_markerxtime_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                        int op_ret, int op_errno, dict_t *dict) +                         int op_ret, int op_errno, dict_t *dict, dict_t *xdata)  { @@ -186,10 +186,11 @@ out:          if (need_unwind && local && local->xl_specf_unwind) {                  frame->local = local->xl_local;                  local->xl_specf_unwind (frame, op_ret, -                                         op_errno, dict); +                                        op_errno, dict, xdata);                  return 0;          } else if (need_unwind) { -                STACK_UNWIND_STRICT (getxattr, frame, op_ret, op_errno, dict); +                STACK_UNWIND_STRICT (getxattr, frame, op_ret, op_errno, +                                     dict, xdata);          }          return 0; @@ -198,7 +199,7 @@ out:  int32_t  cluster_markeruuid_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                        int op_ret, int op_errno, dict_t *dict) +                        int op_ret, int op_errno, dict_t *dict, dict_t *xdata)  {          int32_t             callcnt     = 0;          struct volume_mark  *volmark    = NULL; @@ -296,10 +297,11 @@ unlock:          if (need_unwind && local && local->xl_specf_unwind) {                  frame->local = local->xl_local;                  local->xl_specf_unwind (frame, op_ret, -                                        op_errno, dict); +                                        op_errno, dict, xdata);                  return 0;          } else if (need_unwind){ -                STACK_UNWIND_STRICT (getxattr, frame, op_ret, op_errno, dict); +                STACK_UNWIND_STRICT (getxattr, frame, op_ret, op_errno, +                                     dict, xdata);          }          return 0;  } @@ -341,12 +343,12 @@ cluster_getmarkerattr (call_frame_t *frame,xlator_t *this, loc_t *loc,                          STACK_WIND (frame, cluster_markeruuid_cbk,                                      *(sub_volumes + i),                                      (*(sub_volumes + i))->fops->getxattr, -                                    loc, name); +                                    loc, name, NULL);                  else if (MARKER_XTIME_TYPE == type)                          STACK_WIND (frame, cluster_markerxtime_cbk,                                      *(sub_volumes + i),                                      (*(sub_volumes + i))->fops->getxattr, -                                    loc, name); +                                    loc, name, NULL);                  else {                          gf_log (this->name, GF_LOG_WARNING,                                   "Unrecognized type (%d) of marker attr " @@ -354,7 +356,7 @@ cluster_getmarkerattr (call_frame_t *frame,xlator_t *this, loc_t *loc,                          STACK_WIND (frame, default_getxattr_cbk,                                      *(sub_volumes + i),                                      (*(sub_volumes + i))->fops->getxattr, -                                    loc, name); +                                    loc, name, NULL);                          break;                  }          } diff --git a/xlators/lib/src/libxlator.h b/xlators/lib/src/libxlator.h index 1bc20ac6b..560e388c7 100644 --- a/xlators/lib/src/libxlator.h +++ b/xlators/lib/src/libxlator.h @@ -44,7 +44,8 @@  typedef int32_t (*xlator_specf_unwind_t) (call_frame_t *frame, -                                         int op_ret, int op_errno, dict_t *dict); +                                          int op_ret, int op_errno, +                                          dict_t *dict, dict_t *xdata);  struct volume_mark { @@ -90,11 +91,11 @@ marker_has_volinfo (xl_marker_local_t *marker)  int32_t  cluster_markerxtime_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                        int op_ret, int op_errno, dict_t *dict); +                         int op_ret, int op_errno, dict_t *dict, dict_t *xdata);  int32_t  cluster_markeruuid_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                        int op_ret, int op_errno, dict_t *dict); +                        int op_ret, int op_errno, dict_t *dict, dict_t *xdata);  int32_t  cluster_getmarkerattr (call_frame_t *frame,xlator_t *this, loc_t *loc, diff --git a/xlators/mount/fuse/src/fuse-bridge.c b/xlators/mount/fuse/src/fuse-bridge.c index 77b89f185..a14de57e5 100644 --- a/xlators/mount/fuse/src/fuse-bridge.c +++ b/xlators/mount/fuse/src/fuse-bridge.c @@ -203,7 +203,7 @@ send_fuse_err (xlator_t *this, fuse_in_header_t *finh, int error)  static int  fuse_entry_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  int32_t op_ret, int32_t op_errno, -                inode_t *inode, struct iatt *buf) +                inode_t *inode, struct iatt *buf, dict_t *xdata)  {          fuse_state_t          *state        = NULL;          fuse_in_header_t      *finh         = NULL; @@ -283,9 +283,10 @@ static int  fuse_newentry_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)  { -        fuse_entry_cbk (frame, cookie, this, op_ret, op_errno, inode, buf); +        fuse_entry_cbk (frame, cookie, this, op_ret, op_errno, inode, buf, +                        xdata);          return 0;  } @@ -314,11 +315,12 @@ fuse_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  STACK_WIND (frame, fuse_lookup_cbk,                              prev->this, prev->this->fops->lookup, -                            &state->loc, state->dict); +                            &state->loc, state->xdata);                  return 0;          } -        fuse_entry_cbk (frame, cookie, this, op_ret, op_errno, inode, stat); +        fuse_entry_cbk (frame, cookie, this, op_ret, op_errno, inode, stat, +                        dict);          return 0;  } @@ -346,7 +348,7 @@ fuse_lookup_resume (fuse_state_t *state)          }          FUSE_FOP (state, fuse_lookup_cbk, GF_FOP_LOOKUP, -                  lookup, &state->loc, state->dict); +                  lookup, &state->loc, state->xdata);  }  static void @@ -393,7 +395,7 @@ fuse_forget (xlator_t *this, fuse_in_header_t *finh, void *msg)  static int  fuse_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)  {          fuse_state_t     *state;          fuse_in_header_t *finh; @@ -445,7 +447,7 @@ fuse_truncate_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  static int  fuse_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)  {          fuse_state_t     *state;          fuse_in_header_t *finh; @@ -503,7 +505,7 @@ fuse_root_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                        inode_t *inode, struct iatt *stat, dict_t *dict,                        struct iatt *postparent)  { -        fuse_attr_cbk (frame, cookie, this, op_ret, op_errno, stat); +        fuse_attr_cbk (frame, cookie, this, op_ret, op_errno, stat, dict);          return 0;  } @@ -532,7 +534,7 @@ fuse_getattr_resume (fuse_state_t *state)                          state->loc.path);                  FUSE_FOP (state, fuse_attr_cbk, GF_FOP_STAT, -                          stat, &state->loc); +                          stat, &state->loc, state->xdata);          } else {                  gf_log ("glusterfs-fuse", GF_LOG_TRACE, @@ -541,7 +543,7 @@ fuse_getattr_resume (fuse_state_t *state)                          state->loc.path, state->fd);                  FUSE_FOP (state, fuse_attr_cbk, GF_FOP_FSTAT, -                          fstat, state->fd); +                          fstat, state->fd, state->xdata);          }  } @@ -569,7 +571,7 @@ fuse_getattr (xlator_t *this, fuse_in_header_t *finh, void *msg)                  fuse_gfid_set (state);                  FUSE_FOP (state, fuse_root_lookup_cbk, GF_FOP_LOOKUP, -                          lookup, &state->loc, state->dict); +                          lookup, &state->loc, state->xdata);                  return;          } @@ -627,7 +629,7 @@ out:  static int  fuse_fd_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)  {          fuse_state_t         *state  = NULL;          fuse_in_header_t     *finh   = NULL; @@ -706,10 +708,10 @@ fuse_do_truncate (fuse_state_t *state, size_t size)  {          if (state->fd) {                  FUSE_FOP (state, fuse_truncate_cbk, GF_FOP_FTRUNCATE, -                          ftruncate, state->fd, size); +                          ftruncate, state->fd, size, state->xdata);          } else {                  FUSE_FOP (state, fuse_truncate_cbk, GF_FOP_TRUNCATE, -                          truncate, &state->loc, size); +                          truncate, &state->loc, size, state->xdata);          }          return; @@ -719,7 +721,7 @@ fuse_do_truncate (fuse_state_t *state, size_t size)  static int  fuse_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 *statpre, struct iatt *statpost, dict_t *xdata)  {          fuse_state_t     *state;          fuse_in_header_t *finh; @@ -846,11 +848,13 @@ fuse_setattr_resume (fuse_state_t *state)                          FUSE_FOP (state, fuse_setattr_cbk, GF_FOP_FSETATTR,                                    fsetattr, state->fd, &state->attr, -                                  fattr_to_gf_set_attr (state->valid)); +                                  fattr_to_gf_set_attr (state->valid), +                                  state->xdata);                  } else {                          FUSE_FOP (state, fuse_setattr_cbk, GF_FOP_SETATTR,                                    setattr, &state->loc, &state->attr, -                                  fattr_to_gf_set_attr (state->valid)); +                                  fattr_to_gf_set_attr (state->valid), +                                  state->xdata);                  }          } else {                  fuse_do_truncate (state, state->size); @@ -924,7 +928,7 @@ fuse_setattr (xlator_t *this, fuse_in_header_t *finh, void *msg)  static int  fuse_err_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)  {          fuse_state_t *state = frame->root->state;          fuse_in_header_t *finh = state->finh; @@ -957,15 +961,15 @@ fuse_err_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  static int  fuse_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)  { -        return fuse_err_cbk (frame, cookie, this, op_ret, op_errno); +        return fuse_err_cbk (frame, cookie, this, op_ret, op_errno, xdata);  }  static int  fuse_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)  {          if (op_ret == -1 && op_errno == ENOTSUP)                  GF_LOG_OCCASIONALLY (gf_fuse_xattr_enotsup_log, @@ -973,14 +977,14 @@ fuse_setxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                                       "extended attribute not supported "                                       "by the backend storage"); -        return fuse_err_cbk (frame, cookie, this, op_ret, op_errno); +        return fuse_err_cbk (frame, cookie, this, op_ret, op_errno, xdata);  }  static int  fuse_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)  {          fuse_state_t     *state = NULL;          fuse_in_header_t *finh = NULL; @@ -1034,7 +1038,7 @@ fuse_access_resume (fuse_state_t *state)                  state->finh->nodeid, state->mask);          FUSE_FOP (state, fuse_err_cbk, GF_FOP_ACCESS, access, -                  &state->loc, state->mask); +                  &state->loc, state->mask, state->xdata);  } @@ -1059,7 +1063,7 @@ fuse_access (xlator_t *this, fuse_in_header_t *finh, void *msg)  static int  fuse_readlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                     int32_t op_ret, int32_t op_errno, const char *linkname, -                   struct iatt *buf) +                   struct iatt *buf, dict_t *xdata)  {          fuse_state_t     *state = NULL;          fuse_in_header_t *finh = NULL; @@ -1107,7 +1111,7 @@ fuse_readlink_resume (fuse_state_t *state)                  state->loc.path, uuid_utoa (state->loc.inode->gfid));          FUSE_FOP (state, fuse_readlink_cbk, GF_FOP_READLINK, -                  readlink, &state->loc, 4096); +                  readlink, &state->loc, 4096, state->xdata);  } @@ -1157,7 +1161,8 @@ fuse_mknod_resume (fuse_state_t *state)                  state->loc.path);          FUSE_FOP (state, fuse_newentry_cbk, GF_FOP_MKNOD, -                  mknod, &state->loc, state->mode, state->rdev, state->dict); +                  mknod, &state->loc, state->mode, state->rdev, state->umask, +                  state->xdata);  } @@ -1191,28 +1196,29 @@ fuse_mknod (xlator_t *this, fuse_in_header_t *finh, void *msg)          if (priv->proto_minor >= 12)                  state->mode &= ~fmi->umask;          if (priv->proto_minor >= 12 && priv->acl) { -                state->dict = dict_new (); -                if (!state->dict) { +                state->xdata = dict_new (); +                if (!state->xdata) {                          gf_log ("glusterfs-fuse", GF_LOG_WARNING,                                  "MKNOD Failed to allocate a param dictionary");                          send_fuse_err (this, finh, ENOMEM);                          free_fuse_state (state);                          return;                  } -                ret = dict_set_int16 (state->dict, "umask", fmi->umask); +                state->umask = fmi->umask; +                ret = dict_set_int16 (state->xdata, "umask", fmi->umask);                  if (ret < 0) {                          gf_log ("glusterfs-fuse", GF_LOG_WARNING,                                  "MKNOD Failed adding umask to request"); -                        dict_destroy (state->dict); +                        dict_destroy (state->xdata);                          send_fuse_err (this, finh, ENOMEM);                          free_fuse_state (state);                          return;                  } -                ret = dict_set_int16 (state->dict, "mode", fmi->mode); +                ret = dict_set_int16 (state->xdata, "mode", fmi->mode);                  if (ret < 0) {                          gf_log ("glusterfs-fuse", GF_LOG_WARNING,                                  "MKNOD Failed adding mode to request"); -                        dict_destroy (state->dict); +                        dict_destroy (state->xdata);                          send_fuse_err (this, finh, ENOMEM);                          free_fuse_state (state);                          return; @@ -1257,7 +1263,7 @@ fuse_mkdir_resume (fuse_state_t *state)                  state->loc.path);          FUSE_FOP (state, fuse_newentry_cbk, GF_FOP_MKDIR, -                  mkdir, &state->loc, state->mode, state->dict); +                  mkdir, &state->loc, state->mode, state->umask, state->xdata);  } @@ -1284,28 +1290,29 @@ fuse_mkdir (xlator_t *this, fuse_in_header_t *finh, void *msg)          if (priv->proto_minor >= 12)                  state->mode &= ~fmi->umask;          if (priv->proto_minor >= 12 && priv->acl) { -                state->dict = dict_new (); -                if (!state->dict) { +                state->xdata = dict_new (); +                if (!state->xdata) {                          gf_log ("glusterfs-fuse", GF_LOG_WARNING,                                  "MKDIR Failed to allocate a param dictionary");                          send_fuse_err (this, finh, ENOMEM);                          free_fuse_state (state);                          return;                  } -                ret = dict_set_int16 (state->dict, "umask", fmi->umask); +                state->umask = fmi->umask; +                ret = dict_set_int16 (state->xdata, "umask", fmi->umask);                  if (ret < 0) {                          gf_log ("glusterfs-fuse", GF_LOG_WARNING,                                  "MKDIR Failed adding umask to request"); -                        dict_destroy (state->dict); +                        dict_destroy (state->xdata);                          send_fuse_err (this, finh, ENOMEM);                          free_fuse_state (state);                          return;                  } -                ret = dict_set_int16 (state->dict, "mode", fmi->mode); +                ret = dict_set_int16 (state->xdata, "mode", fmi->mode);                  if (ret < 0) {                          gf_log ("glusterfs-fuse", GF_LOG_WARNING,                                  "MKDIR Failed adding mode to request"); -                        dict_destroy (state->dict); +                        dict_destroy (state->xdata);                          send_fuse_err (this, finh, ENOMEM);                          free_fuse_state (state);                          return; @@ -1337,7 +1344,7 @@ fuse_unlink_resume (fuse_state_t *state)                  state->loc.path);          FUSE_FOP (state, fuse_unlink_cbk, GF_FOP_UNLINK, -                  unlink, &state->loc); +                  unlink, &state->loc, 0, state->xdata);  } @@ -1374,7 +1381,7 @@ fuse_rmdir_resume (fuse_state_t *state)                  state->loc.path);          FUSE_FOP (state, fuse_unlink_cbk, GF_FOP_RMDIR, -                  rmdir, &state->loc, 0); +                  rmdir, &state->loc, 0, state->xdata);  } @@ -1425,7 +1432,7 @@ fuse_symlink_resume (fuse_state_t *state)                  state->loc.path, state->name);          FUSE_FOP (state, fuse_newentry_cbk, GF_FOP_SYMLINK, -                  symlink, state->name, &state->loc, state->dict); +                  symlink, state->name, &state->loc, state->umask, state->xdata);  } @@ -1454,7 +1461,8 @@ int  fuse_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)  {          fuse_state_t     *state = NULL;          fuse_in_header_t *finh = NULL; @@ -1538,7 +1546,7 @@ fuse_rename_resume (fuse_state_t *state)                  state->loc2.path, loc2_uuid);          FUSE_FOP (state, fuse_rename_cbk, GF_FOP_RENAME, -                  rename, &state->loc, &state->loc2); +                  rename, &state->loc, &state->loc2, state->xdata);  } @@ -1589,7 +1597,7 @@ fuse_link_resume (fuse_state_t *state)                  state->loc.path);          FUSE_FOP (state, fuse_newentry_cbk, GF_FOP_LINK, -                  link, &state->loc2, &state->loc); +                  link, &state->loc2, &state->loc, state->xdata);  } @@ -1616,7 +1624,7 @@ static int  fuse_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 *preparent, struct iatt *postparent, dict_t *xdata)  {          fuse_state_t           *state        = NULL;          fuse_in_header_t       *finh         = NULL; @@ -1752,7 +1760,7 @@ fuse_create_resume (fuse_state_t *state)          FUSE_FOP (state, fuse_create_cbk, GF_FOP_CREATE,                    create, &state->loc, state->flags, state->mode, -                  fd, state->dict); +                  state->umask, fd, state->xdata);  } @@ -1791,28 +1799,29 @@ fuse_create (xlator_t *this, fuse_in_header_t *finh, void *msg)          if (priv->proto_minor >= 12)                  state->mode &= ~fci->umask;          if (priv->proto_minor >= 12 && priv->acl) { -                state->dict = dict_new (); -                if (!state->dict) { +                state->xdata = dict_new (); +                if (!state->xdata) {                          gf_log ("glusterfs-fuse", GF_LOG_WARNING,                                  "CREATE Failed to allocate a param dictionary");                          send_fuse_err (this, finh, ENOMEM);                          free_fuse_state (state);                          return;                  } -                ret = dict_set_int16 (state->dict, "umask", fci->umask); +                state->umask = fci->umask; +                ret = dict_set_int16 (state->xdata, "umask", fci->umask);                  if (ret < 0) {                          gf_log ("glusterfs-fuse", GF_LOG_WARNING,                                  "CREATE Failed adding umask to request"); -                        dict_destroy (state->dict); +                        dict_destroy (state->xdata);                          send_fuse_err (this, finh, ENOMEM);                          free_fuse_state (state);                          return;                  } -                ret = dict_set_int16 (state->dict, "mode", fci->mode); +                ret = dict_set_int16 (state->xdata, "mode", fci->mode);                  if (ret < 0) {                          gf_log ("glusterfs-fuse", GF_LOG_WARNING,                                  "CREATE Failed adding mode to request"); -                        dict_destroy (state->dict); +                        dict_destroy (state->xdata);                          send_fuse_err (this, finh, ENOMEM);                          free_fuse_state (state);                          return; @@ -1862,7 +1871,7 @@ fuse_open_resume (fuse_state_t *state)                  state->loc.path);          FUSE_FOP (state, fuse_fd_cbk, GF_FOP_OPEN, -                  open, &state->loc, state->flags, fd, 0); +                  open, &state->loc, state->flags, fd, state->xdata);  } @@ -1888,7 +1897,7 @@ static int  fuse_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)  {          fuse_state_t *state = NULL;          fuse_in_header_t *finh = NULL; @@ -1935,8 +1944,8 @@ fuse_readv_resume (fuse_state_t *state)                  "%"PRIu64": READ (%p, size=%zu, offset=%"PRIu64")",                  state->finh->unique, state->fd, state->size, state->off); -        FUSE_FOP (state, fuse_readv_cbk, GF_FOP_READ, -                  readv, state->fd, state->size, state->off, state->io_flags); +        FUSE_FOP (state, fuse_readv_cbk, GF_FOP_READ, readv, state->fd, +                  state->size, state->off, state->io_flags, state->xdata);  }  static void @@ -1974,7 +1983,7 @@ fuse_readv (xlator_t *this, fuse_in_header_t *finh, void *msg)  static int  fuse_writev_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                   int32_t op_ret, int32_t op_errno, -                 struct iatt *stbuf, struct iatt *postbuf) +                 struct iatt *stbuf, struct iatt *postbuf, dict_t *xdata)  {          fuse_state_t *state = NULL;          fuse_in_header_t *finh = NULL; @@ -2031,7 +2040,8 @@ fuse_write_resume (fuse_state_t *state)                  state->finh->unique, state->fd, state->size, state->off);          FUSE_FOP (state, fuse_writev_cbk, GF_FOP_WRITE, writev, state->fd, -                  &state->vector, 1, state->off, state->io_flags, iobref); +                  &state->vector, 1, state->off, state->io_flags, iobref, +                  state->xdata);          iobref_unref (iobref);  } @@ -2086,7 +2096,7 @@ void  fuse_flush_resume (fuse_state_t *state)  {          FUSE_FOP (state, fuse_err_cbk, GF_FOP_FLUSH, -                  flush, state->fd); +                  flush, state->fd, state->xdata);  } @@ -2170,7 +2180,7 @@ fuse_fsync_resume (fuse_state_t *state)          /* fsync_flags: 1 means "datasync" (no defines for this) */          FUSE_FOP (state, fuse_fsync_cbk, GF_FOP_FSYNC, -                  fsync, state->fd, state->flags & 1); +                  fsync, state->fd, (state->flags & 1), state->xdata);  } @@ -2220,7 +2230,7 @@ fuse_opendir_resume (fuse_state_t *state)                  state->loc.path);          FUSE_FOP (state, fuse_fd_cbk, GF_FOP_OPENDIR, -                  opendir, &state->loc, fd); +                  opendir, &state->loc, fd, state->xdata);  } @@ -2277,7 +2287,8 @@ d_type_from_stat (struct iatt *buf)  static int  fuse_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)  {          fuse_state_t *state = NULL;          fuse_in_header_t *finh = NULL; @@ -2349,7 +2360,7 @@ fuse_readdir_resume (fuse_state_t *state)                  state->finh->unique, state->fd, state->size, state->off);          FUSE_FOP (state, fuse_readdir_cbk, GF_FOP_READDIR, -                  readdir, state->fd, state->size, state->off); +                  readdir, state->fd, state->size, state->off, state->xdata);  } @@ -2423,7 +2434,7 @@ void  fuse_fsyncdir_resume (fuse_state_t *state)  {          FUSE_FOP (state, fuse_err_cbk, GF_FOP_FSYNCDIR, -                  fsyncdir, state->fd, state->flags & 1); +                  fsyncdir, state->fd, (state->flags & 1), state->xdata);  } @@ -2451,7 +2462,8 @@ fuse_fsyncdir (xlator_t *this, fuse_in_header_t *finh, void *msg)  static int  fuse_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)  {          fuse_state_t *state = NULL;          fuse_in_header_t *finh = NULL; @@ -2519,7 +2531,7 @@ fuse_statfs_resume (fuse_state_t *state)                  "%"PRIu64": STATFS", state->finh->unique);          FUSE_FOP (state, fuse_statfs_cbk, GF_FOP_STATFS, -                  statfs, &state->loc); +                  statfs, &state->loc, state->xdata);  } @@ -2560,14 +2572,16 @@ fuse_setxattr_resume (fuse_state_t *state)                          state->fd, state->finh->nodeid, state->name);                  FUSE_FOP (state, fuse_setxattr_cbk, GF_FOP_FSETXATTR, -                          fsetxattr, state->fd, state->dict, state->flags); +                          fsetxattr, state->fd, state->xattr, state->flags, +                          state->xdata);          } else {                  gf_log ("glusterfs-fuse", GF_LOG_TRACE,                          "%"PRIu64": SETXATTR %s/%"PRIu64" (%s)", state->finh->unique,                          state->loc.path, state->finh->nodeid, state->name);                  FUSE_FOP (state, fuse_setxattr_cbk, GF_FOP_SETXATTR, -                          setxattr, &state->loc, state->dict, state->flags); +                          setxattr, &state->loc, state->xattr, state->flags, +                          state->xdata);          }  } @@ -2645,8 +2659,8 @@ fuse_setxattr (xlator_t *this, fuse_in_header_t *finh, void *msg)  	fuse_resolve_inode_init (state, &state->resolve, finh->nodeid); -        state->dict = get_new_dict (); -        if (!state->dict) { +        state->xattr = get_new_dict (); +        if (!state->xattr) {                  gf_log ("glusterfs-fuse", GF_LOG_ERROR,                          "%"PRIu64": SETXATTR dict allocation failed",                          finh->unique); @@ -2669,9 +2683,9 @@ fuse_setxattr (xlator_t *this, fuse_in_header_t *finh, void *msg)                  gf_log (THIS->name, GF_LOG_ERROR, "value size zero");                  dict_value = NULL;          } -        dict_set (state->dict, newkey, +        dict_set (state->xattr, newkey,                    data_from_dynptr ((void *)dict_value, fsi->size)); -        dict_ref (state->dict); +        dict_ref (state->xattr);          state->flags = fsi->flags;          state->name = newkey; @@ -2708,7 +2722,7 @@ send_fuse_xattr (xlator_t *this, fuse_in_header_t *finh, const char *value,  static int  fuse_xattr_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)  {          int             need_to_free_dict = 0;          char           *value = ""; @@ -2826,14 +2840,14 @@ fuse_getxattr_resume (fuse_state_t *state)                          state->fd, state->finh->nodeid, state->name);                  FUSE_FOP (state, fuse_xattr_cbk, GF_FOP_FGETXATTR, -                          fgetxattr, state->fd, state->name); +                          fgetxattr, state->fd, state->name, state->xdata);          } else {                  gf_log ("glusterfs-fuse", GF_LOG_TRACE,                          "%"PRIu64": GETXATTR %s/%"PRIu64" (%s)", state->finh->unique,                          state->loc.path, state->finh->nodeid, state->name);                  FUSE_FOP (state, fuse_xattr_cbk, GF_FOP_GETXATTR, -                          getxattr, &state->loc, state->name); +                          getxattr, &state->loc, state->name, state->xdata);          }  } @@ -2932,14 +2946,14 @@ fuse_listxattr_resume (fuse_state_t *state)                          state->fd, state->finh->nodeid);                  FUSE_FOP (state, fuse_xattr_cbk, GF_FOP_FGETXATTR, -                          fgetxattr, state->fd, NULL); +                          fgetxattr, state->fd, NULL, state->xdata);          } else {                  gf_log ("glusterfs-fuse", GF_LOG_TRACE,                          "%"PRIu64": LISTXATTR %s/%"PRIu64, state->finh->unique,                          state->loc.path, state->finh->nodeid);                  FUSE_FOP (state, fuse_xattr_cbk, GF_FOP_GETXATTR, -                          getxattr, &state->loc, NULL); +                          getxattr, &state->loc, NULL, state->xdata);          }  } @@ -2987,14 +3001,14 @@ fuse_removexattr_resume (fuse_state_t *state)                          state->fd, state->finh->nodeid, state->name);                  FUSE_FOP (state, fuse_err_cbk, GF_FOP_FREMOVEXATTR, -                          fremovexattr, state->fd, state->name); +                          fremovexattr, state->fd, state->name, state->xdata);          } else {                  gf_log ("glusterfs-fuse", GF_LOG_TRACE,                          "%"PRIu64": REMOVEXATTR %s/%"PRIu64" (%s)", state->finh->unique,                          state->loc.path, state->finh->nodeid, state->name);                  FUSE_FOP (state, fuse_err_cbk, GF_FOP_REMOVEXATTR, -                          removexattr, &state->loc, state->name); +                          removexattr, &state->loc, state->name, state->xdata);          }  } @@ -3039,7 +3053,8 @@ static int gf_fuse_lk_enosys_log;  static int  fuse_getlk_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_ret, int32_t op_errno, struct gf_flock *lock, +                dict_t *xdata)  {          fuse_state_t *state = NULL; @@ -3091,7 +3106,7 @@ fuse_getlk_resume (fuse_state_t *state)                  "%"PRIu64": GETLK %p", state->finh->unique, state->fd);          FUSE_FOP (state, fuse_getlk_cbk, GF_FOP_LK, -                  lk, state->fd, F_GETLK, &state->lk_lock); +                  lk, state->fd, F_GETLK, &state->lk_lock, state->xdata);  } @@ -3122,7 +3137,8 @@ fuse_getlk (xlator_t *this, fuse_in_header_t *finh, void *msg)  static int  fuse_setlk_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_ret, int32_t op_errno, struct gf_flock *lock, +                dict_t *xdata)  {          uint32_t      op    = 0;          fuse_state_t *state = NULL; @@ -3181,7 +3197,7 @@ fuse_setlk_resume (fuse_state_t *state)          FUSE_FOP (state, fuse_setlk_cbk, GF_FOP_LK, lk, state->fd,                    state->finh->opcode == FUSE_SETLK ? F_SETLK : F_SETLKW, -                  &state->lk_lock); +                  &state->lk_lock, state->xdata);  } diff --git a/xlators/mount/fuse/src/fuse-bridge.h b/xlators/mount/fuse/src/fuse-bridge.h index 4b4307a30..afda8f775 100644 --- a/xlators/mount/fuse/src/fuse-bridge.h +++ b/xlators/mount/fuse/src/fuse-bridge.h @@ -294,7 +294,8 @@ typedef struct {          size_t            size;          unsigned long     nlookup;          fd_t             *fd; -        dict_t           *dict; +        dict_t           *xattr; +        dict_t           *xdata;          char             *name;          char              is_revalidate;          gf_boolean_t      truncate_needed; @@ -315,6 +316,7 @@ typedef struct {          int            mask;          dev_t          rdev;          mode_t         mode; +        mode_t         umask;          struct iatt    attr;          struct gf_flock   lk_lock;          struct iovec   vector; diff --git a/xlators/mount/fuse/src/fuse-helpers.c b/xlators/mount/fuse/src/fuse-helpers.c index 91a6cba53..482785d79 100644 --- a/xlators/mount/fuse/src/fuse-helpers.c +++ b/xlators/mount/fuse/src/fuse-helpers.c @@ -70,10 +70,13 @@ free_fuse_state (fuse_state_t *state)          loc_wipe (&state->loc2); -        if (state->dict) { -                dict_unref (state->dict); -                state->dict = (void *)0xaaaaeeee; +        if (state->xdata) { +                dict_unref (state->xdata); +                state->xdata = (void *)0xaaaaeeee;          } +        if (state->xattr) +                dict_unref (state->xattr); +          if (state->name) {                  GF_FREE (state->name);                  state->name = NULL; diff --git a/xlators/mount/fuse/src/fuse-resolve.c b/xlators/mount/fuse/src/fuse-resolve.c index 5a09ea0d3..94a825e3d 100644 --- a/xlators/mount/fuse/src/fuse-resolve.c +++ b/xlators/mount/fuse/src/fuse-resolve.c @@ -362,15 +362,15 @@ fuse_gfid_set (fuse_state_t *state)          if (uuid_is_null (state->gfid))                  goto out; -        if (!state->dict) -                state->dict = dict_new (); +        if (!state->xdata) +                state->xdata = dict_new (); -        if (!state->dict) { +        if (!state->xdata) {                  ret = -1;                  goto out;          } -        ret = dict_set_static_bin (state->dict, "gfid-req", +        ret = dict_set_static_bin (state->xdata, "gfid-req",                                     state->gfid, sizeof (state->gfid));  out:          return ret; diff --git a/xlators/nfs/server/src/nfs-fops.c b/xlators/nfs/server/src/nfs-fops.c index 1dc07f39a..6e2b33484 100644 --- a/xlators/nfs/server/src/nfs-fops.c +++ b/xlators/nfs/server/src/nfs-fops.c @@ -353,14 +353,14 @@ err:  int32_t  nfs_fop_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)  {          struct nfs_fop_local    *nfl = NULL;          fop_access_cbk_t        progcbk = NULL;          nfl_to_prog_data (nfl, progcbk, frame);          if (progcbk) -                progcbk (frame, cookie, this, op_ret, op_errno); +                progcbk (frame, cookie, this, op_ret, op_errno, xdata);          nfs_stack_destroy (nfl, frame);          return 0; @@ -385,7 +385,7 @@ nfs_fop_access (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *loc,          accessbits = nfs3_request_to_accessbits (accesstest);          STACK_WIND_COOKIE (frame, nfs_fop_access_cbk, xl, xl, xl->fops->access, -                           loc, accessbits); +                           loc, accessbits, NULL);          ret = 0;  err:          if (ret < 0) { @@ -398,7 +398,8 @@ err:  int32_t  nfs_fop_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)  {          struct nfs_fop_local    *nfl = NULL;          fop_stat_cbk_t          progcbk = NULL; @@ -406,7 +407,7 @@ nfs_fop_stat_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          nfl_to_prog_data (nfl, progcbk, frame);          nfs_fop_restore_root_ino (nfl, op_ret, buf, NULL, NULL, NULL);          if (progcbk) -                progcbk (frame, cookie, this, op_ret, op_errno, buf); +                progcbk (frame, cookie, this, op_ret, op_errno, buf, xdata);          nfs_stack_destroy (nfl, frame);          return 0; @@ -430,7 +431,7 @@ nfs_fop_stat (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *loc,          nfs_fop_save_root_ino (nfl, loc);          STACK_WIND_COOKIE (frame, nfs_fop_stat_cbk, xl, xl, xl->fops->stat, -                           loc); +                           loc, NULL);          ret = 0;  err:          if (ret < 0) { @@ -444,7 +445,8 @@ err:  int32_t  nfs_fop_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)  {          struct nfs_fop_local    *nfl = NULL;          fop_fstat_cbk_t         progcbk = NULL; @@ -452,7 +454,7 @@ nfs_fop_fstat_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          nfl_to_prog_data (nfl, progcbk, frame);          nfs_fop_restore_root_ino (nfl, op_ret, buf, NULL, NULL, NULL);          if (progcbk) -                progcbk (frame, cookie, this, op_ret, op_errno, buf); +                progcbk (frame, cookie, this, op_ret, op_errno, buf, xdata);          nfs_stack_destroy (nfl, frame);          return 0; @@ -476,7 +478,7 @@ nfs_fop_fstat (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, fd_t *fd,          nfs_fop_save_root_fd_ino (nfl, fd);          STACK_WIND_COOKIE (frame, nfs_fop_fstat_cbk, xl, xl, xl->fops->fstat, -                           fd); +                           fd, NULL);          ret = 0;  err: @@ -491,14 +493,14 @@ err:  int32_t  nfs_fop_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)  {          struct nfs_fop_local    *nfl = NULL;          fop_opendir_cbk_t       progcbk = NULL;          nfl_to_prog_data (nfl, progcbk, frame);          if (progcbk) -                progcbk (frame, cookie, this, op_ret, op_errno, fd); +                progcbk (frame, cookie, this, op_ret, op_errno, fd, xdata);          nfs_stack_destroy (nfl, frame);          return 0;  } @@ -520,7 +522,7 @@ nfs_fop_opendir (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *pathloc,          nfs_fop_handle_local_init (frame, nfsx, nfl, cbk, local, ret, err);          STACK_WIND_COOKIE (frame, nfs_fop_opendir_cbk, xl, xl, -                           xl->fops->opendir, pathloc, dirfd); +                           xl->fops->opendir, pathloc, dirfd, NULL);          ret = 0;  err: @@ -534,14 +536,14 @@ err:  int  nfs_fop_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)  {          struct nfs_fop_local    *nfl = NULL;          fop_flush_cbk_t         progcbk = NULL;          nfl_to_prog_data (nfl, progcbk, frame);          if (progcbk) -                progcbk (frame, cookie, this, op_ret, op_errno); +                progcbk (frame, cookie, this, op_ret, op_errno, xdata);          nfs_stack_destroy (nfl, frame);          return 0; @@ -563,7 +565,7 @@ nfs_fop_flush (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, fd_t *fd,          nfs_fop_handle_local_init (frame, nfsx, nfl, cbk, local, ret, err);          STACK_WIND_COOKIE (frame, nfs_fop_flush_cbk, xl, xl, xl->fops->flush, -                           fd); +                           fd, NULL);          ret = 0;  err:          if (ret < 0) { @@ -577,14 +579,15 @@ err:  int32_t  nfs_fop_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)  {          struct nfs_fop_local    *nfl = NULL;          fop_readdirp_cbk_t      progcbk = NULL;          nfl_to_prog_data (nfl, progcbk, frame);          if (progcbk) -                progcbk (frame, cookie, this, op_ret, op_errno, entries); +                progcbk (frame, cookie, this, op_ret, op_errno, entries, xdata);          nfs_stack_destroy (nfl, frame); @@ -624,7 +627,8 @@ err:  int32_t  nfs_fop_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)  {          struct nfs_fop_local    *nfl = NULL; @@ -632,7 +636,7 @@ nfs_fop_statfs_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          nfl_to_prog_data (nfl, progcbk, frame);          if (progcbk) -                progcbk (frame, cookie, this, op_ret, op_errno, buf); +                progcbk (frame, cookie, this, op_ret, op_errno, buf, xdata);          nfs_stack_destroy (nfl, frame);          return 0; @@ -655,7 +659,7 @@ nfs_fop_statfs (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *pathloc,          nfs_fop_handle_local_init (frame, nfsx, nfl, cbk, local, ret, err);          STACK_WIND_COOKIE (frame, nfs_fop_statfs_cbk, xl, xl, -                           xl->fops->statfs, pathloc); +                           xl->fops->statfs, pathloc, NULL);          ret = 0;  err:          if (ret < 0) { @@ -671,7 +675,7 @@ int32_t  nfs_fop_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)  {          struct nfs_fop_local    *nfl = NULL;          fop_create_cbk_t        progcbk = NULL; @@ -681,7 +685,7 @@ nfs_fop_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                                    postparent);          if (progcbk)                  progcbk (frame, cookie, this, op_ret, op_errno, fd, inode, buf, -                         preparent, postparent); +                         preparent, postparent, NULL);          nfs_stack_destroy (nfl, frame);          return 0; @@ -707,7 +711,7 @@ nfs_fop_create (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *pathloc,          nfs_fop_gfid_setup (nfl, pathloc->inode, ret, err);          STACK_WIND_COOKIE (frame, nfs_fop_create_cbk, xl, xl, xl->fops->create, -                           pathloc, flags, mode, fd, nfl->dictgfid); +                           pathloc, flags, mode, 0, fd, nfl->dictgfid);          ret = 0;  err: @@ -723,7 +727,7 @@ err:  int32_t  nfs_fop_setattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                       int32_t op_ret, int32_t op_errno, struct iatt *pre, -                     struct iatt *post) +                     struct iatt *post, dict_t *xdata)  {          struct nfs_fop_local    *nfl = NULL;          fop_setattr_cbk_t       progcbk = NULL; @@ -731,7 +735,8 @@ nfs_fop_setattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          nfl_to_prog_data (nfl, progcbk, frame);          nfs_fop_restore_root_ino (nfl, op_ret, pre, post, NULL, NULL);          if (progcbk) -                progcbk (frame, cookie, this, op_ret, op_errno, pre, post); +                progcbk (frame, cookie, this, op_ret, op_errno, pre, post, +                         xdata);          nfs_stack_destroy (nfl, frame);          return 0;  } @@ -756,7 +761,7 @@ nfs_fop_setattr (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *pathloc,          nfs_fop_save_root_ino (nfl, pathloc);          STACK_WIND_COOKIE (frame, nfs_fop_setattr_cbk, xl, xl, -                           xl->fops->setattr, pathloc, buf, valid); +                           xl->fops->setattr, pathloc, buf, valid, NULL);          ret = 0;  err:          if (ret < 0) { @@ -772,7 +777,7 @@ int32_t  nfs_fop_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)  {          struct nfs_fop_local    *nfl = NULL;          fop_mkdir_cbk_t         progcbk = NULL; @@ -781,7 +786,7 @@ nfs_fop_mkdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          nfs_fop_restore_root_ino (nfl, op_ret, buf, NULL,preparent, postparent);          if (progcbk)                  progcbk (frame, cookie, this, op_ret, op_errno, inode, buf, -                         preparent, postparent); +                         preparent, postparent, xdata);          nfs_stack_destroy (nfl, frame);          return 0;  } @@ -805,7 +810,7 @@ nfs_fop_mkdir (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *pathloc,          nfs_fop_gfid_setup (nfl, pathloc->inode, ret, err);          STACK_WIND_COOKIE  (frame, nfs_fop_mkdir_cbk, xl, xl, xl->fops->mkdir, -                            pathloc, mode, nfl->dictgfid); +                            pathloc, mode, 0, nfl->dictgfid);          ret = 0;  err:          if (ret < 0) { @@ -821,7 +826,7 @@ int32_t  nfs_fop_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)  {          struct nfs_fop_local    *nfl = NULL;          fop_symlink_cbk_t       progcbk = NULL; @@ -830,7 +835,7 @@ nfs_fop_symlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          nfs_fop_restore_root_ino (nfl, op_ret,buf, NULL, preparent, postparent);          if (progcbk)                  progcbk (frame, cookie, this, op_ret, op_errno, inode, buf, -                         preparent, postparent); +                         preparent, postparent, xdata);          nfs_stack_destroy (nfl, frame);          return 0;  } @@ -853,7 +858,8 @@ nfs_fop_symlink (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, char *target,          nfs_fop_gfid_setup (nfl, pathloc->inode, ret, err);          STACK_WIND_COOKIE  (frame, nfs_fop_symlink_cbk, xl, xl, -                            xl->fops->symlink, target, pathloc, nfl->dictgfid); +                            xl->fops->symlink, target, pathloc, +                            0, nfl->dictgfid);          ret = 0;  err:          if (ret < 0) { @@ -868,7 +874,7 @@ err:  int32_t  nfs_fop_readlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                        int32_t op_ret, int32_t op_errno, const char *path, -                      struct iatt *buf) +                      struct iatt *buf, dict_t *xdata)  {          struct nfs_fop_local    *nfl = NULL;          fop_readlink_cbk_t      progcbk = NULL; @@ -876,7 +882,8 @@ nfs_fop_readlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          nfl_to_prog_data (nfl, progcbk, frame);          nfs_fop_restore_root_ino (nfl, op_ret, buf, NULL, NULL, NULL);          if (progcbk) -                progcbk (frame, cookie, this, op_ret, op_errno, path, buf); +                progcbk (frame, cookie, this, op_ret, op_errno, path, buf, +                         xdata);          nfs_stack_destroy (nfl, frame);          return 0;  } @@ -899,7 +906,7 @@ nfs_fop_readlink (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *pathloc,          nfs_fop_save_root_ino (nfl, pathloc);          STACK_WIND_COOKIE (frame, nfs_fop_readlink_cbk, xl, xl, -                           xl->fops->readlink, pathloc, size); +                           xl->fops->readlink, pathloc, size, NULL);          ret = 0;  err:          if (ret < 0) { @@ -915,7 +922,7 @@ int32_t  nfs_fop_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)  {          struct nfs_fop_local    *nfl = NULL;          fop_mknod_cbk_t         progcbk = NULL; @@ -924,7 +931,7 @@ nfs_fop_mknod_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          nfs_fop_restore_root_ino (nfl, op_ret,buf, NULL, preparent, postparent);          if (progcbk)                  progcbk (frame, cookie, this, op_ret, op_errno, inode, buf, -                         preparent, postparent); +                         preparent, postparent, xdata);          nfs_stack_destroy (nfl, frame);          return 0;  } @@ -948,7 +955,7 @@ nfs_fop_mknod (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *pathloc,          nfs_fop_gfid_setup (nfl, pathloc->inode, ret, err);          STACK_WIND_COOKIE  (frame, nfs_fop_mknod_cbk, xl, xl, xl->fops->mknod, -                            pathloc, mode, dev, nfl->dictgfid); +                            pathloc, mode, dev, 0, nfl->dictgfid);          ret = 0;  err:          if (ret < 0) { @@ -962,7 +969,7 @@ err:  int32_t  nfs_fop_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)  {          struct nfs_fop_local    *nfl = frame->local;          fop_rmdir_cbk_t         progcbk = NULL; @@ -972,7 +979,7 @@ nfs_fop_rmdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                                    postparent);          if (progcbk)                  progcbk (frame, cookie, this, op_ret, op_errno, preparent, -                         postparent); +                         postparent, NULL);          nfs_stack_destroy (nfl, frame);          return 0;  } @@ -996,7 +1003,7 @@ nfs_fop_rmdir (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *pathloc,          nfs_fop_save_root_ino (nfl, pathloc);          STACK_WIND_COOKIE (frame, nfs_fop_rmdir_cbk, xl, xl, xl->fops->rmdir, -                           pathloc, 0); +                           pathloc, 0, NULL);          ret = 0;  err:          if (ret < 0) { @@ -1012,7 +1019,7 @@ err:  int32_t  nfs_fop_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)  {          struct nfs_fop_local    *nfl = frame->local;          fop_unlink_cbk_t         progcbk = NULL; @@ -1022,7 +1029,7 @@ nfs_fop_unlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                                    postparent);          if (progcbk)                  progcbk (frame, cookie, this, op_ret, op_errno, preparent, -                         postparent); +                         postparent, xdata);          nfs_stack_destroy (nfl, frame);          return 0;  } @@ -1045,7 +1052,7 @@ nfs_fop_unlink (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *pathloc,          nfs_fop_save_root_ino (nfl, pathloc);          STACK_WIND_COOKIE (frame, nfs_fop_unlink_cbk, xl, xl, -                           xl->fops->unlink, pathloc); +                           xl->fops->unlink, pathloc, 0, NULL);          ret = 0;  err:          if (ret < 0) { @@ -1062,7 +1069,7 @@ int32_t  nfs_fop_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 *postparent, dict_t *xdata)  {          struct nfs_fop_local    *nfl = NULL;          fop_link_cbk_t          progcbk = NULL; @@ -1072,7 +1079,7 @@ nfs_fop_link_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                                    postparent);          if (progcbk)                  progcbk (frame, cookie, this, op_ret, op_errno, inode, buf, -                         preparent, postparent); +                         preparent, postparent, xdata);          nfs_stack_destroy (nfl, frame);          return 0; @@ -1097,7 +1104,7 @@ nfs_fop_link (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *oldloc,          nfs_fop_save_root_ino (nfl, newloc);          STACK_WIND_COOKIE (frame, nfs_fop_link_cbk, xl, xl, xl->fops->link, -                           oldloc, newloc); +                           oldloc, newloc, NULL);          ret = 0;  err:          if (ret < 0) { @@ -1113,7 +1120,8 @@ int32_t  nfs_fop_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)  {          struct nfs_fop_local    *nfl = NULL; @@ -1131,7 +1139,7 @@ nfs_fop_rename_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          if (progcbk)                  progcbk (frame, cookie, this, op_ret, op_errno, buf,                           preoldparent, postoldparent, prenewparent, -                         postnewparent); +                         postnewparent, xdata);          nfs_stack_destroy (nfl, frame);          return 0;  } @@ -1156,7 +1164,7 @@ nfs_fop_rename (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *oldloc,          nfs_fop_newloc_save_root_ino (nfl, newloc);          STACK_WIND_COOKIE (frame, nfs_fop_rename_cbk, xl, xl, -                           xl->fops->rename, oldloc, newloc); +                           xl->fops->rename, oldloc, newloc, NULL);          ret = 0;  err:          if (ret < 0) { @@ -1170,14 +1178,14 @@ err:  int32_t  nfs_fop_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)  {          struct nfs_fop_local    *nfl = NULL;          fop_open_cbk_t          progcbk = NULL;          nfl_to_prog_data (nfl, progcbk, frame);          if (progcbk) -                progcbk (frame, cookie, this, op_ret, op_errno, fd); +                progcbk (frame, cookie, this, op_ret, op_errno, fd, xdata);          nfs_stack_destroy (nfl, frame);          return 0; @@ -1185,7 +1193,7 @@ nfs_fop_open_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  nfs_fop_open (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *loc, -              int32_t flags, fd_t *fd, int32_t wbflags, fop_open_cbk_t cbk, +              int32_t flags, fd_t *fd, fop_open_cbk_t cbk,                void *local)  {          call_frame_t            *frame = NULL; @@ -1200,7 +1208,7 @@ nfs_fop_open (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *loc,          nfs_fop_handle_local_init (frame, nfsx, nfl, cbk, local, ret, err);          STACK_WIND_COOKIE (frame, nfs_fop_open_cbk, xl, xl, xl->fops->open, -                           loc, flags, fd, wbflags); +                           loc, flags, fd, NULL);          ret = 0;  err:          if (ret < 0) { @@ -1215,7 +1223,7 @@ err:  int32_t  nfs_fop_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)  {          struct nfs_fop_local    *nfl = NULL;          fop_writev_cbk_t        progcbk = NULL; @@ -1223,7 +1231,8 @@ nfs_fop_writev_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          nfl_to_prog_data (nfl, progcbk, frame);          nfs_fop_restore_root_ino (nfl, op_ret, prebuf, postbuf, NULL, NULL);          if (progcbk) -                progcbk (frame, cookie, this, op_ret, op_errno, prebuf,postbuf); +                progcbk (frame, cookie, this, op_ret, op_errno, prebuf, +                         postbuf, xdata);          nfs_stack_destroy (nfl, frame); @@ -1257,7 +1266,7 @@ nfs_fop_write (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, fd_t *fd,          iobref_add (nfl->iobref, srciob);  */          STACK_WIND_COOKIE (frame, nfs_fop_writev_cbk, xl, xl,xl->fops->writev, -                           fd, vector, count, offset, 0, srciobref); +                           fd, vector, count, offset, 0, srciobref, NULL);          ret = 0;  err:          if (ret < 0) { @@ -1272,7 +1281,7 @@ err:  int32_t  nfs_fop_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)  {          struct nfs_fop_local    *nfl = NULL;          fop_fsync_cbk_t         progcbk = NULL; @@ -1280,7 +1289,9 @@ nfs_fop_fsync_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          nfl_to_prog_data (nfl, progcbk, frame);          nfs_fop_restore_root_ino (nfl, op_ret, prebuf, postbuf, NULL, NULL);          if (progcbk) -                progcbk (frame, cookie, this, op_ret, op_errno, prebuf,postbuf); +                progcbk (frame, cookie, this, op_ret, op_errno, prebuf, +                         postbuf, xdata); +          nfs_stack_destroy (nfl, frame);          return 0;  } @@ -1303,7 +1314,7 @@ nfs_fop_fsync (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, fd_t *fd,          nfs_fop_save_root_fd_ino (nfl, fd);          STACK_WIND_COOKIE (frame, nfs_fop_fsync_cbk, xl, xl, -                           xl->fops->fsync, fd, datasync); +                           xl->fops->fsync, fd, datasync, NULL);          ret = 0;  err:          if (ret < 0) { @@ -1318,7 +1329,8 @@ err:  int32_t  nfs_fop_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)  {          struct nfs_fop_local    *nfl = NULL;          fop_readv_cbk_t         progcbk = NULL; @@ -1327,7 +1339,7 @@ nfs_fop_readv_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          nfs_fop_restore_root_ino (nfl, op_ret, stbuf, NULL, NULL, NULL);          if (progcbk)                  progcbk (frame, cookie, this, op_ret, op_errno, vector, count, -                         stbuf, iobref); +                         stbuf, iobref, xdata);          nfs_stack_destroy (nfl, frame);          return 0; @@ -1350,7 +1362,7 @@ nfs_fop_read (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, fd_t *fd,          nfs_fop_save_root_fd_ino (nfl, fd);          STACK_WIND_COOKIE (frame, nfs_fop_readv_cbk, xl, xl, xl->fops->readv, -                           fd, size, offset, 0); +                           fd, size, offset, 0, NULL);          ret = 0;  err:          if (ret < 0) { @@ -1363,7 +1375,8 @@ err:  int32_t  nfs_fop_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)  {          struct nfs_fop_local    *nfl = NULL;          fop_lk_cbk_t         progcbk = NULL; @@ -1376,7 +1389,7 @@ nfs_fop_lk_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          fd_unref (nfl->fd);          if (progcbk) -                progcbk (frame, cookie, this, op_ret, op_errno, flock); +                progcbk (frame, cookie, this, op_ret, op_errno, flock, xdata);          nfs_stack_destroy (nfl, frame);          return 0; @@ -1402,7 +1415,7 @@ nfs_fop_lk (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, fd_t *fd,          nfl->flock = *flock;          STACK_WIND_COOKIE (frame, nfs_fop_lk_cbk, xl, xl, xl->fops->lk, -                           fd, cmd, flock); +                           fd, cmd, flock, NULL);          ret = 0;  err:          if (ret < 0) { @@ -1417,7 +1430,7 @@ err:  int32_t  nfs_fop_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)  {          struct nfs_fop_local    *nfl = NULL;          fop_truncate_cbk_t      progcbk = NULL; @@ -1425,7 +1438,8 @@ nfs_fop_truncate_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          nfl_to_prog_data (nfl, progcbk, frame);          nfs_fop_restore_root_ino (nfl, op_ret, prebuf, postbuf, NULL, NULL);          if (progcbk) -                progcbk (frame, cookie, this, op_ret, op_errno, prebuf,postbuf); +                progcbk (frame, cookie, this, op_ret, op_errno, prebuf, +                         postbuf, xdata);          nfs_stack_destroy (nfl, frame);          return 0; @@ -1448,7 +1462,7 @@ nfs_fop_truncate (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *loc,          nfs_fop_save_root_ino (nfl, loc);          STACK_WIND_COOKIE  (frame, nfs_fop_truncate_cbk, xl, xl, -                            xl->fops->truncate, loc, offset); +                            xl->fops->truncate, loc, offset, NULL);          ret = 0;  err: diff --git a/xlators/nfs/server/src/nfs-fops.h b/xlators/nfs/server/src/nfs-fops.h index f86a66b2d..b82805939 100644 --- a/xlators/nfs/server/src/nfs-fops.h +++ b/xlators/nfs/server/src/nfs-fops.h @@ -189,7 +189,7 @@ nfs_fop_write (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, fd_t *fd,  extern int  nfs_fop_open (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *loc, -              int32_t flags, fd_t *fd, int32_t wbflags, fop_open_cbk_t cbk, +              int32_t flags, fd_t *fd, fop_open_cbk_t cbk,                void *local);  extern int diff --git a/xlators/nfs/server/src/nfs-generics.c b/xlators/nfs/server/src/nfs-generics.c index dbb79fc9c..553cc7f39 100644 --- a/xlators/nfs/server/src/nfs-generics.c +++ b/xlators/nfs/server/src/nfs-generics.c @@ -192,7 +192,7 @@ nfs_open (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *pathloc,          if ((!nfsx) || (!xl) || (!pathloc) || (!nfu))                  return ret; -        ret = nfs_inode_open (nfsx, xl, nfu, pathloc, flags, GF_OPEN_NOWB, cbk, +        ret = nfs_inode_open (nfsx, xl, nfu, pathloc, flags, cbk,                                local);          return ret;  } diff --git a/xlators/nfs/server/src/nfs-inodes.c b/xlators/nfs/server/src/nfs-inodes.c index 4867dd71d..c9bf37206 100644 --- a/xlators/nfs/server/src/nfs-inodes.c +++ b/xlators/nfs/server/src/nfs-inodes.c @@ -70,7 +70,7 @@ int32_t  nfs_inode_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)  {          struct nfs_fop_local    *nfl = frame->local;          fop_create_cbk_t        progcbk = NULL; @@ -90,7 +90,7 @@ do_not_link:          inodes_nfl_to_prog_data (nfl, progcbk, frame);          if (progcbk)                  progcbk (frame, cookie, this, op_ret, op_errno, fd, inode, buf, -                         preparent, postparent); +                         preparent, postparent, xdata);          if (linked_inode) {                  inode_lookup (linked_inode); @@ -142,7 +142,7 @@ int32_t  nfs_inode_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)  {          struct nfs_fop_local    *nfl = frame->local;          fop_mkdir_cbk_t         progcbk = NULL; @@ -157,7 +157,7 @@ do_not_link:          inodes_nfl_to_prog_data (nfl, progcbk, frame);          if (progcbk)                  progcbk (frame, cookie, this, op_ret, op_errno, inode, buf, -                         preparent, postparent); +                         preparent, postparent, xdata);          if (linked_inode) {                  inode_lookup (linked_inode); @@ -193,7 +193,7 @@ err:  int32_t  nfs_inode_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)  {          struct nfs_fop_local    *nfl = NULL; @@ -209,14 +209,14 @@ nfs_inode_open_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  */          inodes_nfl_to_prog_data (nfl, progcbk, frame);          if (progcbk) -                progcbk (frame, cookie, this, op_ret, op_errno, fd); +                progcbk (frame, cookie, this, op_ret, op_errno, fd, xdata);          return 0;  }  int  nfs_inode_open (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *loc, -                int32_t flags, int32_t wbflags, fop_open_cbk_t cbk, void *local) +                int32_t flags, fop_open_cbk_t cbk, void *local)  {          struct nfs_fop_local    *nfl = NULL;          fd_t                    *newfd = NULL; @@ -233,7 +233,7 @@ nfs_inode_open (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *loc,          }          nfs_fop_handle_local_init (NULL, nfsx, nfl, cbk, local, ret, fd_err); -        ret = nfs_fop_open (nfsx, xl, nfu, loc, flags, newfd, wbflags, +        ret = nfs_fop_open (nfsx, xl, nfu, loc, flags, newfd,                              nfs_inode_open_cbk, nfl);          if (ret < 0) @@ -255,7 +255,8 @@ int32_t  nfs_inode_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)  {          struct nfs_fop_local    *nfl = NULL;          fop_rename_cbk_t        progcbk = NULL; @@ -272,7 +273,7 @@ do_not_link:          if (progcbk)                  progcbk (frame, cookie, this, op_ret, op_errno, buf,                           preoldparent, postoldparent, prenewparent, -                         postnewparent); +                         postnewparent, xdata);          return 0;  } @@ -305,7 +306,7 @@ int32_t  nfs_inode_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 *postparent, dict_t *xdata)  {          struct nfs_fop_local    *nfl = NULL;          fop_link_cbk_t          progcbk = NULL; @@ -321,7 +322,7 @@ do_not_link:          inodes_nfl_to_prog_data (nfl, progcbk, frame);          if (progcbk)                  progcbk (frame, cookie, this, op_ret, op_errno, inode, buf, -                         preparent, postparent); +                         preparent, postparent, xdata);          if (linked_inode) {                  inode_lookup (linked_inode); @@ -358,7 +359,7 @@ err:  int32_t  nfs_inode_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)  {          struct nfs_fop_local    *nfl = NULL;          fop_unlink_cbk_t        progcbk = NULL; @@ -375,7 +376,7 @@ do_not_unlink:          inodes_nfl_to_prog_data (nfl, progcbk, frame);          if (progcbk)                  progcbk (frame, cookie, this, op_ret, op_errno, preparent, -                         postparent); +                         postparent, xdata);          return 0;  } @@ -406,7 +407,7 @@ err:  int32_t  nfs_inode_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)  {          struct nfs_fop_local    *nfl = NULL;          fop_rmdir_cbk_t         progcbk = NULL; @@ -423,7 +424,7 @@ do_not_unlink:          inodes_nfl_to_prog_data (nfl, progcbk, frame);          if (progcbk)                  progcbk (frame, cookie, this, op_ret, op_errno, preparent, -                        postparent); +                         postparent, xdata);          return 0;  } @@ -456,7 +457,7 @@ int32_t  nfs_inode_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)  {          struct nfs_fop_local    *nfl = NULL;          fop_mknod_cbk_t         progcbk = NULL; @@ -473,7 +474,7 @@ do_not_link:          inodes_nfl_to_prog_data (nfl, progcbk, frame);          if (progcbk)                  progcbk (frame, cookie, this, op_ret, op_errno, inode, buf, -                         preparent, postparent); +                         preparent, postparent, xdata);          if (linked_inode) {                  inode_lookup (linked_inode); @@ -513,7 +514,7 @@ int32_t  nfs_inode_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)  {          struct nfs_fop_local    *nfl = NULL;          fop_symlink_cbk_t       progcbk = NULL; @@ -529,7 +530,7 @@ do_not_link:          inodes_nfl_to_prog_data (nfl, progcbk, frame);          if (progcbk)                  progcbk (frame, cookie, this, op_ret, op_errno, inode, buf, -                         preparent, postparent); +                         preparent, postparent, xdata);          if (linked_inode) {                  inode_lookup (linked_inode); @@ -565,7 +566,7 @@ err:  int32_t  nfs_inode_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)  {          struct nfs_fop_local    *nfl = NULL; @@ -579,7 +580,8 @@ nfs_inode_opendir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          inodes_nfl_to_prog_data (nfl, progcbk, frame);          if (progcbk) -                progcbk (frame, cookie, this, op_ret, op_errno, fd); +                progcbk (frame, cookie, this, op_ret, op_errno, fd, xdata); +          return 0;  } diff --git a/xlators/nfs/server/src/nfs-inodes.h b/xlators/nfs/server/src/nfs-inodes.h index 12c8eec0d..7c962b339 100644 --- a/xlators/nfs/server/src/nfs-inodes.h +++ b/xlators/nfs/server/src/nfs-inodes.h @@ -48,7 +48,7 @@ nfs_inode_mkdir (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *pathloc,  extern int  nfs_inode_open (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *loc, -                int32_t flags, int32_t wbflags, fop_open_cbk_t cbk, +                int32_t flags, fop_open_cbk_t cbk,                  void *local);  extern int diff --git a/xlators/nfs/server/src/nfs3.c b/xlators/nfs/server/src/nfs3.c index 69cd3f786..75375f369 100644 --- a/xlators/nfs/server/src/nfs3.c +++ b/xlators/nfs/server/src/nfs3.c @@ -713,7 +713,8 @@ nfs3svc_getattr_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int32_t  nfs3svc_getattr_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)  {          nfsstat3                status = NFS3_OK;          nfs3_call_state_t       *cs = NULL; @@ -875,7 +876,7 @@ nfs3_setattr_reply (rpcsvc_request_t *req, nfsstat3 stat, struct iatt *preop,  int32_t  nfs3svc_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)  {          nfsstat3                stat = NFS3ERR_SERVERFAULT;          struct iatt             *prestat = NULL; @@ -913,7 +914,7 @@ nfs3err:  int32_t  nfs3svc_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 *postop, dict_t *xdata)  {          nfsstat3                stat = NFS3ERR_SERVERFAULT;          int                     ret = -1; @@ -967,7 +968,8 @@ nfs3err:  int32_t  nfs3svc_setattr_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)  {          int                     ret = -EFAULT; @@ -1479,7 +1481,7 @@ nfs3_access_reply (rpcsvc_request_t *req, nfsstat3 status, int32_t accbits)  int32_t  nfs3svc_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)  {          nfsstat3                status = NFS3_OK;          nfs3_call_state_t       *cs = NULL; @@ -1616,7 +1618,7 @@ nfs3_readlink_reply (rpcsvc_request_t *req, nfsstat3 stat, char *path,  int32_t  nfs3svc_readlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                        int32_t op_ret, int32_t op_errno, const char *path, -                      struct iatt *buf) +                      struct iatt *buf, dict_t *xdata)  {          nfsstat3                stat = NFS3ERR_SERVERFAULT;          nfs3_call_state_t       *cs = NULL; @@ -1781,7 +1783,8 @@ nfs3_read_reply (rpcsvc_request_t *req, nfsstat3 stat, count3 count,  int32_t  nfs3svc_read_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                    int32_t op_ret, int32_t op_errno, struct iovec *vector, -                  int32_t count, struct iatt *stbuf, struct iobref *iobref) +                  int32_t count, struct iatt *stbuf, struct iobref *iobref, +                  dict_t *xdata)  {          nfsstat3                stat = NFS3ERR_SERVERFAULT;          int                     is_eof = 0; @@ -1965,7 +1968,7 @@ nfs3_write_reply (rpcsvc_request_t *req, nfsstat3 stat, count3 count,  int32_t  nfs3svc_write_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)  {          struct nfs3_state       *nfs3 = NULL;          nfsstat3                stat = NFS3ERR_SERVERFAULT; @@ -2061,7 +2064,7 @@ err:  int32_t  nfs3svc_write_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)  {          nfsstat3                stat = NFS3ERR_SERVERFAULT;          int                     ret = -EFAULT; @@ -2326,7 +2329,7 @@ nfs3_create_reply (rpcsvc_request_t *req, nfsstat3 stat, struct nfs3_fh *newfh,  int32_t  nfs3svc_create_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)  {          nfsstat3                stat = NFS3ERR_SERVERFAULT;          nfs3_call_state_t       *cs = NULL; @@ -2356,7 +2359,7 @@ int32_t  nfs3svc_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)  {          nfsstat3                stat = NFS3ERR_SERVERFAULT;          int                     ret = -EFAULT; @@ -2459,7 +2462,8 @@ nfs3_create_common (nfs3_call_state_t *cs)  int32_t  nfs3svc_create_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)  {          int                     ret = -EFAULT;          nfsstat3                stat = NFS3ERR_SERVERFAULT; @@ -2684,7 +2688,7 @@ nfs3_mkdir_reply (rpcsvc_request_t *req, nfsstat3 stat, struct nfs3_fh *fh,  int32_t  nfs3svc_mkdir_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)  {          nfsstat3                stat = NFS3ERR_SERVERFAULT;          nfs3_call_state_t       *cs = NULL; @@ -2714,7 +2718,7 @@ int32_t  nfs3svc_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)  {          nfsstat3                        stat = NFS3ERR_SERVERFAULT;          int                             ret = -EFAULT; @@ -2894,7 +2898,7 @@ int32_t  nfs3svc_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)  {          nfsstat3                        stat = NFS3ERR_SERVERFAULT;          nfs3_call_state_t               *cs = NULL; @@ -3056,7 +3060,7 @@ nfs3_mknod_reply (rpcsvc_request_t *req, nfsstat3 stat, struct nfs3_fh *fh,  int32_t  nfs3svc_mknod_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)  {          nfsstat3                stat = NFS3ERR_SERVERFAULT;          nfs3_call_state_t       *cs = NULL; @@ -3086,7 +3090,7 @@ int32_t  nfs3svc_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)  {          nfsstat3                        stat = NFS3ERR_SERVERFAULT;          int                             ret = -1; @@ -3346,7 +3350,7 @@ nfs3_remove_reply (rpcsvc_request_t *req, nfsstat3 stat, struct iatt *preparent  int32_t  nfs3svc_remove_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)  {          nfsstat3                stat = NFS3ERR_SERVERFAULT;          nfs3_call_state_t       *cs = NULL; @@ -3512,7 +3516,7 @@ nfs3_rmdir_reply (rpcsvc_request_t *req, nfsstat3 stat, struct iatt *preparent,  int32_t  nfs3svc_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)  {          nfsstat3                stat = NFS3ERR_SERVERFAULT;          nfs3_call_state_t       *cs = NULL; @@ -3664,7 +3668,8 @@ int32_t  nfs3svc_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)  {          int                     ret = -EFAULT;          nfsstat3                stat = NFS3ERR_SERVERFAULT; @@ -3870,7 +3875,7 @@ int32_t  nfs3svc_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 *postparent, dict_t *xdata)  {          nfsstat3                stat = NFS3ERR_SERVERFAULT;          nfs3_call_state_t       *cs = NULL; @@ -4079,7 +4084,8 @@ nfs3_readdir_reply (rpcsvc_request_t *req, nfsstat3 stat, struct nfs3_fh *dirfh,  int32_t  nfs3svc_readdir_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)  {          nfsstat3                stat = NFS3ERR_SERVERFAULT;          int                     is_eof = 0; @@ -4132,7 +4138,8 @@ nfs3err:  int32_t  nfs3svc_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)  {          nfsstat3                stat = NFS3ERR_SERVERFAULT;          int                     ret = -EFAULT; @@ -4439,7 +4446,8 @@ nfs3_fsstat_reply (rpcsvc_request_t *req, nfsstat3 stat, struct statvfs *fsbuf,  int32_t  nfs3_fsstat_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)  {          nfsstat3                stat = NFS3ERR_SERVERFAULT;          nfs3_call_state_t       *cs = NULL; @@ -4463,7 +4471,8 @@ nfs3_fsstat_stat_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int32_t  nfs3_fsstat_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)  {          nfs_user_t              nfu = {0, };          int                     ret = -EFAULT; @@ -4623,7 +4632,8 @@ nfs3_fsinfo_reply (rpcsvc_request_t *req, nfsstat3 status, struct iatt *fsroot)  int32_t  nfs3svc_fsinfo_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)  {          nfsstat3                status = NFS3ERR_SERVERFAULT;          nfs3_call_state_t       *cs = NULL; @@ -4764,7 +4774,8 @@ nfs3_pathconf_reply (rpcsvc_request_t *req, nfsstat3 stat, struct iatt *buf)  int32_t  nfs3svc_pathconf_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)  {          struct iatt             *sbuf = NULL;          nfs3_call_state_t       *cs = NULL; @@ -4908,7 +4919,7 @@ nfs3_commit_reply (rpcsvc_request_t *req, nfsstat3 stat, uint64_t wverf,  int32_t  nfs3svc_commit_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)  {          nfsstat3                stat = NFS3ERR_SERVERFAULT;          nfs3_call_state_t       *cs = NULL; diff --git a/xlators/nfs/server/src/nlm4.c b/xlators/nfs/server/src/nlm4.c index 16507d069..0aa1fc144 100644 --- a/xlators/nfs/server/src/nlm4.c +++ b/xlators/nfs/server/src/nlm4.c @@ -448,7 +448,7 @@ typedef int (*nlm4_resume_fn_t) (void *cs);  int32_t  nlm4_file_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)  {          nfs3_call_state_t *cs = frame->local; @@ -574,9 +574,9 @@ nlm4_file_open_and_resume(nfs3_call_state_t *cs, nlm4_resume_fn_t resume)          frame->root->uid = 0;          frame->root->gid = 0;          frame->local = cs; -        STACK_WIND_COOKIE(frame, nlm4_file_open_cbk, cs->nfsx, cs->nfsx, +        STACK_WIND_COOKIE (frame, nlm4_file_open_cbk, cs->nfsx, cs->nfsx,                            cs->nfsx->fops->open, &cs->resolvedloc, O_RDWR, -                          cs->fd, GF_OPEN_NOWB); +                          cs->fd, NULL);          ret = 0;  err:          return ret; @@ -677,7 +677,8 @@ nlm4_test_reply (nfs3_call_state_t *cs, nlm4_stats stat, struct gf_flock *flock)  int  nlm4svc_test_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)  {          nlm4_stats                      stat = nlm4_denied;          nfs3_call_state_t              *cs = NULL; @@ -1210,7 +1211,8 @@ ret:  int  nlm4svc_lock_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)  {          nlm4_stats                      stat = nlm4_denied;          nfs3_call_state_t              *cs = NULL; @@ -1378,7 +1380,8 @@ rpcerr:  int  nlm4svc_cancel_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)  {          nlm4_stats                      stat = nlm4_denied;          nfs3_call_state_t              *cs = NULL; @@ -1434,7 +1437,8 @@ nlm4err:  int  nlm4svc_unlock_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)  {          nlm4_stats                      stat = nlm4_denied;          nfs3_call_state_t              *cs = NULL; diff --git a/xlators/performance/io-cache/src/io-cache.c b/xlators/performance/io-cache/src/io-cache.c index a50fa872e..42ec584ba 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 c3c631dba..cfc12ed0f 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 50357199f..115242c08 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 d3196d50b..c2d660d4f 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 5fa6e214b..13396a44e 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 56f665f67..fed814460 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 52b3fdaf3..bc8bb8d58 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 718bf3398..9019943fd 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 a82786cce..538cdc956 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 cc0569dd4..d1b9f6feb 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;  } diff --git a/xlators/protocol/client/src/client-handshake.c b/xlators/protocol/client/src/client-handshake.c index 0a8759af5..944b9ca80 100644 --- a/xlators/protocol/client/src/client-handshake.c +++ b/xlators/protocol/client/src/client-handshake.c @@ -1202,7 +1202,6 @@ protocol_client_reopen (xlator_t *this, clnt_fd_ctx_t *fdctx)          memcpy (req.gfid, inode->gfid, 16);          req.flags    = gf_flags_from_flags (fdctx->flags); -        req.wbflags  = fdctx->wbflags;          gf_log (frame->this->name, GF_LOG_DEBUG,                  "attempting reopen on %s", local->loc.path); diff --git a/xlators/protocol/client/src/client-lk.c b/xlators/protocol/client/src/client-lk.c index 4e87f7fcd..76f78b846 100644 --- a/xlators/protocol/client/src/client-lk.c +++ b/xlators/protocol/client/src/client-lk.c @@ -621,7 +621,7 @@ client_remove_reserve_lock_cbk (call_frame_t *frame,                                  xlator_t *this,                                  int32_t op_ret,                                  int32_t op_errno, -                                struct gf_flock *lock) +                                struct gf_flock *lock, dict_t *xdata)  {          clnt_local_t *local = NULL;          clnt_conf_t  *conf  = NULL; @@ -667,7 +667,7 @@ client_remove_reserve_lock (xlator_t *this, call_frame_t *frame,          STACK_WIND (frame, client_remove_reserve_lock_cbk,                      this, this->fops->lk, -                    lock->fd, F_RESLK_UNLCK, &unlock); +                    lock->fd, F_RESLK_UNLCK, &unlock, NULL);  }  static client_posix_lock_t * @@ -699,7 +699,7 @@ client_reserve_lock_cbk (call_frame_t *frame,                           xlator_t *this,                           int32_t op_ret,                           int32_t op_errno, -                         struct gf_flock *lock) +                         struct gf_flock *lock, dict_t *xdata)  {          clnt_local_t *local = NULL; @@ -755,7 +755,7 @@ client_recovery_lock_cbk (call_frame_t *frame,                            xlator_t *this,                            int32_t op_ret,                            int32_t op_errno, -                          struct gf_flock *lock) +                          struct gf_flock *lock, dict_t *xdata)  {          clnt_local_t *local = NULL;          clnt_fd_ctx_t *fdctx = NULL; @@ -795,7 +795,7 @@ client_recovery_lock_cbk (call_frame_t *frame,                  STACK_WIND (frame, client_reserve_lock_cbk,                              this, this->fops->lk, -                            next_lock->fd, F_RESLK_LCK, &reserve_flock); +                            next_lock->fd, F_RESLK_LCK, &reserve_flock, NULL);                  goto out;          } @@ -832,7 +832,7 @@ client_send_recovery_lock (call_frame_t *frame, xlator_t *this,          STACK_WIND (frame, client_recovery_lock_cbk,                      this, this->fops->lk,                      lock->fd, F_SETLK, -                    &(lock->user_flock)); +                    &(lock->user_flock), NULL);          return 0;  } @@ -896,7 +896,7 @@ client_attempt_lock_recovery (xlator_t *this, clnt_fd_ctx_t *fdctx)          STACK_WIND (frame, client_reserve_lock_cbk,                      this, this->fops->lk, -                    lock->fd, F_RESLK_LCK, &reserve_flock); +                    lock->fd, F_RESLK_LCK, &reserve_flock, NULL);  out:          return ret; diff --git a/xlators/protocol/client/src/client.c b/xlators/protocol/client/src/client.c index 82d90d257..0f55ca86e 100644 --- a/xlators/protocol/client/src/client.c +++ b/xlators/protocol/client/src/client.c @@ -349,7 +349,7 @@ out:  int32_t  client_lookup (call_frame_t *frame, xlator_t *this, loc_t *loc, -               dict_t *xattr_req) +               dict_t *xdata)  {          int          ret  = -1;          clnt_conf_t *conf = NULL; @@ -361,7 +361,7 @@ client_lookup (call_frame_t *frame, xlator_t *this, loc_t *loc,                  goto out;          args.loc = loc; -        args.dict = xattr_req; +        args.xdata = xdata;          proc = &conf->fops->proctable[GF_FOP_LOOKUP];          if (!proc) { @@ -383,7 +383,7 @@ out:  int32_t -client_stat (call_frame_t *frame, xlator_t *this, loc_t *loc) +client_stat (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *xdata)  {          int          ret  = -1;          clnt_conf_t *conf = NULL; @@ -395,6 +395,7 @@ client_stat (call_frame_t *frame, xlator_t *this, loc_t *loc)                  goto out;          args.loc = loc; +        args.xdata = xdata;          proc = &conf->fops->proctable[GF_FOP_STAT];          if (!proc) { @@ -407,14 +408,15 @@ client_stat (call_frame_t *frame, xlator_t *this, loc_t *loc)                  ret = proc->fn (frame, this, &args);  out:          if (ret) -                STACK_UNWIND_STRICT (stat, frame, -1, ENOTCONN, NULL); +                STACK_UNWIND_STRICT (stat, frame, -1, ENOTCONN, NULL, NULL);  	return 0;  }  int32_t -client_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, off_t offset) +client_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, +                 off_t offset, dict_t *xdata)  {          int          ret  = -1;          clnt_conf_t *conf = NULL; @@ -427,6 +429,7 @@ client_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, off_t offset)          args.loc    = loc;          args.offset = offset; +        args.xdata = xdata;          proc = &conf->fops->proctable[GF_FOP_TRUNCATE];          if (!proc) { @@ -439,7 +442,7 @@ client_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, off_t offset)                  ret = proc->fn (frame, this, &args);  out:          if (ret) -                STACK_UNWIND_STRICT (truncate, frame, -1, ENOTCONN, NULL, NULL); +                STACK_UNWIND_STRICT (truncate, frame, -1, ENOTCONN, NULL, NULL, NULL);  	return 0; @@ -447,7 +450,8 @@ out:  int32_t -client_ftruncate (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset) +client_ftruncate (call_frame_t *frame, xlator_t *this, fd_t *fd, +                  off_t offset, dict_t *xdata)  {          int          ret  = -1;          clnt_conf_t *conf = NULL; @@ -460,6 +464,7 @@ client_ftruncate (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset)          args.fd     = fd;          args.offset = offset; +        args.xdata = xdata;          proc = &conf->fops->proctable[GF_FOP_FTRUNCATE];          if (!proc) { @@ -472,7 +477,7 @@ client_ftruncate (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset)                  ret = proc->fn (frame, this, &args);  out:          if (ret) -                STACK_UNWIND_STRICT (ftruncate, frame, -1, ENOTCONN, NULL, NULL); +                STACK_UNWIND_STRICT (ftruncate, frame, -1, ENOTCONN, NULL, NULL, NULL);  	return 0;  } @@ -480,7 +485,8 @@ out:  int32_t -client_access (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t mask) +client_access (call_frame_t *frame, xlator_t *this, loc_t *loc, +               int32_t mask, dict_t *xdata)  {          int          ret  = -1;          clnt_conf_t *conf = NULL; @@ -493,6 +499,7 @@ client_access (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t mask)          args.loc  = loc;          args.mask = mask; +        args.xdata = xdata;          proc = &conf->fops->proctable[GF_FOP_ACCESS];          if (!proc) { @@ -505,7 +512,7 @@ client_access (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t mask)                  ret = proc->fn (frame, this, &args);  out:          if (ret) -                STACK_UNWIND_STRICT (access, frame, -1, ENOTCONN); +                STACK_UNWIND_STRICT (access, frame, -1, ENOTCONN, NULL);  	return 0;  } @@ -514,7 +521,8 @@ out:  int32_t -client_readlink (call_frame_t *frame, xlator_t *this, loc_t *loc, size_t size) +client_readlink (call_frame_t *frame, xlator_t *this, loc_t *loc, +                 size_t size, dict_t *xdata)  {          int          ret  = -1;          clnt_conf_t *conf = NULL; @@ -527,6 +535,7 @@ client_readlink (call_frame_t *frame, xlator_t *this, loc_t *loc, size_t size)          args.loc  = loc;          args.size = size; +        args.xdata = xdata;          proc = &conf->fops->proctable[GF_FOP_READLINK];          if (!proc) { @@ -539,7 +548,7 @@ client_readlink (call_frame_t *frame, xlator_t *this, loc_t *loc, size_t size)                  ret = proc->fn (frame, this, &args);  out:          if (ret) -                STACK_UNWIND_STRICT (readlink, frame, -1, ENOTCONN, NULL, NULL); +                STACK_UNWIND_STRICT (readlink, frame, -1, ENOTCONN, NULL, NULL, NULL);  	return 0;  } @@ -547,7 +556,7 @@ out:  int  client_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)  {          int          ret  = -1;          clnt_conf_t *conf = NULL; @@ -561,7 +570,8 @@ client_mknod (call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode,          args.loc  = loc;          args.mode = mode;          args.rdev = rdev; -        args.dict = params; +        args.umask = umask; +        args.xdata = xdata;          proc = &conf->fops->proctable[GF_FOP_MKNOD];          if (!proc) { @@ -575,7 +585,7 @@ client_mknod (call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode,  out:          if (ret)                  STACK_UNWIND_STRICT (mknod, frame, -1, ENOTCONN, -                                     NULL, NULL, NULL, NULL); +                                     NULL, NULL, NULL, NULL, NULL);  	return 0;  } @@ -583,7 +593,7 @@ out:  int  client_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)  {          int          ret  = -1;          clnt_conf_t *conf = NULL; @@ -596,7 +606,8 @@ client_mkdir (call_frame_t *frame, xlator_t *this, loc_t *loc,          args.loc  = loc;          args.mode = mode; -        args.dict = params; +        args.umask = umask; +        args.xdata = xdata;          proc = &conf->fops->proctable[GF_FOP_MKDIR];          if (!proc) { @@ -610,7 +621,7 @@ client_mkdir (call_frame_t *frame, xlator_t *this, loc_t *loc,  out:          if (ret)                  STACK_UNWIND_STRICT (mkdir, frame, -1, ENOTCONN, -                                     NULL, NULL, NULL, NULL); +                                     NULL, NULL, NULL, NULL, NULL);  	return 0;  } @@ -618,7 +629,8 @@ out:  int32_t -client_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc) +client_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc, +               int xflag, dict_t *xdata)  {          int          ret  = -1;          clnt_conf_t *conf = NULL; @@ -630,6 +642,8 @@ client_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc)                  goto out;          args.loc = loc; +        args.xdata = xdata; +        args.flags = xflag;          proc = &conf->fops->proctable[GF_FOP_UNLINK];          if (!proc) { @@ -643,13 +657,14 @@ client_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc)  out:          if (ret)                  STACK_UNWIND_STRICT (unlink, frame, -1, ENOTCONN, -                                     NULL, NULL); +                                     NULL, NULL, NULL);  	return 0;  }  int32_t -client_rmdir (call_frame_t *frame, xlator_t *this, loc_t *loc, int flags) +client_rmdir (call_frame_t *frame, xlator_t *this, loc_t *loc, int flags, +              dict_t *xdata)  {          int          ret  = -1;          clnt_conf_t *conf = NULL; @@ -662,6 +677,7 @@ client_rmdir (call_frame_t *frame, xlator_t *this, loc_t *loc, int flags)          args.loc = loc;          args.flags = flags; +        args.xdata = xdata;          proc = &conf->fops->proctable[GF_FOP_RMDIR];          if (!proc) { @@ -676,7 +692,7 @@ out:          /* think of avoiding a missing frame */          if (ret)                  STACK_UNWIND_STRICT (rmdir, frame, -1, ENOTCONN, -                                     NULL, NULL); +                                     NULL, NULL, NULL);  	return 0;  } @@ -684,7 +700,7 @@ out:  int  client_symlink (call_frame_t *frame, xlator_t *this, const char *linkpath, -                loc_t *loc, dict_t *params) +                loc_t *loc, mode_t umask, dict_t *xdata)  {          int          ret  = -1;          clnt_conf_t *conf = NULL; @@ -697,7 +713,8 @@ client_symlink (call_frame_t *frame, xlator_t *this, const char *linkpath,          args.linkname = linkpath;          args.loc      = loc; -        args.dict     = params; +        args.umask    = umask; +        args.xdata    = xdata;          proc = &conf->fops->proctable[GF_FOP_SYMLINK];          if (!proc) { @@ -711,7 +728,7 @@ client_symlink (call_frame_t *frame, xlator_t *this, const char *linkpath,  out:          if (ret)                  STACK_UNWIND_STRICT (symlink, frame, -1, ENOTCONN, -                                     NULL, NULL, NULL, NULL); +                                     NULL, NULL, NULL, NULL, NULL);  	return 0;  } @@ -720,7 +737,7 @@ out:  int32_t  client_rename (call_frame_t *frame, xlator_t *this, loc_t *oldloc, -               loc_t *newloc) +               loc_t *newloc, dict_t *xdata)  {          int          ret  = -1;          clnt_conf_t *conf = NULL; @@ -733,6 +750,8 @@ client_rename (call_frame_t *frame, xlator_t *this, loc_t *oldloc,          args.oldloc = oldloc;          args.newloc = newloc; +        args.xdata  = xdata; +          proc = &conf->fops->proctable[GF_FOP_RENAME];          if (!proc) {                  gf_log (this->name, GF_LOG_ERROR, @@ -745,7 +764,7 @@ client_rename (call_frame_t *frame, xlator_t *this, loc_t *oldloc,  out:          if (ret)                  STACK_UNWIND_STRICT (rename, frame, -1, ENOTCONN, -                                     NULL, NULL, NULL, NULL, NULL); +                                     NULL, NULL, NULL, NULL, NULL, NULL);  	return 0;  } @@ -754,7 +773,7 @@ out:  int32_t  client_link (call_frame_t *frame, xlator_t *this, loc_t *oldloc, -             loc_t *newloc) +             loc_t *newloc, dict_t *xdata)  {          int          ret  = -1;          clnt_conf_t *conf = NULL; @@ -767,6 +786,7 @@ client_link (call_frame_t *frame, xlator_t *this, loc_t *oldloc,          args.oldloc = oldloc;          args.newloc = newloc; +        args.xdata = xdata;          proc = &conf->fops->proctable[GF_FOP_LINK];          if (!proc) { @@ -780,7 +800,7 @@ client_link (call_frame_t *frame, xlator_t *this, loc_t *oldloc,  out:          if (ret)                  STACK_UNWIND_STRICT (link, frame, -1, ENOTCONN, -                                     NULL, NULL, NULL, NULL); +                                     NULL, NULL, NULL, NULL, NULL);  	return 0;  } @@ -788,8 +808,8 @@ out:  int32_t -client_create (call_frame_t *frame, xlator_t *this, loc_t *loc, -               int32_t flags, mode_t mode, fd_t *fd, dict_t *params) +client_create (call_frame_t *frame, xlator_t *this, loc_t *loc,  int32_t flags, +               mode_t mode, mode_t umask, fd_t *fd, dict_t *xdata)  {          int          ret  = -1;          clnt_conf_t *conf = NULL; @@ -804,7 +824,8 @@ client_create (call_frame_t *frame, xlator_t *this, loc_t *loc,          args.flags = flags;          args.mode = mode;          args.fd = fd; -        args.dict = params; +        args.umask = umask; +        args.xdata = xdata;          proc = &conf->fops->proctable[GF_FOP_CREATE];          if (!proc) { @@ -818,7 +839,7 @@ client_create (call_frame_t *frame, xlator_t *this, loc_t *loc,  out:          if (ret)                  STACK_UNWIND_STRICT (create, frame, -1, ENOTCONN, -                                     NULL, NULL, NULL, NULL, NULL); +                                     NULL, NULL, NULL, NULL, NULL, NULL);  	return 0;  } @@ -827,7 +848,7 @@ out:  int32_t  client_open (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)  {          int          ret  = -1;          clnt_conf_t *conf = NULL; @@ -841,7 +862,7 @@ client_open (call_frame_t *frame, xlator_t *this, loc_t *loc,          args.loc = loc;          args.flags = flags;          args.fd = fd; -        args.wbflags = wbflags; +        args.xdata = xdata;          proc = &conf->fops->proctable[GF_FOP_OPEN];          if (!proc) { @@ -855,7 +876,7 @@ client_open (call_frame_t *frame, xlator_t *this, loc_t *loc,  out:          if (ret) -                STACK_UNWIND_STRICT (open, frame, -1, ENOTCONN, NULL); +                STACK_UNWIND_STRICT (open, frame, -1, ENOTCONN, NULL, NULL);  	return 0;  } @@ -864,7 +885,7 @@ out:  int32_t  client_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)  {          int          ret  = -1;          clnt_conf_t *conf = NULL; @@ -879,6 +900,7 @@ client_readv (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size,          args.size   = size;          args.offset = offset;          args.flags  = flags; +        args.xdata = xdata;          proc = &conf->fops->proctable[GF_FOP_READ];          if (!proc) { @@ -893,7 +915,7 @@ client_readv (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size,  out:          if (ret)                  STACK_UNWIND_STRICT (readv, frame, -1, ENOTCONN, -                                     NULL, 0, NULL, NULL); +                                     NULL, 0, NULL, NULL, NULL);  	return 0;  } @@ -904,7 +926,7 @@ out:  int32_t  client_writev (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)  {          int          ret  = -1;          clnt_conf_t *conf = NULL; @@ -921,6 +943,7 @@ client_writev (call_frame_t *frame, xlator_t *this, fd_t *fd,          args.offset = off;          args.flags  = flags;          args.iobref = iobref; +        args.xdata = xdata;          proc = &conf->fops->proctable[GF_FOP_WRITE];          if (!proc) { @@ -933,14 +956,14 @@ client_writev (call_frame_t *frame, xlator_t *this, fd_t *fd,                  ret = proc->fn (frame, this, &args);  out:          if (ret) -                STACK_UNWIND_STRICT (writev, frame, -1, ENOTCONN, NULL, NULL); +                STACK_UNWIND_STRICT (writev, frame, -1, ENOTCONN, NULL, NULL, NULL);  	return 0;  }  int32_t -client_flush (call_frame_t *frame, xlator_t *this, fd_t *fd) +client_flush (call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *xdata)  {          int          ret  = -1;          clnt_conf_t *conf = NULL; @@ -952,6 +975,7 @@ client_flush (call_frame_t *frame, xlator_t *this, fd_t *fd)                  goto out;          args.fd = fd; +        args.xdata = xdata;          proc = &conf->fops->proctable[GF_FOP_FLUSH];          if (!proc) { @@ -964,7 +988,7 @@ client_flush (call_frame_t *frame, xlator_t *this, fd_t *fd)                  ret = proc->fn (frame, this, &args);  out:          if (ret) -                STACK_UNWIND_STRICT (flush, frame, -1, ENOTCONN); +                STACK_UNWIND_STRICT (flush, frame, -1, ENOTCONN, NULL);  	return 0;  } @@ -973,7 +997,7 @@ out:  int32_t  client_fsync (call_frame_t *frame, xlator_t *this, fd_t *fd, -              int32_t flags) +              int32_t flags, dict_t *xdata)  {          int          ret  = -1;          clnt_conf_t *conf = NULL; @@ -986,6 +1010,7 @@ client_fsync (call_frame_t *frame, xlator_t *this, fd_t *fd,          args.fd    = fd;          args.flags = flags; +        args.xdata = xdata;          proc = &conf->fops->proctable[GF_FOP_FSYNC];          if (!proc) { @@ -998,7 +1023,7 @@ client_fsync (call_frame_t *frame, xlator_t *this, fd_t *fd,                  ret = proc->fn (frame, this, &args);  out:          if (ret) -                STACK_UNWIND_STRICT (fsync, frame, -1, ENOTCONN, NULL, NULL); +                STACK_UNWIND_STRICT (fsync, frame, -1, ENOTCONN, NULL, NULL, NULL);  	return 0;  } @@ -1006,7 +1031,7 @@ out:  int32_t -client_fstat (call_frame_t *frame, xlator_t *this, fd_t *fd) +client_fstat (call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *xdata)  {          int          ret  = -1;          clnt_conf_t *conf = NULL; @@ -1018,6 +1043,7 @@ client_fstat (call_frame_t *frame, xlator_t *this, fd_t *fd)                  goto out;          args.fd = fd; +        args.xdata = xdata;          proc = &conf->fops->proctable[GF_FOP_FSTAT];          if (!proc) { @@ -1030,7 +1056,7 @@ client_fstat (call_frame_t *frame, xlator_t *this, fd_t *fd)                  ret = proc->fn (frame, this, &args);  out:          if (ret) -                STACK_UNWIND_STRICT (fstat, frame, -1, ENOTCONN, NULL); +                STACK_UNWIND_STRICT (fstat, frame, -1, ENOTCONN, NULL, NULL);  	return 0;  } @@ -1038,7 +1064,8 @@ out:  int32_t -client_opendir (call_frame_t *frame, xlator_t *this, loc_t *loc, fd_t *fd) +client_opendir (call_frame_t *frame, xlator_t *this, loc_t *loc, fd_t *fd, +                dict_t *xdata)  {          int          ret  = -1;          clnt_conf_t *conf = NULL; @@ -1051,6 +1078,7 @@ client_opendir (call_frame_t *frame, xlator_t *this, loc_t *loc, fd_t *fd)          args.loc = loc;          args.fd  = fd; +        args.xdata = xdata;          proc = &conf->fops->proctable[GF_FOP_OPENDIR];          if (!proc) { @@ -1063,7 +1091,7 @@ client_opendir (call_frame_t *frame, xlator_t *this, loc_t *loc, fd_t *fd)                  ret = proc->fn (frame, this, &args);  out:          if (ret) -                STACK_UNWIND_STRICT (opendir, frame, -1, ENOTCONN, NULL); +                STACK_UNWIND_STRICT (opendir, frame, -1, ENOTCONN, NULL, NULL);  	return 0;  } @@ -1071,7 +1099,7 @@ out:  int32_t -client_fsyncdir (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t flags) +client_fsyncdir (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t flags, dict_t *xdata)  {          int          ret  = -1;          clnt_conf_t *conf = NULL; @@ -1084,6 +1112,7 @@ client_fsyncdir (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t flags)          args.fd    = fd;          args.flags = flags; +        args.xdata = xdata;          proc = &conf->fops->proctable[GF_FOP_FSYNCDIR];          if (!proc) { @@ -1096,7 +1125,7 @@ client_fsyncdir (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t flags)                  ret = proc->fn (frame, this, &args);  out:          if (ret) -                STACK_UNWIND_STRICT (fsyncdir, frame, -1, ENOTCONN); +                STACK_UNWIND_STRICT (fsyncdir, frame, -1, ENOTCONN, NULL);  	return 0;  } @@ -1104,7 +1133,7 @@ out:  int32_t -client_statfs (call_frame_t *frame, xlator_t *this, loc_t *loc) +client_statfs (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *xdata)  {          int          ret  = -1;          clnt_conf_t *conf = NULL; @@ -1116,6 +1145,7 @@ client_statfs (call_frame_t *frame, xlator_t *this, loc_t *loc)                  goto out;          args.loc = loc; +        args.xdata = xdata;          proc = &conf->fops->proctable[GF_FOP_STATFS];          if (!proc) { @@ -1128,7 +1158,7 @@ client_statfs (call_frame_t *frame, xlator_t *this, loc_t *loc)                  ret = proc->fn (frame, this, &args);  out:          if (ret) -                STACK_UNWIND_STRICT (statfs, frame, -1, ENOTCONN, NULL); +                STACK_UNWIND_STRICT (statfs, frame, -1, ENOTCONN, NULL, NULL);  	return 0;  } @@ -1254,7 +1284,7 @@ out:  int32_t  client_setxattr (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *dict, -                 int32_t flags) +                 int32_t flags, dict_t *xdata)  {          int                   ret         = -1;          int                   op_ret      = -1; @@ -1302,8 +1332,9 @@ client_setxattr (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *dict,          }          args.loc   = loc; -        args.dict  = dict; +        args.xattr = dict;          args.flags = flags; +        args.xdata = xdata;          proc = &conf->fops->proctable[GF_FOP_SETXATTR];          if (!proc) { @@ -1320,7 +1351,7 @@ client_setxattr (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *dict,          }  out:          if (need_unwind) -                STACK_UNWIND_STRICT (setxattr, frame, op_ret, op_errno); +                STACK_UNWIND_STRICT (setxattr, frame, op_ret, op_errno, NULL);  	return 0;  } @@ -1329,7 +1360,7 @@ out:  int32_t  client_fsetxattr (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)  {          int          ret  = -1;          clnt_conf_t *conf = NULL; @@ -1340,9 +1371,10 @@ client_fsetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd,          if (!conf || !conf->fops)                  goto out; -        args.fd = fd; -        args.dict = dict; +        args.fd    = fd; +        args.xattr = dict;          args.flags = flags; +        args.xdata = xdata;          proc = &conf->fops->proctable[GF_FOP_FSETXATTR];          if (!proc) { @@ -1355,7 +1387,7 @@ client_fsetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd,                  ret = proc->fn (frame, this, &args);  out:          if (ret) -                STACK_UNWIND_STRICT (fsetxattr, frame, -1, ENOTCONN); +                STACK_UNWIND_STRICT (fsetxattr, frame, -1, ENOTCONN, NULL);  	return 0;  } @@ -1365,7 +1397,7 @@ out:  int32_t  client_fgetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd, -                  const char *name) +                  const char *name, dict_t *xdata)  {          int          ret  = -1;          clnt_conf_t *conf = NULL; @@ -1378,6 +1410,7 @@ client_fgetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd,          args.fd = fd;          args.name = name; +        args.xdata = xdata;          proc = &conf->fops->proctable[GF_FOP_FGETXATTR];          if (!proc) { @@ -1390,7 +1423,7 @@ client_fgetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd,                  ret = proc->fn (frame, this, &args);  out:          if (ret) -                STACK_UNWIND_STRICT (fgetxattr, frame, -1, ENOTCONN, NULL); +                STACK_UNWIND_STRICT (fgetxattr, frame, -1, ENOTCONN, NULL, NULL);  	return 0;  } @@ -1399,7 +1432,7 @@ out:  int32_t  client_getxattr (call_frame_t *frame, xlator_t *this, loc_t *loc, -                 const char *name) +                 const char *name, dict_t *xdata)  {          int          ret  = -1;          clnt_conf_t *conf = NULL; @@ -1412,6 +1445,7 @@ client_getxattr (call_frame_t *frame, xlator_t *this, loc_t *loc,          args.name = name;          args.loc  = loc; +        args.xdata = xdata;          proc = &conf->fops->proctable[GF_FOP_GETXATTR];          if (!proc) { @@ -1424,7 +1458,7 @@ client_getxattr (call_frame_t *frame, xlator_t *this, loc_t *loc,                  ret = proc->fn (frame, this, &args);  out:          if (ret) -                STACK_UNWIND_STRICT (getxattr, frame, -1, ENOTCONN, NULL); +                STACK_UNWIND_STRICT (getxattr, frame, -1, ENOTCONN, NULL, NULL);  	return 0;  } @@ -1433,7 +1467,7 @@ out:  int32_t  client_xattrop (call_frame_t *frame, xlator_t *this, loc_t *loc, -                gf_xattrop_flags_t flags, dict_t *dict) +                gf_xattrop_flags_t flags, dict_t *dict, dict_t *xdata)  {          int          ret  = -1;          clnt_conf_t *conf = NULL; @@ -1446,7 +1480,8 @@ client_xattrop (call_frame_t *frame, xlator_t *this, loc_t *loc,          args.loc = loc;          args.flags = flags; -        args.dict = dict; +        args.xattr = dict; +        args.xdata = xdata;          proc = &conf->fops->proctable[GF_FOP_XATTROP];          if (!proc) { @@ -1459,7 +1494,7 @@ client_xattrop (call_frame_t *frame, xlator_t *this, loc_t *loc,                  ret = proc->fn (frame, this, &args);  out:          if (ret) -                STACK_UNWIND_STRICT (xattrop, frame, -1, ENOTCONN, NULL); +                STACK_UNWIND_STRICT (xattrop, frame, -1, ENOTCONN, NULL, NULL);  	return 0;  } @@ -1468,7 +1503,7 @@ out:  int32_t  client_fxattrop (call_frame_t *frame, xlator_t *this, fd_t *fd, -                 gf_xattrop_flags_t flags, dict_t *dict) +                 gf_xattrop_flags_t flags, dict_t *dict, dict_t *xdata)  {          int          ret  = -1;          clnt_conf_t *conf = NULL; @@ -1481,7 +1516,8 @@ client_fxattrop (call_frame_t *frame, xlator_t *this, fd_t *fd,          args.fd = fd;          args.flags = flags; -        args.dict = dict; +        args.xattr = dict; +        args.xdata = xdata;          proc = &conf->fops->proctable[GF_FOP_FXATTROP];          if (!proc) { @@ -1494,7 +1530,7 @@ client_fxattrop (call_frame_t *frame, xlator_t *this, fd_t *fd,                  ret = proc->fn (frame, this, &args);  out:          if (ret) -                STACK_UNWIND_STRICT (fxattrop, frame, -1, ENOTCONN, NULL); +                STACK_UNWIND_STRICT (fxattrop, frame, -1, ENOTCONN, NULL, NULL);  	return 0;  } @@ -1503,7 +1539,7 @@ out:  int32_t  client_removexattr (call_frame_t *frame, xlator_t *this, loc_t *loc, -                    const char *name) +                    const char *name, dict_t *xdata)  {          int          ret  = -1;          clnt_conf_t *conf = NULL; @@ -1516,6 +1552,7 @@ client_removexattr (call_frame_t *frame, xlator_t *this, loc_t *loc,          args.name = name;          args.loc  = loc; +        args.xdata = xdata;          proc = &conf->fops->proctable[GF_FOP_REMOVEXATTR];          if (!proc) { @@ -1528,14 +1565,14 @@ client_removexattr (call_frame_t *frame, xlator_t *this, loc_t *loc,                  ret = proc->fn (frame, this, &args);  out:          if (ret) -                STACK_UNWIND_STRICT (removexattr, frame, -1, ENOTCONN); +                STACK_UNWIND_STRICT (removexattr, frame, -1, ENOTCONN, NULL);  	return 0;  }  int32_t  client_fremovexattr (call_frame_t *frame, xlator_t *this, fd_t *fd, -                     const char *name) +                     const char *name, dict_t *xdata)  {          int          ret  = -1;          clnt_conf_t *conf = NULL; @@ -1548,6 +1585,7 @@ client_fremovexattr (call_frame_t *frame, xlator_t *this, fd_t *fd,          args.name = name;          args.fd  = fd; +        args.xdata = xdata;          proc = &conf->fops->proctable[GF_FOP_FREMOVEXATTR];          if (!proc) { @@ -1560,14 +1598,14 @@ client_fremovexattr (call_frame_t *frame, xlator_t *this, fd_t *fd,                  ret = proc->fn (frame, this, &args);  out:          if (ret) -                STACK_UNWIND_STRICT (fremovexattr, frame, -1, ENOTCONN); +                STACK_UNWIND_STRICT (fremovexattr, frame, -1, ENOTCONN, NULL);  	return 0;  }  int32_t  client_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          ret  = -1;          clnt_conf_t *conf = NULL; @@ -1581,6 +1619,7 @@ client_lk (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t cmd,          args.fd    = fd;          args.cmd   = cmd;          args.flock = lock; +        args.xdata = xdata;          proc = &conf->fops->proctable[GF_FOP_LK];          if (!proc) { @@ -1593,7 +1632,7 @@ client_lk (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t cmd,                  ret = proc->fn (frame, this, &args);  out:          if (ret) -                STACK_UNWIND_STRICT (lk, frame, -1, ENOTCONN, NULL); +                STACK_UNWIND_STRICT (lk, frame, -1, ENOTCONN, NULL, NULL);  	return 0;  } @@ -1601,7 +1640,7 @@ out:  int32_t  client_inodelk (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)  {          int          ret  = -1;          clnt_conf_t *conf = NULL; @@ -1616,6 +1655,7 @@ client_inodelk (call_frame_t *frame, xlator_t *this, const char *volume,          args.cmd    = cmd;          args.flock  = lock;          args.volume = volume; +        args.xdata = xdata;          proc = &conf->fops->proctable[GF_FOP_INODELK];          if (!proc) { @@ -1628,7 +1668,7 @@ client_inodelk (call_frame_t *frame, xlator_t *this, const char *volume,                  ret = proc->fn (frame, this, &args);  out:          if (ret) -                STACK_UNWIND_STRICT (inodelk, frame, -1, ENOTCONN); +                STACK_UNWIND_STRICT (inodelk, frame, -1, ENOTCONN, NULL);  	return 0;  } @@ -1637,7 +1677,7 @@ out:  int32_t  client_finodelk (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)  {          int          ret  = -1;          clnt_conf_t *conf = NULL; @@ -1652,6 +1692,7 @@ client_finodelk (call_frame_t *frame, xlator_t *this, const char *volume,          args.cmd    = cmd;          args.flock  = lock;          args.volume = volume; +        args.xdata = xdata;          proc = &conf->fops->proctable[GF_FOP_FINODELK];          if (!proc) { @@ -1664,7 +1705,7 @@ client_finodelk (call_frame_t *frame, xlator_t *this, const char *volume,                  ret = proc->fn (frame, this, &args);  out:          if (ret) -                STACK_UNWIND_STRICT (finodelk, frame, -1, ENOTCONN); +                STACK_UNWIND_STRICT (finodelk, frame, -1, ENOTCONN, NULL);  	return 0;  } @@ -1673,7 +1714,7 @@ out:  int32_t  client_entrylk (call_frame_t *frame, xlator_t *this, const char *volume,                  loc_t *loc, const char *basename, entrylk_cmd cmd, -                entrylk_type type) +                entrylk_type type, dict_t *xdata)  {          int          ret  = -1;          clnt_conf_t *conf = NULL; @@ -1689,6 +1730,7 @@ client_entrylk (call_frame_t *frame, xlator_t *this, const char *volume,          args.type         = type;          args.volume       = volume;          args.cmd_entrylk  = cmd; +        args.xdata = xdata;          proc = &conf->fops->proctable[GF_FOP_ENTRYLK];          if (!proc) { @@ -1701,7 +1743,7 @@ client_entrylk (call_frame_t *frame, xlator_t *this, const char *volume,                  ret = proc->fn (frame, this, &args);  out:          if (ret) -                STACK_UNWIND_STRICT (entrylk, frame, -1, ENOTCONN); +                STACK_UNWIND_STRICT (entrylk, frame, -1, ENOTCONN, NULL);  	return 0;  } @@ -1711,7 +1753,7 @@ out:  int32_t  client_fentrylk (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)  {          int          ret  = -1;          clnt_conf_t *conf = NULL; @@ -1727,6 +1769,7 @@ client_fentrylk (call_frame_t *frame, xlator_t *this, const char *volume,          args.type         = type;          args.volume       = volume;          args.cmd_entrylk  = cmd; +        args.xdata = xdata;          proc = &conf->fops->proctable[GF_FOP_FENTRYLK];          if (!proc) { @@ -1739,7 +1782,7 @@ client_fentrylk (call_frame_t *frame, xlator_t *this, const char *volume,                  ret = proc->fn (frame, this, &args);  out:          if (ret) -                STACK_UNWIND_STRICT (fentrylk, frame, -1, ENOTCONN); +                STACK_UNWIND_STRICT (fentrylk, frame, -1, ENOTCONN, NULL);  	return 0;  } @@ -1747,7 +1790,7 @@ out:  int32_t  client_rchecksum (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset, -                  int32_t len) +                  int32_t len, dict_t *xdata)  {          int          ret  = -1;          clnt_conf_t *conf = NULL; @@ -1761,6 +1804,7 @@ client_rchecksum (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset,          args.fd = fd;          args.offset = offset;          args.len = len; +        args.xdata = xdata;          proc = &conf->fops->proctable[GF_FOP_RCHECKSUM];          if (!proc) { @@ -1773,14 +1817,14 @@ client_rchecksum (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset,                  ret = proc->fn (frame, this, &args);  out:          if (ret) -                STACK_UNWIND_STRICT (rchecksum, frame, -1, ENOTCONN, 0, NULL); +                STACK_UNWIND_STRICT (rchecksum, frame, -1, ENOTCONN, 0, NULL, NULL);  	return 0;  }  int32_t  client_readdir (call_frame_t *frame, xlator_t *this, fd_t *fd, -                size_t size, off_t off) +                size_t size, off_t off, dict_t *xdata)  {          int          ret  = -1;          clnt_conf_t *conf = NULL; @@ -1794,6 +1838,7 @@ client_readdir (call_frame_t *frame, xlator_t *this, fd_t *fd,          args.fd = fd;          args.size = size;          args.offset = off; +        args.xdata = xdata;          proc = &conf->fops->proctable[GF_FOP_READDIR];          if (!proc) { @@ -1806,7 +1851,7 @@ client_readdir (call_frame_t *frame, xlator_t *this, fd_t *fd,                  ret = proc->fn (frame, this, &args);  out:          if (ret) -                STACK_UNWIND_STRICT (readdir, frame, -1, ENOTCONN, NULL); +                STACK_UNWIND_STRICT (readdir, frame, -1, ENOTCONN, NULL, NULL);  	return 0;  } @@ -1828,7 +1873,7 @@ client_readdirp (call_frame_t *frame, xlator_t *this, fd_t *fd,          args.fd = fd;          args.size = size;          args.offset = off; -        args.dict = dict; +        args.xdata = dict;          proc = &conf->fops->proctable[GF_FOP_READDIRP];          if (!proc) { @@ -1841,7 +1886,7 @@ client_readdirp (call_frame_t *frame, xlator_t *this, fd_t *fd,                  ret = proc->fn (frame, this, &args);  out:          if (ret) -                STACK_UNWIND_STRICT (readdirp, frame, -1, ENOTCONN, NULL); +                STACK_UNWIND_STRICT (readdirp, frame, -1, ENOTCONN, NULL, NULL);  	return 0;  } @@ -1849,7 +1894,7 @@ out:  int32_t  client_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)  {          int          ret  = -1;          clnt_conf_t *conf = NULL; @@ -1863,6 +1908,7 @@ client_setattr (call_frame_t *frame, xlator_t *this, loc_t *loc,          args.loc = loc;          args.stbuf = stbuf;          args.valid = valid; +        args.xdata = xdata;          proc = &conf->fops->proctable[GF_FOP_SETATTR];          if (!proc) { @@ -1875,14 +1921,14 @@ client_setattr (call_frame_t *frame, xlator_t *this, loc_t *loc,                  ret = proc->fn (frame, this, &args);  out:          if (ret) -                STACK_UNWIND_STRICT (setattr, frame, -1, ENOTCONN, NULL, NULL); +                STACK_UNWIND_STRICT (setattr, frame, -1, ENOTCONN, NULL, NULL, NULL);  	return 0;  }  int32_t  client_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)  {          int          ret  = -1;          clnt_conf_t *conf = NULL; @@ -1896,6 +1942,7 @@ client_fsetattr (call_frame_t *frame, xlator_t *this, fd_t *fd,          args.fd = fd;          args.stbuf = stbuf;          args.valid = valid; +        args.xdata = xdata;          proc = &conf->fops->proctable[GF_FOP_FSETATTR];          if (!proc) { @@ -1908,7 +1955,7 @@ client_fsetattr (call_frame_t *frame, xlator_t *this, fd_t *fd,                  ret = proc->fn (frame, this, &args);  out:          if (ret) -                STACK_UNWIND_STRICT (fsetattr, frame, -1, ENOTCONN, NULL, NULL); +                STACK_UNWIND_STRICT (fsetattr, frame, -1, ENOTCONN, NULL, NULL, NULL);  	return 0;  } diff --git a/xlators/protocol/client/src/client.h b/xlators/protocol/client/src/client.h index 91a411e8a..1ca7b2e57 100644 --- a/xlators/protocol/client/src/client.h +++ b/xlators/protocol/client/src/client.h @@ -169,13 +169,11 @@ typedef struct client_local {  typedef struct client_args {          loc_t              *loc;          fd_t               *fd; -        dict_t             *xattr_req;          const char         *linkname;          struct iobref      *iobref;          struct iovec       *vector;          dict_t             *xattr;          struct iatt        *stbuf; -        dict_t             *dict;          loc_t              *oldloc;          loc_t              *newloc;          const char         *name; @@ -189,7 +187,6 @@ typedef struct client_args {          mode_t              mode;          dev_t               rdev;          int32_t             flags; -        int32_t             wbflags;          int32_t             count;          int32_t             datasync;          entrylk_cmd         cmd_entrylk; @@ -197,6 +194,9 @@ typedef struct client_args {          gf_xattrop_flags_t  optype;          int32_t             valid;          int32_t             len; + +        mode_t              umask; +        dict_t             *xdata;  } clnt_args_t;  typedef ssize_t (*gfs_serialize_t) (struct iovec outmsg, void *args); diff --git a/xlators/protocol/client/src/client3_1-fops.c b/xlators/protocol/client/src/client3_1-fops.c index fa9b93039..e1c144a8a 100644 --- a/xlators/protocol/client/src/client3_1-fops.c +++ b/xlators/protocol/client/src/client3_1-fops.c @@ -153,6 +153,7 @@ client3_1_symlink_cbk (struct rpc_req *req, struct iovec *iov, int count,          clnt_local_t     *local      = NULL;          inode_t          *inode      = NULL;          xlator_t         *this       = NULL; +        dict_t           *xdata      = NULL;          this = THIS; @@ -181,6 +182,10 @@ client3_1_symlink_cbk (struct rpc_req *req, struct iovec *iov, int count,                  gf_stat_to_iatt (&rsp.postparent, &postparent);          } +        GF_PROTOCOL_DICT_UNSERIALIZE (this, xdata, (rsp.xdata.xdata_val), +                                      (rsp.xdata.xdata_len), ret, +                                      rsp.op_errno, out); +  out:          if (rsp.op_ret == -1) {                  gf_log (this->name, GF_LOG_WARNING, @@ -191,7 +196,13 @@ out:          CLIENT_STACK_UNWIND (symlink, frame, rsp.op_ret,                               gf_error_to_errno (rsp.op_errno), inode, &stbuf, -                             &preparent, &postparent); +                             &preparent, &postparent, xdata); + +        if (rsp.xdata.xdata_val) +                free (rsp.xdata.xdata_val); + +        if (xdata) +                dict_unref (xdata);          return 0;  } @@ -210,6 +221,7 @@ client3_1_mknod_cbk (struct rpc_req *req, struct iovec *iov, int count,          clnt_local_t     *local      = NULL;          inode_t          *inode      = NULL;          xlator_t         *this       = NULL; +        dict_t           *xdata      = NULL;          this = THIS; @@ -239,6 +251,10 @@ client3_1_mknod_cbk (struct rpc_req *req, struct iovec *iov, int count,                  gf_stat_to_iatt (&rsp.postparent, &postparent);          } +        GF_PROTOCOL_DICT_UNSERIALIZE (this, xdata, (rsp.xdata.xdata_val), +                                      (rsp.xdata.xdata_len), ret, +                                      rsp.op_errno, out); +  out:          if (rsp.op_ret == -1) {                  gf_log (this->name, GF_LOG_WARNING, @@ -249,7 +265,14 @@ out:          CLIENT_STACK_UNWIND (mknod, frame, rsp.op_ret,                               gf_error_to_errno (rsp.op_errno), inode, -                             &stbuf, &preparent, &postparent); +                             &stbuf, &preparent, &postparent, xdata); + +        if (rsp.xdata.xdata_val) +                free (rsp.xdata.xdata_val); + +        if (xdata) +                dict_unref (xdata); +          return 0;  } @@ -266,6 +289,7 @@ client3_1_mkdir_cbk (struct rpc_req *req, struct iovec *iov, int count,          clnt_local_t     *local      = NULL;          inode_t          *inode      = NULL;          xlator_t         *this       = NULL; +        dict_t           *xdata      = NULL;          this = THIS; @@ -294,6 +318,10 @@ client3_1_mkdir_cbk (struct rpc_req *req, struct iovec *iov, int count,                  gf_stat_to_iatt (&rsp.postparent, &postparent);          } +        GF_PROTOCOL_DICT_UNSERIALIZE (this, xdata, (rsp.xdata.xdata_val), +                                      (rsp.xdata.xdata_len), ret, +                                      rsp.op_errno, out); +  out:          if (rsp.op_ret == -1) {                  gf_log (this->name, GF_LOG_WARNING, @@ -304,7 +332,13 @@ out:          CLIENT_STACK_UNWIND (mkdir, frame, rsp.op_ret,                               gf_error_to_errno (rsp.op_errno), inode, -                             &stbuf, &preparent, &postparent); +                             &stbuf, &preparent, &postparent, xdata); + +        if (rsp.xdata.xdata_val) +                free (rsp.xdata.xdata_val); + +        if (xdata) +                dict_unref (xdata);          return 0;  } @@ -320,7 +354,9 @@ client3_1_open_cbk (struct rpc_req *req, struct iovec *iov, int count,          fd_t          *fd    = NULL;          int            ret   = 0;          gfs3_open_rsp  rsp   = {0,}; -        xlator_t         *this       = NULL; +        xlator_t *this       = NULL; +        dict_t  *xdata       = NULL; +          this = THIS; @@ -371,6 +407,10 @@ client3_1_open_cbk (struct rpc_req *req, struct iovec *iov, int count,                  pthread_mutex_unlock (&conf->lock);          } +        GF_PROTOCOL_DICT_UNSERIALIZE (this, xdata, (rsp.xdata.xdata_val), +                                      (rsp.xdata.xdata_len), ret, +                                      rsp.op_errno, out); +  out:          if (rsp.op_ret == -1) {                  gf_log (this->name, GF_LOG_WARNING, @@ -380,7 +420,13 @@ out:          }          CLIENT_STACK_UNWIND (open, frame, rsp.op_ret, -                             gf_error_to_errno (rsp.op_errno), fd); +                             gf_error_to_errno (rsp.op_errno), fd, xdata); + +        if (rsp.xdata.xdata_val) +                free (rsp.xdata.xdata_val); + +        if (xdata) +                dict_unref (xdata);          return 0;  } @@ -394,7 +440,9 @@ client3_1_stat_cbk (struct rpc_req *req, struct iovec *iov, int count,          call_frame_t   *frame = NULL;          struct iatt  iatt = {0,};          int ret = 0; -        xlator_t         *this       = NULL; +        xlator_t *this       = NULL; +        dict_t  *xdata       = NULL; +          this = THIS; @@ -417,13 +465,24 @@ client3_1_stat_cbk (struct rpc_req *req, struct iovec *iov, int count,                  gf_stat_to_iatt (&rsp.stat, &iatt);          } +        GF_PROTOCOL_DICT_UNSERIALIZE (this, xdata, (rsp.xdata.xdata_val), +                                      (rsp.xdata.xdata_len), ret, +                                      rsp.op_errno, out); +  out:          if (rsp.op_ret == -1) {                  gf_log (this->name, GF_LOG_WARNING, "remote operation failed: %s",                          strerror (gf_error_to_errno (rsp.op_errno)));          } +          CLIENT_STACK_UNWIND (stat, frame, rsp.op_ret, -                             gf_error_to_errno (rsp.op_errno), &iatt); +                             gf_error_to_errno (rsp.op_errno), &iatt, xdata); + +        if (rsp.xdata.xdata_val) +                free (rsp.xdata.xdata_val); + +        if (xdata) +                dict_unref (xdata);          return 0;  } @@ -436,7 +495,9 @@ client3_1_readlink_cbk (struct rpc_req *req, struct iovec *iov, int count,          call_frame_t   *frame = NULL;          struct iatt  iatt = {0,};          int ret = 0; -        xlator_t         *this       = NULL; +        xlator_t *this       = NULL; +        dict_t  *xdata       = NULL; +          this = THIS; @@ -459,19 +520,31 @@ client3_1_readlink_cbk (struct rpc_req *req, struct iovec *iov, int count,                  gf_stat_to_iatt (&rsp.buf, &iatt);          } +        GF_PROTOCOL_DICT_UNSERIALIZE (this, xdata, (rsp.xdata.xdata_val), +                                      (rsp.xdata.xdata_len), ret, +                                      rsp.op_errno, out); +  out:          if (rsp.op_ret == -1) {                  gf_log (this->name, GF_LOG_WARNING, "remote operation failed: %s",                          strerror (gf_error_to_errno (rsp.op_errno)));          } +          CLIENT_STACK_UNWIND (readlink, frame, rsp.op_ret, -                             gf_error_to_errno (rsp.op_errno), rsp.path, &iatt); +                             gf_error_to_errno (rsp.op_errno), rsp.path, +                             &iatt, xdata);          /* This is allocated by the libc while decoding RPC msg */          /* Hence no 'GF_FREE', but just 'free' */          if (rsp.path)                  free (rsp.path); +        if (rsp.xdata.xdata_val) +                free (rsp.xdata.xdata_val); + +        if (xdata) +                dict_unref (xdata); +          return 0;  } @@ -484,7 +557,9 @@ client3_1_unlink_cbk (struct rpc_req *req, struct iovec *iov, int count,          struct iatt      preparent  = {0,};          struct iatt      postparent = {0,};          int              ret        = 0; -        xlator_t         *this       = NULL; +        xlator_t *this       = NULL; +        dict_t  *xdata       = NULL; +          this = THIS; @@ -508,6 +583,10 @@ client3_1_unlink_cbk (struct rpc_req *req, struct iovec *iov, int count,                  gf_stat_to_iatt (&rsp.postparent, &postparent);          } +        GF_PROTOCOL_DICT_UNSERIALIZE (this, xdata, (rsp.xdata.xdata_val), +                                      (rsp.xdata.xdata_len), ret, +                                      rsp.op_errno, out); +  out:          if (rsp.op_ret == -1) {                  gf_log (this->name, GF_LOG_WARNING, "remote operation failed: %s", @@ -515,7 +594,13 @@ out:          }          CLIENT_STACK_UNWIND (unlink, frame, rsp.op_ret,                               gf_error_to_errno (rsp.op_errno), &preparent, -                             &postparent); +                             &postparent, xdata); + +        if (rsp.xdata.xdata_val) +                free (rsp.xdata.xdata_val); + +        if (xdata) +                dict_unref (xdata);          return 0;  } @@ -529,7 +614,9 @@ client3_1_rmdir_cbk (struct rpc_req *req, struct iovec *iov, int count,          struct iatt  preparent  = {0,};          struct iatt  postparent = {0,};          int ret = 0; -        xlator_t         *this       = NULL; +        xlator_t *this       = NULL; +        dict_t  *xdata       = NULL; +          this = THIS; @@ -553,6 +640,10 @@ client3_1_rmdir_cbk (struct rpc_req *req, struct iovec *iov, int count,                  gf_stat_to_iatt (&rsp.postparent, &postparent);          } +        GF_PROTOCOL_DICT_UNSERIALIZE (this, xdata, (rsp.xdata.xdata_val), +                                      (rsp.xdata.xdata_len), ret, +                                      rsp.op_errno, out); +  out:          if (rsp.op_ret == -1) {                  gf_log (this->name, GF_LOG_WARNING, "remote operation failed: %s", @@ -560,7 +651,13 @@ out:          }          CLIENT_STACK_UNWIND (rmdir, frame, rsp.op_ret,                               gf_error_to_errno (rsp.op_errno), &preparent, -                             &postparent); +                             &postparent, xdata); + +        if (rsp.xdata.xdata_val) +                free (rsp.xdata.xdata_val); + +        if (xdata) +                dict_unref (xdata);          return 0;  } @@ -575,7 +672,9 @@ client3_1_truncate_cbk (struct rpc_req *req, struct iovec *iov, int count,          struct iatt  prestat  = {0,};          struct iatt  poststat = {0,};          int ret = 0; -        xlator_t         *this       = NULL; +        xlator_t *this       = NULL; +        dict_t  *xdata       = NULL; +          this = THIS; @@ -599,6 +698,10 @@ client3_1_truncate_cbk (struct rpc_req *req, struct iovec *iov, int count,                  gf_stat_to_iatt (&rsp.poststat, &poststat);          } +        GF_PROTOCOL_DICT_UNSERIALIZE (this, xdata, (rsp.xdata.xdata_val), +                                      (rsp.xdata.xdata_len), ret, +                                      rsp.op_errno, out); +  out:          if (rsp.op_ret == -1) {                  gf_log (this->name, GF_LOG_WARNING, "remote operation failed: %s", @@ -606,7 +709,13 @@ out:          }          CLIENT_STACK_UNWIND (truncate, frame, rsp.op_ret,                               gf_error_to_errno (rsp.op_errno), &prestat, -                             &poststat); +                             &poststat, xdata); + +        if (rsp.xdata.xdata_val) +                free (rsp.xdata.xdata_val); + +        if (xdata) +                dict_unref (xdata);          return 0;  } @@ -620,7 +729,9 @@ client3_1_statfs_cbk (struct rpc_req *req, struct iovec *iov, int count,          call_frame_t   *frame = NULL;          struct statvfs  statfs = {0,};          int ret = 0; -        xlator_t         *this       = NULL; +        xlator_t *this       = NULL; +        dict_t  *xdata       = NULL; +          this = THIS; @@ -643,13 +754,23 @@ client3_1_statfs_cbk (struct rpc_req *req, struct iovec *iov, int count,                  gf_statfs_to_statfs (&rsp.statfs, &statfs);          } +        GF_PROTOCOL_DICT_UNSERIALIZE (this, xdata, (rsp.xdata.xdata_val), +                                      (rsp.xdata.xdata_len), ret, +                                      rsp.op_errno, out); +  out:          if (rsp.op_ret == -1) {                  gf_log (this->name, GF_LOG_WARNING, "remote operation failed: %s",                          strerror (gf_error_to_errno (rsp.op_errno)));          }          CLIENT_STACK_UNWIND (statfs, frame, rsp.op_ret, -                             gf_error_to_errno (rsp.op_errno), &statfs); +                             gf_error_to_errno (rsp.op_errno), &statfs, xdata); + +        if (rsp.xdata.xdata_val) +                free (rsp.xdata.xdata_val); + +        if (xdata) +                dict_unref (xdata);          return 0;  } @@ -664,7 +785,9 @@ client3_1_writev_cbk (struct rpc_req *req, struct iovec *iov, int count,          struct iatt  prestat  = {0,};          struct iatt  poststat = {0,};          int ret = 0; -        xlator_t         *this       = NULL; +        xlator_t *this       = NULL; +        dict_t  *xdata       = NULL; +          this = THIS; @@ -689,6 +812,10 @@ client3_1_writev_cbk (struct rpc_req *req, struct iovec *iov, int count,                  gf_stat_to_iatt (&rsp.poststat, &poststat);          } +        GF_PROTOCOL_DICT_UNSERIALIZE (this, xdata, (rsp.xdata.xdata_val), +                                      (rsp.xdata.xdata_len), ret, +                                      rsp.op_errno, out); +  out:          if (rsp.op_ret == -1) {                  gf_log (this->name, GF_LOG_WARNING, "remote operation failed: %s", @@ -696,7 +823,13 @@ out:          }          CLIENT_STACK_UNWIND (writev, frame, rsp.op_ret,                               gf_error_to_errno (rsp.op_errno), &prestat, -                             &poststat); +                             &poststat, xdata); + +        if (rsp.xdata.xdata_val) +                free (rsp.xdata.xdata_val); + +        if (xdata) +                dict_unref (xdata);          return 0;  } @@ -707,7 +840,9 @@ client3_1_flush_cbk (struct rpc_req *req, struct iovec *iov, int count,  {          call_frame_t    *frame      = NULL;          clnt_local_t  *local      = NULL; -        xlator_t        *this       = NULL; +        xlator_t *this       = NULL; +        dict_t  *xdata       = NULL; +          gf_common_rsp    rsp        = {0,};          int              ret        = 0; @@ -736,6 +871,10 @@ client3_1_flush_cbk (struct rpc_req *req, struct iovec *iov, int count,                          lkowner_utoa (&local->owner), ret);          } +        GF_PROTOCOL_DICT_UNSERIALIZE (this, xdata, (rsp.xdata.xdata_val), +                                      (rsp.xdata.xdata_len), ret, +                                      rsp.op_errno, out); +  out:          if (rsp.op_ret == -1) {                  gf_log (this->name, GF_LOG_WARNING, @@ -743,7 +882,13 @@ out:                          strerror (gf_error_to_errno (rsp.op_errno)));          }          CLIENT_STACK_UNWIND (flush, frame, rsp.op_ret, -                             gf_error_to_errno (rsp.op_errno)); +                             gf_error_to_errno (rsp.op_errno), xdata); + +        if (rsp.xdata.xdata_val) +                free (rsp.xdata.xdata_val); + +        if (xdata) +                dict_unref (xdata);          return 0;  } @@ -757,7 +902,9 @@ client3_1_fsync_cbk (struct rpc_req *req, struct iovec *iov, int count,          struct iatt  prestat  = {0,};          struct iatt  poststat = {0,};          int ret = 0; -        xlator_t         *this       = NULL; +        xlator_t *this       = NULL; +        dict_t  *xdata       = NULL; +          this = THIS; @@ -782,6 +929,10 @@ client3_1_fsync_cbk (struct rpc_req *req, struct iovec *iov, int count,                  gf_stat_to_iatt (&rsp.poststat, &poststat);          } +        GF_PROTOCOL_DICT_UNSERIALIZE (this, xdata, (rsp.xdata.xdata_val), +                                      (rsp.xdata.xdata_len), ret, +                                      rsp.op_errno, out); +  out:          if (rsp.op_ret == -1) {                  gf_log (this->name, GF_LOG_WARNING, "remote operation failed: %s", @@ -789,7 +940,13 @@ out:          }          CLIENT_STACK_UNWIND (fsync, frame, rsp.op_ret,                               gf_error_to_errno (rsp.op_errno), &prestat, -                             &poststat); +                             &poststat, xdata); + +        if (rsp.xdata.xdata_val) +                free (rsp.xdata.xdata_val); + +        if (xdata) +                dict_unref (xdata);          return 0;  } @@ -801,7 +958,9 @@ client3_1_setxattr_cbk (struct rpc_req *req, struct iovec *iov, int count,          call_frame_t    *frame      = NULL;          gf_common_rsp    rsp        = {0,};          int              ret        = 0; -        xlator_t         *this       = NULL; +        xlator_t *this       = NULL; +        dict_t  *xdata       = NULL; +          this = THIS; @@ -821,13 +980,23 @@ client3_1_setxattr_cbk (struct rpc_req *req, struct iovec *iov, int count,                  goto out;          } +        GF_PROTOCOL_DICT_UNSERIALIZE (this, xdata, (rsp.xdata.xdata_val), +                                      (rsp.xdata.xdata_len), ret, +                                      rsp.op_errno, out); +  out:          if (rsp.op_ret == -1) {                  gf_log (this->name, GF_LOG_WARNING, "remote operation failed: %s",                          strerror (gf_error_to_errno (rsp.op_errno)));          }          CLIENT_STACK_UNWIND (setxattr, frame, rsp.op_ret, -                             gf_error_to_errno (rsp.op_errno)); +                             gf_error_to_errno (rsp.op_errno), xdata); + +        if (rsp.xdata.xdata_val) +                free (rsp.xdata.xdata_val); + +        if (xdata) +                dict_unref (xdata);          return 0;  } @@ -842,7 +1011,9 @@ client3_1_getxattr_cbk (struct rpc_req *req, struct iovec *iov, int count,          gfs3_getxattr_rsp  rsp      = {0,};          int                ret      = 0;          clnt_local_t    *local    = NULL; -        xlator_t         *this       = NULL; +        xlator_t *this       = NULL; +        dict_t  *xdata       = NULL; +          this = THIS; @@ -871,6 +1042,10 @@ client3_1_getxattr_cbk (struct rpc_req *req, struct iovec *iov, int count,                                                op_errno, out);          } +        GF_PROTOCOL_DICT_UNSERIALIZE (this, xdata, (rsp.xdata.xdata_val), +                                      (rsp.xdata.xdata_len), ret, +                                      op_errno, out); +  out:          if (rsp.op_ret == -1) {                  gf_log (this->name, GF_LOG_WARNING, @@ -879,14 +1054,17 @@ out:                          (local) ? local->loc.path : "--");          } -        CLIENT_STACK_UNWIND (getxattr, frame, rsp.op_ret, op_errno, dict); +        CLIENT_STACK_UNWIND (getxattr, frame, rsp.op_ret, op_errno, dict, xdata); -        if (rsp.dict.dict_val) { -                /* don't use GF_FREE, this memory was allocated by libc -                 */ +        /* don't use GF_FREE, this memory was allocated by libc */ +        if (rsp.dict.dict_val)                  free (rsp.dict.dict_val); -                rsp.dict.dict_val = NULL; -        } + +        if (rsp.xdata.xdata_val) +                free (rsp.xdata.xdata_val); + +        if (xdata) +                dict_unref (xdata);          if (dict)                  dict_unref (dict); @@ -904,7 +1082,9 @@ client3_1_fgetxattr_cbk (struct rpc_req *req, struct iovec *iov, int count,          int                 ret      = 0;          int                 op_errno = EINVAL;          clnt_local_t     *local    = NULL; -        xlator_t         *this       = NULL; +        xlator_t *this       = NULL; +        dict_t  *xdata       = NULL; +          this = THIS; @@ -931,6 +1111,10 @@ client3_1_fgetxattr_cbk (struct rpc_req *req, struct iovec *iov, int count,                                                (rsp.dict.dict_len), rsp.op_ret,                                                op_errno, out);          } +        GF_PROTOCOL_DICT_UNSERIALIZE (this, xdata, (rsp.xdata.xdata_val), +                                      (rsp.xdata.xdata_len), ret, +                                      op_errno, out); +  out:          if (rsp.op_ret == -1) {                  gf_log (this->name, GF_LOG_WARNING, @@ -938,13 +1122,16 @@ out:                          strerror (op_errno));          } -        CLIENT_STACK_UNWIND (fgetxattr, frame, rsp.op_ret, op_errno, dict); -        if (rsp.dict.dict_val) { -                /* don't use GF_FREE, this memory was allocated by libc -                 */ +        CLIENT_STACK_UNWIND (fgetxattr, frame, rsp.op_ret, op_errno, dict, xdata); + +        if (rsp.dict.dict_val)                  free (rsp.dict.dict_val); -                rsp.dict.dict_val = NULL; -        } + +        if (rsp.xdata.xdata_val) +                free (rsp.xdata.xdata_val); + +        if (xdata) +                dict_unref (xdata);          if (dict)                  dict_unref (dict); @@ -959,7 +1146,8 @@ client3_1_removexattr_cbk (struct rpc_req *req, struct iovec *iov, int count,          call_frame_t    *frame      = NULL;          gf_common_rsp    rsp        = {0,};          int              ret        = 0; -        xlator_t         *this       = NULL; +        xlator_t *this       = NULL; +        dict_t  *xdata       = NULL;          this = THIS; @@ -979,13 +1167,24 @@ client3_1_removexattr_cbk (struct rpc_req *req, struct iovec *iov, int count,                  goto out;          } +        GF_PROTOCOL_DICT_UNSERIALIZE (this, xdata, (rsp.xdata.xdata_val), +                                      (rsp.xdata.xdata_len), ret, +                                      rsp.op_errno, out); +  out:          if (rsp.op_ret == -1) {                  gf_log (this->name, GF_LOG_WARNING, "remote operation failed: %s",                          strerror (gf_error_to_errno (rsp.op_errno)));          } +          CLIENT_STACK_UNWIND (removexattr, frame, rsp.op_ret, -                             gf_error_to_errno (rsp.op_errno)); +                             gf_error_to_errno (rsp.op_errno), xdata); + +        if (rsp.xdata.xdata_val) +                free (rsp.xdata.xdata_val); + +        if (xdata) +                dict_unref (xdata);          return 0;  } @@ -997,7 +1196,9 @@ client3_1_fremovexattr_cbk (struct rpc_req *req, struct iovec *iov, int count,          call_frame_t    *frame      = NULL;          gf_common_rsp    rsp        = {0,};          int              ret        = 0; -        xlator_t         *this       = NULL; +        xlator_t *this       = NULL; +        dict_t  *xdata       = NULL; +          this = THIS; @@ -1017,13 +1218,23 @@ client3_1_fremovexattr_cbk (struct rpc_req *req, struct iovec *iov, int count,                  goto out;          } +        GF_PROTOCOL_DICT_UNSERIALIZE (this, xdata, (rsp.xdata.xdata_val), +                                      (rsp.xdata.xdata_len), ret, +                                      rsp.op_errno, out); +  out:          if (rsp.op_ret == -1) {                  gf_log (this->name, GF_LOG_WARNING, "remote operation failed: %s",                          strerror (gf_error_to_errno (rsp.op_errno)));          }          CLIENT_STACK_UNWIND (fremovexattr, frame, rsp.op_ret, -                             gf_error_to_errno (rsp.op_errno)); +                             gf_error_to_errno (rsp.op_errno), xdata); + +        if (rsp.xdata.xdata_val) +                free (rsp.xdata.xdata_val); + +        if (xdata) +                dict_unref (xdata);          return 0;  } @@ -1035,7 +1246,9 @@ client3_1_fsyncdir_cbk (struct rpc_req *req, struct iovec *iov, int count,          call_frame_t    *frame      = NULL;          gf_common_rsp    rsp        = {0,};          int              ret        = 0; -        xlator_t         *this       = NULL; +        xlator_t *this       = NULL; +        dict_t  *xdata       = NULL; +          this = THIS; @@ -1054,13 +1267,23 @@ client3_1_fsyncdir_cbk (struct rpc_req *req, struct iovec *iov, int count,                  goto out;          } +        GF_PROTOCOL_DICT_UNSERIALIZE (this, xdata, (rsp.xdata.xdata_val), +                                      (rsp.xdata.xdata_len), ret, +                                      rsp.op_errno, out); +  out:          if (rsp.op_ret == -1) {                  gf_log (this->name, GF_LOG_WARNING, "remote operation failed: %s",                          strerror (gf_error_to_errno (rsp.op_errno)));          }          CLIENT_STACK_UNWIND (fsyncdir, frame, rsp.op_ret, -                             gf_error_to_errno (rsp.op_errno)); +                             gf_error_to_errno (rsp.op_errno), xdata); + +        if (rsp.xdata.xdata_val) +                free (rsp.xdata.xdata_val); + +        if (xdata) +                dict_unref (xdata);          return 0;  } @@ -1072,7 +1295,9 @@ client3_1_access_cbk (struct rpc_req *req, struct iovec *iov, int count,          call_frame_t    *frame      = NULL;          gf_common_rsp    rsp        = {0,};          int              ret        = 0; -        xlator_t         *this       = NULL; +        xlator_t *this       = NULL; +        dict_t  *xdata       = NULL; +          this = THIS; @@ -1091,13 +1316,23 @@ client3_1_access_cbk (struct rpc_req *req, struct iovec *iov, int count,                  goto out;          } +        GF_PROTOCOL_DICT_UNSERIALIZE (this, xdata, (rsp.xdata.xdata_val), +                                      (rsp.xdata.xdata_len), ret, +                                      rsp.op_errno, out); +  out:          if (rsp.op_ret == -1) {                  gf_log (this->name, GF_LOG_WARNING, "remote operation failed: %s",                          strerror (gf_error_to_errno (rsp.op_errno)));          }          CLIENT_STACK_UNWIND (access, frame, rsp.op_ret, -                             gf_error_to_errno (rsp.op_errno)); +                             gf_error_to_errno (rsp.op_errno), xdata); + +        if (rsp.xdata.xdata_val) +                free (rsp.xdata.xdata_val); + +        if (xdata) +                dict_unref (xdata);          return 0;  } @@ -1112,7 +1347,9 @@ client3_1_ftruncate_cbk (struct rpc_req *req, struct iovec *iov, int count,          struct iatt  prestat  = {0,};          struct iatt  poststat = {0,};          int ret = 0; -        xlator_t         *this       = NULL; +        xlator_t *this       = NULL; +        dict_t  *xdata       = NULL; +          this = THIS; @@ -1136,6 +1373,10 @@ client3_1_ftruncate_cbk (struct rpc_req *req, struct iovec *iov, int count,                  gf_stat_to_iatt (&rsp.poststat, &poststat);          } +        GF_PROTOCOL_DICT_UNSERIALIZE (this, xdata, (rsp.xdata.xdata_val), +                                      (rsp.xdata.xdata_len), ret, +                                      rsp.op_errno, out); +  out:          if (rsp.op_ret == -1) {                  gf_log (this->name, GF_LOG_WARNING, "remote operation failed: %s", @@ -1143,7 +1384,13 @@ out:          }          CLIENT_STACK_UNWIND (ftruncate, frame, rsp.op_ret,                               gf_error_to_errno (rsp.op_errno), &prestat, -                             &poststat); +                             &poststat, xdata); + +        if (rsp.xdata.xdata_val) +                free (rsp.xdata.xdata_val); + +        if (xdata) +                dict_unref (xdata);          return 0;  } @@ -1156,7 +1403,9 @@ client3_1_fstat_cbk (struct rpc_req *req, struct iovec *iov, int count,          call_frame_t   *frame = NULL;          struct iatt  stat  = {0,};          int ret = 0; -        xlator_t         *this       = NULL; +        xlator_t *this       = NULL; +        dict_t  *xdata       = NULL; +          this = THIS; @@ -1179,13 +1428,23 @@ client3_1_fstat_cbk (struct rpc_req *req, struct iovec *iov, int count,                  gf_stat_to_iatt (&rsp.stat, &stat);          } +        GF_PROTOCOL_DICT_UNSERIALIZE (this, xdata, (rsp.xdata.xdata_val), +                                      (rsp.xdata.xdata_len), ret, +                                      rsp.op_errno, out); +  out:          if (rsp.op_ret == -1) {                  gf_log (this->name, GF_LOG_WARNING, "remote operation failed: %s",                          strerror (gf_error_to_errno (rsp.op_errno)));          }          CLIENT_STACK_UNWIND (fstat, frame, rsp.op_ret, -                             gf_error_to_errno (rsp.op_errno), &stat); +                             gf_error_to_errno (rsp.op_errno), &stat,  xdata); + +        if (rsp.xdata.xdata_val) +                free (rsp.xdata.xdata_val); + +        if (xdata) +                dict_unref (xdata);          return 0;  } @@ -1198,7 +1457,9 @@ client3_1_inodelk_cbk (struct rpc_req *req, struct iovec *iov, int count,          call_frame_t    *frame      = NULL;          gf_common_rsp    rsp        = {0,};          int              ret        = 0; -        xlator_t         *this       = NULL; +        xlator_t *this       = NULL; +        dict_t  *xdata       = NULL; +          this = THIS; @@ -1217,6 +1478,10 @@ client3_1_inodelk_cbk (struct rpc_req *req, struct iovec *iov, int count,                  goto out;          } +        GF_PROTOCOL_DICT_UNSERIALIZE (this, xdata, (rsp.xdata.xdata_val), +                                      (rsp.xdata.xdata_len), ret, +                                      rsp.op_errno, out); +  out:          if ((rsp.op_ret == -1) &&              (EAGAIN != gf_error_to_errno (rsp.op_errno))) { @@ -1224,7 +1489,13 @@ out:                          strerror (gf_error_to_errno (rsp.op_errno)));          }          CLIENT_STACK_UNWIND (inodelk, frame, rsp.op_ret, -                             gf_error_to_errno (rsp.op_errno)); +                             gf_error_to_errno (rsp.op_errno), xdata); + +        if (rsp.xdata.xdata_val) +                free (rsp.xdata.xdata_val); + +        if (xdata) +                dict_unref (xdata);          return 0;  } @@ -1236,7 +1507,9 @@ client3_1_finodelk_cbk (struct rpc_req *req, struct iovec *iov, int count,          call_frame_t    *frame      = NULL;          gf_common_rsp    rsp        = {0,};          int              ret        = 0; -        xlator_t         *this       = NULL; +        xlator_t *this       = NULL; +        dict_t  *xdata       = NULL; +          this = THIS; @@ -1255,6 +1528,10 @@ client3_1_finodelk_cbk (struct rpc_req *req, struct iovec *iov, int count,                  goto out;          } +        GF_PROTOCOL_DICT_UNSERIALIZE (this, xdata, (rsp.xdata.xdata_val), +                                      (rsp.xdata.xdata_len), ret, +                                      rsp.op_errno, out); +  out:          if ((rsp.op_ret == -1) &&              (EAGAIN != gf_error_to_errno (rsp.op_errno))) { @@ -1262,7 +1539,13 @@ out:                          strerror (gf_error_to_errno (rsp.op_errno)));          }          CLIENT_STACK_UNWIND (finodelk, frame, rsp.op_ret, -                             gf_error_to_errno (rsp.op_errno)); +                             gf_error_to_errno (rsp.op_errno), xdata); + +        if (rsp.xdata.xdata_val) +                free (rsp.xdata.xdata_val); + +        if (xdata) +                dict_unref (xdata);          return 0;  } @@ -1274,7 +1557,9 @@ client3_1_entrylk_cbk (struct rpc_req *req, struct iovec *iov, int count,          call_frame_t    *frame      = NULL;          gf_common_rsp    rsp        = {0,};          int              ret        = 0; -        xlator_t         *this       = NULL; +        xlator_t *this       = NULL; +        dict_t  *xdata       = NULL; +          this = THIS; @@ -1293,15 +1578,25 @@ client3_1_entrylk_cbk (struct rpc_req *req, struct iovec *iov, int count,                  goto out;          } -out: +        GF_PROTOCOL_DICT_UNSERIALIZE (this, xdata, (rsp.xdata.xdata_val), +                                      (rsp.xdata.xdata_len), ret, +                                      rsp.op_errno, out); +out:          if ((rsp.op_ret == -1) &&              (EAGAIN != gf_error_to_errno (rsp.op_errno))) {                  gf_log (this->name, GF_LOG_WARNING, "remote operation failed: %s",                          strerror (gf_error_to_errno (rsp.op_errno)));          } +          CLIENT_STACK_UNWIND (entrylk, frame, rsp.op_ret, -                             gf_error_to_errno (rsp.op_errno)); +                             gf_error_to_errno (rsp.op_errno), xdata); + +        if (rsp.xdata.xdata_val) +                free (rsp.xdata.xdata_val); + +        if (xdata) +                dict_unref (xdata);          return 0;  } @@ -1313,7 +1608,9 @@ client3_1_fentrylk_cbk (struct rpc_req *req, struct iovec *iov, int count,          call_frame_t    *frame      = NULL;          gf_common_rsp    rsp        = {0,};          int              ret        = 0; -        xlator_t         *this       = NULL; +        xlator_t *this       = NULL; +        dict_t  *xdata       = NULL; +          this = THIS; @@ -1332,14 +1629,25 @@ client3_1_fentrylk_cbk (struct rpc_req *req, struct iovec *iov, int count,                  goto out;          } +        GF_PROTOCOL_DICT_UNSERIALIZE (this, xdata, (rsp.xdata.xdata_val), +                                      (rsp.xdata.xdata_len), ret, +                                      rsp.op_errno, out); +  out:          if ((rsp.op_ret == -1) &&              (EAGAIN != gf_error_to_errno (rsp.op_errno))) {                  gf_log (this->name, GF_LOG_WARNING, "remote operation failed: %s",                          strerror (gf_error_to_errno (rsp.op_errno)));          } +          CLIENT_STACK_UNWIND (fentrylk, frame, rsp.op_ret, -                             gf_error_to_errno (rsp.op_errno)); +                             gf_error_to_errno (rsp.op_errno), xdata); + +        if (rsp.xdata.xdata_val) +                free (rsp.xdata.xdata_val); + +        if (xdata) +                dict_unref (xdata);          return 0;  } @@ -1354,7 +1662,9 @@ client3_1_xattrop_cbk (struct rpc_req *req, struct iovec *iov, int count,          int               ret      = 0;          int               op_errno = EINVAL;          clnt_local_t   *local    = NULL; -        xlator_t         *this       = NULL; +        xlator_t *this       = NULL; +        dict_t  *xdata       = NULL; +          this = THIS; @@ -1382,6 +1692,10 @@ client3_1_xattrop_cbk (struct rpc_req *req, struct iovec *iov, int count,                                                op_errno, out);          } +        GF_PROTOCOL_DICT_UNSERIALIZE (this, xdata, (rsp.xdata.xdata_val), +                                      (rsp.xdata.xdata_len), ret, +                                      op_errno, out); +  out:          if (rsp.op_ret == -1) {                  gf_log (this->name, GF_LOG_WARNING, @@ -1391,14 +1705,16 @@ out:          }          CLIENT_STACK_UNWIND (xattrop, frame, rsp.op_ret, -                             gf_error_to_errno (op_errno), dict); +                             gf_error_to_errno (op_errno), dict, xdata); -        if (rsp.dict.dict_val) { -                /* don't use GF_FREE, this memory was allocated by libc -                 */ +        if (rsp.dict.dict_val)                  free (rsp.dict.dict_val); -                rsp.dict.dict_val = NULL; -        } + +        if (rsp.xdata.xdata_val) +                free (rsp.xdata.xdata_val); + +        if (xdata) +                dict_unref (xdata);          if (dict)                  dict_unref (dict); @@ -1412,11 +1728,12 @@ client3_1_fxattrop_cbk (struct rpc_req *req, struct iovec *iov, int count,  {          call_frame_t      *frame    = NULL;          dict_t            *dict     = NULL; +        dict_t            *xdata    = NULL;          gfs3_fxattrop_rsp  rsp      = {0,};          int                ret      = 0;          int                op_errno = 0;          clnt_local_t    *local    = NULL; -        xlator_t         *this       = NULL; +        xlator_t *this       = NULL;          this = THIS; @@ -1444,6 +1761,10 @@ client3_1_fxattrop_cbk (struct rpc_req *req, struct iovec *iov, int count,                                                op_errno, out);          } +        GF_PROTOCOL_DICT_UNSERIALIZE (frame->this, xdata, +                                      (rsp.xdata.xdata_val), +                                      (rsp.xdata.xdata_len), rsp.op_ret, +                                      op_errno, out);  out:          if (rsp.op_ret == -1) { @@ -1452,14 +1773,16 @@ out:                          strerror (gf_error_to_errno (op_errno)));          }          CLIENT_STACK_UNWIND (fxattrop, frame, rsp.op_ret, -                             gf_error_to_errno (op_errno), dict); +                             gf_error_to_errno (op_errno), dict, xdata); -        if (rsp.dict.dict_val) { -                /* don't use GF_FREE, this memory was allocated by libc -                 */ +        if (rsp.dict.dict_val)                  free (rsp.dict.dict_val); -                rsp.dict.dict_val = NULL; -        } + +        if (rsp.xdata.xdata_val) +                free (rsp.xdata.xdata_val); + +        if (xdata) +                dict_unref (xdata);          if (dict)                  dict_unref (dict); @@ -1474,7 +1797,9 @@ client3_1_fsetxattr_cbk (struct rpc_req *req, struct iovec *iov, int count,          call_frame_t    *frame      = NULL;          gf_common_rsp    rsp        = {0,};          int              ret        = 0; -        xlator_t         *this       = NULL; +        xlator_t *this       = NULL; +        dict_t  *xdata       = NULL; +          this = THIS; @@ -1493,13 +1818,23 @@ client3_1_fsetxattr_cbk (struct rpc_req *req, struct iovec *iov, int count,                  goto out;          } +        GF_PROTOCOL_DICT_UNSERIALIZE (this, xdata, (rsp.xdata.xdata_val), +                                      (rsp.xdata.xdata_len), ret, +                                      rsp.op_errno, out); +  out:          if (rsp.op_ret == -1) {                  gf_log (this->name, GF_LOG_WARNING, "remote operation failed: %s",                          strerror (gf_error_to_errno (rsp.op_errno)));          }          CLIENT_STACK_UNWIND (fsetxattr, frame, rsp.op_ret, -                             gf_error_to_errno (rsp.op_errno)); +                             gf_error_to_errno (rsp.op_errno), xdata); + +        if (rsp.xdata.xdata_val) +                free (rsp.xdata.xdata_val); + +        if (xdata) +                dict_unref (xdata);          return 0;  } @@ -1513,7 +1848,9 @@ client3_1_fsetattr_cbk (struct rpc_req *req, struct iovec *iov, int count,          struct iatt      prestat    = {0,};          struct iatt      poststat   = {0,};          int              ret        = 0; -        xlator_t         *this       = NULL; +        xlator_t *this       = NULL; +        dict_t  *xdata       = NULL; +          this = THIS; @@ -1537,6 +1874,10 @@ client3_1_fsetattr_cbk (struct rpc_req *req, struct iovec *iov, int count,                  gf_stat_to_iatt (&rsp.statpost, &poststat);          } +        GF_PROTOCOL_DICT_UNSERIALIZE (this, xdata, (rsp.xdata.xdata_val), +                                      (rsp.xdata.xdata_len), ret, +                                      rsp.op_errno, out); +  out:          if (rsp.op_ret == -1) {                  gf_log (this->name, GF_LOG_WARNING, "remote operation failed: %s", @@ -1544,7 +1885,13 @@ out:          }          CLIENT_STACK_UNWIND (fsetattr, frame, rsp.op_ret,                               gf_error_to_errno (rsp.op_errno), &prestat, -                             &poststat); +                             &poststat, xdata); + +        if (rsp.xdata.xdata_val) +                free (rsp.xdata.xdata_val); + +        if (xdata) +                dict_unref (xdata);          return 0;  } @@ -1559,7 +1906,9 @@ client3_1_setattr_cbk (struct rpc_req *req, struct iovec *iov, int count,          struct iatt      prestat    = {0,};          struct iatt      poststat   = {0,};          int              ret        = 0; -        xlator_t         *this       = NULL; +        xlator_t *this       = NULL; +        dict_t  *xdata       = NULL; +          this = THIS; @@ -1584,6 +1933,10 @@ client3_1_setattr_cbk (struct rpc_req *req, struct iovec *iov, int count,                  gf_stat_to_iatt (&rsp.statpost, &poststat);          } +        GF_PROTOCOL_DICT_UNSERIALIZE (this, xdata, (rsp.xdata.xdata_val), +                                      (rsp.xdata.xdata_len), ret, +                                      rsp.op_errno, out); +  out:          if (rsp.op_ret == -1) {                  gf_log (this->name, GF_LOG_WARNING, "remote operation failed: %s", @@ -1591,7 +1944,13 @@ out:          }          CLIENT_STACK_UNWIND (setattr, frame, rsp.op_ret,                               gf_error_to_errno (rsp.op_errno), &prestat, -                             &poststat); +                             &poststat, xdata); + +        if (rsp.xdata.xdata_val) +                free (rsp.xdata.xdata_val); + +        if (xdata) +                dict_unref (xdata);          return 0;  } @@ -1611,7 +1970,8 @@ client3_1_create_cbk (struct rpc_req *req, struct iovec *iov, int count,          clnt_conf_t     *conf       = NULL;          clnt_fd_ctx_t   *fdctx      = NULL;          gfs3_create_rsp  rsp        = {0,}; -        xlator_t         *this       = NULL; +        xlator_t *this       = NULL; +        dict_t  *xdata       = NULL;          this = THIS; @@ -1667,6 +2027,10 @@ client3_1_create_cbk (struct rpc_req *req, struct iovec *iov, int count,                  pthread_mutex_unlock (&conf->lock);          } +        GF_PROTOCOL_DICT_UNSERIALIZE (this, xdata, (rsp.xdata.xdata_val), +                                      (rsp.xdata.xdata_len), ret, +                                      rsp.op_errno, out); +  out:          if (rsp.op_ret == -1) {                  gf_log (this->name, GF_LOG_WARNING, @@ -1677,7 +2041,13 @@ out:          CLIENT_STACK_UNWIND (create, frame, rsp.op_ret,                               gf_error_to_errno (rsp.op_errno), fd, inode, -                             &stbuf, &preparent, &postparent); +                             &stbuf, &preparent, &postparent, xdata); + +        if (rsp.xdata.xdata_val) +                free (rsp.xdata.xdata_val); + +        if (xdata) +                dict_unref (xdata);          return 0;  } @@ -1690,7 +2060,9 @@ client3_1_rchecksum_cbk (struct rpc_req *req, struct iovec *iov, int count,          call_frame_t *frame = NULL;          gfs3_rchecksum_rsp rsp        = {0,};          int              ret        = 0; -        xlator_t         *this       = NULL; +        xlator_t *this       = NULL; +        dict_t  *xdata       = NULL; +          this = THIS; @@ -1710,6 +2082,10 @@ client3_1_rchecksum_cbk (struct rpc_req *req, struct iovec *iov, int count,                  goto out;          } +        GF_PROTOCOL_DICT_UNSERIALIZE (this, xdata, (rsp.xdata.xdata_val), +                                      (rsp.xdata.xdata_len), ret, +                                      rsp.op_errno, out); +  out:          if (rsp.op_ret == -1) {                  gf_log (this->name, GF_LOG_WARNING, "remote operation failed: %s", @@ -1718,7 +2094,8 @@ out:          CLIENT_STACK_UNWIND (rchecksum, frame, rsp.op_ret,                               gf_error_to_errno (rsp.op_errno),                               rsp.weak_checksum, -                             (uint8_t *)rsp.strong_checksum.strong_checksum_val); +                             (uint8_t *)rsp.strong_checksum.strong_checksum_val, +                             xdata);          if (rsp.strong_checksum.strong_checksum_val) {                  /* This is allocated by the libc while decoding RPC msg */ @@ -1726,6 +2103,12 @@ out:                  free (rsp.strong_checksum.strong_checksum_val);          } +        if (rsp.xdata.xdata_val) +                free (rsp.xdata.xdata_val); + +        if (xdata) +                dict_unref (xdata); +          return 0;  } @@ -1738,7 +2121,8 @@ client3_1_lk_cbk (struct rpc_req *req, struct iovec *iov, int count,          struct gf_flock     lock       = {0,};          gfs3_lk_rsp      rsp        = {0,};          int              ret        = 0; -        xlator_t         *this       = NULL; +        xlator_t *this       = NULL; +        dict_t  *xdata       = NULL;          this = THIS; @@ -1777,6 +2161,10 @@ client3_1_lk_cbk (struct rpc_req *req, struct iovec *iov, int count,          }          */ +        GF_PROTOCOL_DICT_UNSERIALIZE (this, xdata, (rsp.xdata.xdata_val), +                                      (rsp.xdata.xdata_len), ret, +                                      rsp.op_errno, out); +  out:          if ((rsp.op_ret == -1) &&              (EAGAIN != gf_error_to_errno (rsp.op_errno))) { @@ -1786,7 +2174,13 @@ out:          }          CLIENT_STACK_UNWIND (lk, frame, rsp.op_ret, -                             gf_error_to_errno (rsp.op_errno), &lock); +                             gf_error_to_errno (rsp.op_errno), &lock, xdata); + +        if (rsp.xdata.xdata_val) +                free (rsp.xdata.xdata_val); + +        if (xdata) +                dict_unref (xdata);          return 0;  } @@ -1795,12 +2189,13 @@ int  client3_1_readdir_cbk (struct rpc_req *req, struct iovec *iov, int count,                         void *myframe)  { -        call_frame_t           *frame = NULL; -        gfs3_readdir_rsp        rsp   = {0,}; -        int32_t                 ret   = 0; -        clnt_local_t         *local = NULL; -        gf_dirent_t             entries; -        xlator_t         *this       = NULL; +        call_frame_t     *frame    = NULL; +        gfs3_readdir_rsp  rsp      = {0,}; +        int32_t           ret      = 0; +        clnt_local_t     *local    = NULL; +        gf_dirent_t       entries; +        xlator_t         *this     = NULL; +        dict_t           *xdata    = NULL;          this = THIS; @@ -1826,6 +2221,11 @@ client3_1_readdir_cbk (struct rpc_req *req, struct iovec *iov, int count,                  unserialize_rsp_dirent (&rsp, &entries);          } +        GF_PROTOCOL_DICT_UNSERIALIZE (frame->this, xdata, +                                      (rsp.xdata.xdata_val), +                                      (rsp.xdata.xdata_len), rsp.op_ret, +                                      rsp.op_errno, out); +  out:          if (rsp.op_ret == -1) {                  gf_log (this->name, GF_LOG_WARNING, @@ -1834,12 +2234,18 @@ out:                                    local->cmd);          }          CLIENT_STACK_UNWIND (readdir, frame, rsp.op_ret, -                             gf_error_to_errno (rsp.op_errno), &entries); +                             gf_error_to_errno (rsp.op_errno), &entries, xdata);          if (rsp.op_ret != -1) {                  gf_dirent_free (&entries);          } +        if (rsp.xdata.xdata_val) +                free (rsp.xdata.xdata_val); + +        if (xdata) +                dict_unref (xdata); +          clnt_readdir_rsp_cleanup (&rsp);          return 0; @@ -1856,6 +2262,7 @@ client3_1_readdirp_cbk (struct rpc_req *req, struct iovec *iov, int count,          clnt_local_t      *local = NULL;          gf_dirent_t        entries;          xlator_t          *this  = NULL; +        dict_t            *xdata = NULL;          this = THIS; @@ -1881,6 +2288,10 @@ client3_1_readdirp_cbk (struct rpc_req *req, struct iovec *iov, int count,                  unserialize_rsp_direntp (this, local->fd, &rsp, &entries);          } +        GF_PROTOCOL_DICT_UNSERIALIZE (this, xdata, (rsp.xdata.xdata_val), +                                      (rsp.xdata.xdata_len), ret, +                                      rsp.op_errno, out); +  out:          if (rsp.op_ret == -1) {                  gf_log (this->name, GF_LOG_WARNING, @@ -1888,11 +2299,16 @@ out:                          strerror (gf_error_to_errno (rsp.op_errno)));          }          CLIENT_STACK_UNWIND (readdirp, frame, rsp.op_ret, -                             gf_error_to_errno (rsp.op_errno), &entries); +                             gf_error_to_errno (rsp.op_errno), &entries, xdata);          if (rsp.op_ret != -1) {                  gf_dirent_free (&entries);          } +        if (rsp.xdata.xdata_val) +                free (rsp.xdata.xdata_val); + +        if (xdata) +                dict_unref (xdata);          clnt_readdirp_rsp_cleanup (&rsp); @@ -1912,7 +2328,8 @@ client3_1_rename_cbk (struct rpc_req *req, struct iovec *iov, int count,          struct iatt       prenewparent  = {0,};          struct iatt       postnewparent = {0,};          int               ret        = 0; -        xlator_t         *this       = NULL; +        xlator_t *this       = NULL; +        dict_t  *xdata       = NULL;          this = THIS; @@ -1942,6 +2359,10 @@ client3_1_rename_cbk (struct rpc_req *req, struct iovec *iov, int count,                  gf_stat_to_iatt (&rsp.postnewparent, &postnewparent);          } +        GF_PROTOCOL_DICT_UNSERIALIZE (this, xdata, (rsp.xdata.xdata_val), +                                      (rsp.xdata.xdata_len), ret, +                                      rsp.op_errno, out); +  out:          if (rsp.op_ret == -1) {                  gf_log (this->name, GF_LOG_WARNING, "remote operation failed: %s", @@ -1950,7 +2371,13 @@ out:          CLIENT_STACK_UNWIND (rename, frame, rsp.op_ret,                               gf_error_to_errno (rsp.op_errno),                               &stbuf, &preoldparent, &postoldparent, -                             &prenewparent, &postnewparent); +                             &prenewparent, &postnewparent, xdata); + +        if (rsp.xdata.xdata_val) +                free (rsp.xdata.xdata_val); + +        if (xdata) +                dict_unref (xdata);          return 0;  } @@ -1967,7 +2394,9 @@ client3_1_link_cbk (struct rpc_req *req, struct iovec *iov, int count,          int               ret        = 0;          clnt_local_t     *local      = NULL;          inode_t          *inode      = NULL; -        xlator_t         *this       = NULL; +        xlator_t *this       = NULL; +        dict_t  *xdata       = NULL; +          this = THIS; @@ -1997,6 +2426,10 @@ client3_1_link_cbk (struct rpc_req *req, struct iovec *iov, int count,                  gf_stat_to_iatt (&rsp.postparent, &postparent);          } +        GF_PROTOCOL_DICT_UNSERIALIZE (this, xdata, (rsp.xdata.xdata_val), +                                      (rsp.xdata.xdata_len), ret, +                                      rsp.op_errno, out); +  out:          if (rsp.op_ret == -1) {                  gf_log (this->name, GF_LOG_WARNING, @@ -2007,7 +2440,13 @@ out:          CLIENT_STACK_UNWIND (link, frame, rsp.op_ret,                               gf_error_to_errno (rsp.op_errno), inode, -                             &stbuf, &preparent, &postparent); +                             &stbuf, &preparent, &postparent, xdata); + +        if (rsp.xdata.xdata_val) +                free (rsp.xdata.xdata_val); + +        if (xdata) +                dict_unref (xdata);          return 0;  } @@ -2024,7 +2463,8 @@ client3_1_opendir_cbk (struct rpc_req *req, struct iovec *iov, int count,          fd_t             *fd = NULL;          int ret = 0;          gfs3_opendir_rsp  rsp = {0,}; -        xlator_t         *this       = NULL; +        xlator_t *this       = NULL; +        dict_t  *xdata       = NULL;          this = THIS; @@ -2073,6 +2513,10 @@ client3_1_opendir_cbk (struct rpc_req *req, struct iovec *iov, int count,                  pthread_mutex_unlock (&conf->lock);          } +        GF_PROTOCOL_DICT_UNSERIALIZE (this, xdata, (rsp.xdata.xdata_val), +                                      (rsp.xdata.xdata_len), ret, +                                      rsp.op_errno, out); +  out:          if (rsp.op_ret == -1) {                  gf_log (this->name, GF_LOG_WARNING, @@ -2081,7 +2525,13 @@ out:                          (local) ? local->loc.path : "--");          }          CLIENT_STACK_UNWIND (opendir, frame, rsp.op_ret, -                             gf_error_to_errno (rsp.op_errno), fd); +                             gf_error_to_errno (rsp.op_errno), fd, xdata); + +        if (rsp.xdata.xdata_val) +                free (rsp.xdata.xdata_val); + +        if (xdata) +                dict_unref (xdata);          return 0;  } @@ -2098,7 +2548,7 @@ client3_1_lookup_cbk (struct rpc_req *req, struct iovec *iov, int count,          struct iatt      stbuf      = {0,};          struct iatt      postparent = {0,};          int              op_errno   = EINVAL; -        dict_t          *xattr      = NULL; +        dict_t          *xdata      = NULL;          inode_t         *inode      = NULL;          xlator_t        *this       = NULL; @@ -2131,8 +2581,8 @@ client3_1_lookup_cbk (struct rpc_req *req, struct iovec *iov, int count,          rsp.op_ret = -1;          gf_stat_to_iatt (&rsp.stat, &stbuf); -        GF_PROTOCOL_DICT_UNSERIALIZE (frame->this, xattr, (rsp.dict.dict_val), -                                      (rsp.dict.dict_len), rsp.op_ret, +        GF_PROTOCOL_DICT_UNSERIALIZE (frame->this, xdata, (rsp.xdata.xdata_val), +                                      (rsp.xdata.xdata_len), rsp.op_ret,                                        op_errno, out);          if ((!uuid_is_null (inode->gfid)) @@ -2161,16 +2611,13 @@ out:          }          CLIENT_STACK_UNWIND (lookup, frame, rsp.op_ret, rsp.op_errno, inode, -                             &stbuf, xattr, &postparent); +                             &stbuf, xdata, &postparent); -        if (xattr) -                dict_unref (xattr); +        if (xdata) +                dict_unref (xdata); -        if (rsp.dict.dict_val) { -                /* don't use GF_FREE, this memory was allocated by libc -                 */ -                free (rsp.dict.dict_val); -        } +        if (rsp.xdata.xdata_val) +                free (rsp.xdata.xdata_val);          return 0;  } @@ -2186,7 +2633,8 @@ client3_1_readv_cbk (struct rpc_req *req, struct iovec *iov, int count,          gfs3_read_rsp   rsp    = {0,};          int             ret    = 0, rspcount = 0;          clnt_local_t   *local  = NULL; -        xlator_t         *this       = NULL; +        xlator_t *this       = NULL; +        dict_t  *xdata       = NULL;          this = THIS; @@ -2218,6 +2666,10 @@ client3_1_readv_cbk (struct rpc_req *req, struct iovec *iov, int count,                          vector[0].iov_base = req->rsp[1].iov_base;                  rspcount = 1;          } +        GF_PROTOCOL_DICT_UNSERIALIZE (this, xdata, (rsp.xdata.xdata_val), +                                      (rsp.xdata.xdata_len), ret, +                                      rsp.op_errno, out); +  out:          if (rsp.op_ret == -1) {                  gf_log (this->name, GF_LOG_WARNING, @@ -2226,7 +2678,13 @@ out:          }          CLIENT_STACK_UNWIND (readv, frame, rsp.op_ret,                               gf_error_to_errno (rsp.op_errno), vector, rspcount, -                             &stat, iobref); +                             &stat, iobref, xdata); + +        if (rsp.xdata.xdata_val) +                free (rsp.xdata.xdata_val); + +        if (xdata) +                dict_unref (xdata);          return 0;  } @@ -2461,8 +2919,8 @@ client3_1_lookup (call_frame_t *frame, xlator_t *this,                          memcpy (req.gfid, args->loc->gfid, 16);          } -        if (args->dict) { -                content = dict_get (args->dict, GF_CONTENT_KEY); +        if (args->xdata) { +                content = dict_get (args->xdata, GF_CONTENT_KEY);                  if (content != NULL) {                          rsp_iobref = iobref_new ();                          if (rsp_iobref == NULL) { @@ -2481,22 +2939,21 @@ client3_1_lookup (call_frame_t *frame, xlator_t *this,                          iobuf_unref (rsp_iobuf);                          rsphdr = &vector[0];                          rsphdr->iov_base = iobuf_ptr (rsp_iobuf); -                        rsphdr->iov_len -                                = iobuf_pagesize (rsp_iobuf); +                        rsphdr->iov_len = iobuf_pagesize (rsp_iobuf);                          count = 1;                          rsp_iobuf = NULL;                          local->iobref = rsp_iobref;                          rsp_iobref = NULL;                  } -                GF_PROTOCOL_DICT_SERIALIZE (this, args->dict, -                                            (&req.dict.dict_val), -                                            req.dict.dict_len, +                GF_PROTOCOL_DICT_SERIALIZE (this, args->xdata, +                                            (&req.xdata.xdata_val), +                                            req.xdata.xdata_len,                                              op_errno, unwind);          }          if (args->loc->name) -                req.bname         = (char *)args->loc->name; +                req.bname = (char *)args->loc->name;          else                  req.bname = ""; @@ -2510,8 +2967,8 @@ client3_1_lookup (call_frame_t *frame, xlator_t *this,                  gf_log (this->name, GF_LOG_WARNING, "failed to send the fop");          } -        if (req.dict.dict_val) { -                GF_FREE (req.dict.dict_val); +        if (req.xdata.xdata_val) { +                GF_FREE (req.xdata.xdata_val);          }          if (rsp_iobref != NULL) { @@ -2524,8 +2981,8 @@ unwind:          CLIENT_STACK_UNWIND (lookup, frame, -1, op_errno, NULL, NULL, NULL,                               NULL); -        if (req.dict.dict_val) -                GF_FREE (req.dict.dict_val); +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val);          if (rsp_iobref != NULL) {                  iobref_unref (rsp_iobref); @@ -2538,8 +2995,6 @@ unwind:          return 0;  } - -  int32_t  client3_1_stat (call_frame_t *frame, xlator_t *this,                  void *data) @@ -2567,6 +3022,9 @@ client3_1_stat (call_frame_t *frame, xlator_t *this,                                         unwind, op_errno, EINVAL);          conf = this->private; +        GF_PROTOCOL_DICT_SERIALIZE (this, args->xdata, (&req.xdata.xdata_val), +                                    req.xdata.xdata_len, op_errno, unwind); +          ret = client_submit_request (this, &req, frame, conf->fops,                                       GFS3_OP_STAT, client3_1_stat_cbk, NULL,                                       NULL, 0, NULL, 0, NULL, @@ -2575,9 +3033,16 @@ client3_1_stat (call_frame_t *frame, xlator_t *this,                  gf_log (this->name, GF_LOG_WARNING, "failed to send the fop");          } +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  unwind: -        CLIENT_STACK_UNWIND (stat, frame, -1, op_errno, NULL); +        CLIENT_STACK_UNWIND (stat, frame, -1, op_errno, NULL, NULL); + +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  } @@ -2612,6 +3077,9 @@ client3_1_truncate (call_frame_t *frame, xlator_t *this,          conf = this->private; +        GF_PROTOCOL_DICT_SERIALIZE (this, args->xdata, (&req.xdata.xdata_val), +                                    req.xdata.xdata_len, op_errno, unwind); +          ret = client_submit_request (this, &req, frame, conf->fops,                                       GFS3_OP_TRUNCATE,                                       client3_1_truncate_cbk, NULL, @@ -2621,9 +3089,15 @@ client3_1_truncate (call_frame_t *frame, xlator_t *this,                  gf_log (this->name, GF_LOG_WARNING, "failed to send the fop");          } +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  unwind: -        CLIENT_STACK_UNWIND (truncate, frame, -1, op_errno, NULL, NULL); +        CLIENT_STACK_UNWIND (truncate, frame, -1, op_errno, NULL, NULL, NULL); +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  } @@ -2652,6 +3126,9 @@ client3_1_ftruncate (call_frame_t *frame, xlator_t *this,          req.fd     = remote_fd;          memcpy (req.gfid, args->fd->inode->gfid, 16); +        GF_PROTOCOL_DICT_SERIALIZE (this, args->xdata, (&req.xdata.xdata_val), +                                    req.xdata.xdata_len, op_errno, unwind); +          ret = client_submit_request (this, &req, frame, conf->fops,                                       GFS3_OP_FTRUNCATE,                                       client3_1_ftruncate_cbk, NULL, @@ -2661,9 +3138,15 @@ client3_1_ftruncate (call_frame_t *frame, xlator_t *this,                  gf_log (this->name, GF_LOG_WARNING, "failed to send the fop");          } +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  unwind: -        CLIENT_STACK_UNWIND (ftruncate, frame, -1, op_errno, NULL, NULL); +        CLIENT_STACK_UNWIND (ftruncate, frame, -1, op_errno, NULL, NULL, NULL); +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  } @@ -2699,6 +3182,9 @@ client3_1_access (call_frame_t *frame, xlator_t *this,          conf = this->private; +        GF_PROTOCOL_DICT_SERIALIZE (this, args->xdata, (&req.xdata.xdata_val), +                                    req.xdata.xdata_len, op_errno, unwind); +          ret = client_submit_request (this, &req, frame, conf->fops,                                       GFS3_OP_ACCESS,                                       client3_1_access_cbk, NULL, @@ -2708,9 +3194,15 @@ client3_1_access (call_frame_t *frame, xlator_t *this,                  gf_log (this->name, GF_LOG_WARNING, "failed to send the fop");          } +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  unwind: -        CLIENT_STACK_UNWIND (access, frame, -1, op_errno); +        CLIENT_STACK_UNWIND (access, frame, -1, op_errno, NULL); +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  } @@ -2743,6 +3235,9 @@ client3_1_readlink (call_frame_t *frame, xlator_t *this,          req.size = args->size;          conf = this->private; +        GF_PROTOCOL_DICT_SERIALIZE (this, args->xdata, (&req.xdata.xdata_val), +                                    req.xdata.xdata_len, op_errno, unwind); +          ret = client_submit_request (this, &req, frame, conf->fops,                                       GFS3_OP_READLINK,                                       client3_1_readlink_cbk, NULL, @@ -2752,9 +3247,15 @@ client3_1_readlink (call_frame_t *frame, xlator_t *this,                  gf_log (this->name, GF_LOG_WARNING, "failed to send the fop");          } +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  unwind: -        CLIENT_STACK_UNWIND (readlink, frame, -1, op_errno, NULL, NULL); +        CLIENT_STACK_UNWIND (readlink, frame, -1, op_errno, NULL, NULL, NULL); +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  } @@ -2790,6 +3291,9 @@ client3_1_unlink (call_frame_t *frame, xlator_t *this,          req.bname = (char *)args->loc->name;          conf = this->private; +        GF_PROTOCOL_DICT_SERIALIZE (this, args->xdata, (&req.xdata.xdata_val), +                                    req.xdata.xdata_len, op_errno, unwind); +          ret = client_submit_request (this, &req, frame, conf->fops,                                       GFS3_OP_UNLINK,                                       client3_1_unlink_cbk, NULL, @@ -2798,9 +3302,16 @@ client3_1_unlink (call_frame_t *frame, xlator_t *this,          if (ret) {                  gf_log (this->name, GF_LOG_WARNING, "failed to send the fop");          } + +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  unwind: -        CLIENT_STACK_UNWIND (unlink, frame, -1, op_errno, NULL, NULL); +        CLIENT_STACK_UNWIND (unlink, frame, -1, op_errno, NULL, NULL, NULL); +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  } @@ -2833,9 +3344,12 @@ client3_1_rmdir (call_frame_t *frame, xlator_t *this,                                         !uuid_is_null (*((uuid_t*)req.pargfid)),                                         unwind, op_errno, EINVAL);          req.bname = (char *)args->loc->name; -        req.flags = args->flags; +        req.xflags = args->flags;          conf = this->private; +        GF_PROTOCOL_DICT_SERIALIZE (this, args->xdata, (&req.xdata.xdata_val), +                                    req.xdata.xdata_len, op_errno, unwind); +          ret = client_submit_request (this, &req, frame, conf->fops,                                       GFS3_OP_RMDIR, client3_1_rmdir_cbk, NULL,                                       NULL, 0, NULL, 0, @@ -2843,9 +3357,15 @@ client3_1_rmdir (call_frame_t *frame, xlator_t *this,          if (ret) {                  gf_log (this->name, GF_LOG_WARNING, "failed to send the fop");          } +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  unwind: -        CLIENT_STACK_UNWIND (rmdir, frame, -1, op_errno, NULL, NULL); +        CLIENT_STACK_UNWIND (rmdir, frame, -1, op_errno, NULL, NULL, NULL); +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  } @@ -2889,12 +3409,13 @@ client3_1_symlink (call_frame_t *frame, xlator_t *this,                                         unwind, op_errno, EINVAL);          req.linkname = (char *)args->linkname;          req.bname    = (char *)args->loc->name; - -        GF_PROTOCOL_DICT_SERIALIZE (this, args->dict, (&req.dict.dict_val), -                                    req.dict.dict_len, op_errno, unwind); +        req.umask = args->umask;          conf = this->private; +        GF_PROTOCOL_DICT_SERIALIZE (this, args->xdata, (&req.xdata.xdata_val), +                                    req.xdata.xdata_len, op_errno, unwind); +          ret = client_submit_request (this, &req, frame, conf->fops,                                       GFS3_OP_SYMLINK, client3_1_symlink_cbk,                                       NULL,  NULL, 0, NULL, @@ -2903,18 +3424,18 @@ client3_1_symlink (call_frame_t *frame, xlator_t *this,                  gf_log (this->name, GF_LOG_WARNING, "failed to send the fop");          } -        if (req.dict.dict_val) { -                GF_FREE (req.dict.dict_val); -        } +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  unwind:          CLIENT_STACK_UNWIND (symlink, frame, -1, op_errno, NULL, NULL, NULL, -                             NULL); +                             NULL, NULL); + +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); -        if (req.dict.dict_val) { -                GF_FREE (req.dict.dict_val); -        }          return 0;  } @@ -2959,6 +3480,9 @@ client3_1_rename (call_frame_t *frame, xlator_t *this,          req.newbname = (char *)args->newloc->name;          conf = this->private; +        GF_PROTOCOL_DICT_SERIALIZE (this, args->xdata, (&req.xdata.xdata_val), +                                    req.xdata.xdata_len, op_errno, unwind); +          ret = client_submit_request (this, &req, frame, conf->fops,                                       GFS3_OP_RENAME, client3_1_rename_cbk, NULL,                                       NULL, 0, NULL, 0, @@ -2967,10 +3491,17 @@ client3_1_rename (call_frame_t *frame, xlator_t *this,                  gf_log (this->name, GF_LOG_WARNING, "failed to send the fop");          } +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  unwind:          CLIENT_STACK_UNWIND (rename, frame, -1, op_errno, NULL, NULL, NULL, -                             NULL, NULL); +                             NULL, NULL, NULL); + +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  } @@ -3024,6 +3555,9 @@ client3_1_link (call_frame_t *frame, xlator_t *this,          req.newbname = (char *)args->newloc->name;          conf = this->private; +        GF_PROTOCOL_DICT_SERIALIZE (this, args->xdata, (&req.xdata.xdata_val), +                                    req.xdata.xdata_len, op_errno, unwind); +          ret = client_submit_request (this, &req, frame, conf->fops,                                       GFS3_OP_LINK, client3_1_link_cbk, NULL,                                       NULL, 0, NULL, 0, NULL, @@ -3032,9 +3566,15 @@ client3_1_link (call_frame_t *frame, xlator_t *this,                  gf_log (this->name, GF_LOG_WARNING, "failed to send the fop");          } +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  unwind: -        CLIENT_STACK_UNWIND (link, frame, -1, op_errno, NULL, NULL, NULL, NULL); +        CLIENT_STACK_UNWIND (link, frame, -1, op_errno, NULL, NULL, NULL, NULL, NULL); +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  } @@ -3079,15 +3619,13 @@ client3_1_mknod (call_frame_t *frame, xlator_t *this,          req.bname  = (char *)args->loc->name;          req.mode   = args->mode;          req.dev    = args->rdev; -        if (args->dict) { -                GF_PROTOCOL_DICT_SERIALIZE (this, args->dict, -                                            (&req.dict.dict_val), -                                            req.dict.dict_len, -                                            op_errno, unwind); -        } +        req.umask = args->umask;          conf = this->private; +        GF_PROTOCOL_DICT_SERIALIZE (this, args->xdata, (&req.xdata.xdata_val), +                                    req.xdata.xdata_len, op_errno, unwind); +          ret = client_submit_request (this, &req, frame, conf->fops,                                       GFS3_OP_MKNOD, client3_1_mknod_cbk, NULL,                                       NULL, 0, NULL, 0, @@ -3095,17 +3633,17 @@ client3_1_mknod (call_frame_t *frame, xlator_t *this,          if (ret) {                  gf_log (this->name, GF_LOG_WARNING, "failed to send the fop");          } -        if (req.dict.dict_val) { -                GF_FREE (req.dict.dict_val); -        } +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  unwind:          CLIENT_STACK_UNWIND (mknod, frame, -1, op_errno, NULL, NULL, NULL, -                             NULL); +                             NULL, NULL); + +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); -        if (req.dict.dict_val) { -                GF_FREE (req.dict.dict_val); -        }          return 0;  } @@ -3150,15 +3688,13 @@ client3_1_mkdir (call_frame_t *frame, xlator_t *this,          req.bname = (char *)args->loc->name;          req.mode  = args->mode; -        if (args->dict) { -                GF_PROTOCOL_DICT_SERIALIZE (this, args->dict, -                                            (&req.dict.dict_val), -                                            req.dict.dict_len, -                                            op_errno, unwind); -        } +        req.umask = args->umask;          conf = this->private; +        GF_PROTOCOL_DICT_SERIALIZE (this, args->xdata, (&req.xdata.xdata_val), +                                    req.xdata.xdata_len, op_errno, unwind); +          ret = client_submit_request (this, &req, frame, conf->fops,                                       GFS3_OP_MKDIR, client3_1_mkdir_cbk, NULL,                                       NULL, 0, NULL, 0, @@ -3166,17 +3702,17 @@ client3_1_mkdir (call_frame_t *frame, xlator_t *this,          if (ret) {                  gf_log (this->name, GF_LOG_WARNING, "failed to send the fop");          } -        if (req.dict.dict_val) { -                GF_FREE (req.dict.dict_val); -        } +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  unwind:          CLIENT_STACK_UNWIND (mkdir, frame, -1, op_errno, NULL, NULL, NULL, -                             NULL); +                             NULL, NULL); + +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); -        if (req.dict.dict_val) { -                GF_FREE (req.dict.dict_val); -        }          return 0;  } @@ -3222,15 +3758,13 @@ client3_1_create (call_frame_t *frame, xlator_t *this,          req.bname = (char *)args->loc->name;          req.mode  = args->mode;          req.flags = gf_flags_from_flags (args->flags); -        if (args->dict) { -                GF_PROTOCOL_DICT_SERIALIZE (this, args->dict, -                                            (&req.dict.dict_val), -                                            req.dict.dict_len, -                                            op_errno, unwind); -        } +        req.umask = args->umask;          conf = this->private; +        GF_PROTOCOL_DICT_SERIALIZE (this, args->xdata, (&req.xdata.xdata_val), +                                    req.xdata.xdata_len, op_errno, unwind); +          ret = client_submit_request (this, &req, frame, conf->fops,                                       GFS3_OP_CREATE, client3_1_create_cbk, NULL,                                       NULL, 0, NULL, 0, @@ -3239,17 +3773,17 @@ client3_1_create (call_frame_t *frame, xlator_t *this,                  gf_log (this->name, GF_LOG_WARNING, "failed to send the fop");          } -        if (req.dict.dict_val) { -                GF_FREE (req.dict.dict_val); -        } +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  unwind:          CLIENT_STACK_UNWIND (create, frame, -1, op_errno, NULL, NULL, NULL, -                             NULL, NULL); +                             NULL, NULL, NULL); + +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); -        if (req.dict.dict_val) { -                GF_FREE (req.dict.dict_val); -        }          return 0;  } @@ -3281,7 +3815,6 @@ client3_1_open (call_frame_t *frame, xlator_t *this,          local->fd = fd_ref (args->fd);          local->flags = args->flags; -        local->wbflags = args->wbflags;          loc_copy (&local->loc, args->loc);          frame->local = local; @@ -3294,10 +3827,12 @@ client3_1_open (call_frame_t *frame, xlator_t *this,                                         !uuid_is_null (*((uuid_t*)req.gfid)),                                         unwind, op_errno, EINVAL);          req.flags = gf_flags_from_flags (args->flags); -        req.wbflags = args->wbflags;          conf = this->private; +        GF_PROTOCOL_DICT_SERIALIZE (this, args->xdata, (&req.xdata.xdata_val), +                                    req.xdata.xdata_len, op_errno, unwind); +          ret = client_submit_request (this, &req, frame, conf->fops,                                       GFS3_OP_OPEN, client3_1_open_cbk, NULL,                                       NULL, 0, NULL, 0, NULL, @@ -3306,9 +3841,15 @@ client3_1_open (call_frame_t *frame, xlator_t *this,                  gf_log (this->name, GF_LOG_WARNING, "failed to send the fop");          } +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  unwind: -        CLIENT_STACK_UNWIND (open, frame, -1, op_errno, NULL); +        CLIENT_STACK_UNWIND (open, frame, -1, op_errno, NULL, NULL); + +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val);          return 0;  } @@ -3383,6 +3924,9 @@ client3_1_readv (call_frame_t *frame, xlator_t *this,          rsp_iobref = NULL;          frame->local = local; +        GF_PROTOCOL_DICT_SERIALIZE (this, args->xdata, (&req.xdata.xdata_val), +                                    req.xdata.xdata_len, op_errno, unwind); +          ret = client_submit_request (this, &req, frame, conf->fops,                                       GFS3_OP_READ, client3_1_readv_cbk, NULL,                                       NULL, 0, &rsp_vec, 1, @@ -3392,6 +3936,9 @@ client3_1_readv (call_frame_t *frame, xlator_t *this,                  gf_log (this->name, GF_LOG_WARNING, "failed to send the fop");          } +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  unwind:          if (rsp_iobuf) { @@ -3402,7 +3949,10 @@ unwind:                  iobref_unref (rsp_iobref);          } -        CLIENT_STACK_UNWIND (readv, frame, -1, op_errno, NULL, 0, NULL, NULL); +        CLIENT_STACK_UNWIND (readv, frame, -1, op_errno, NULL, 0, NULL, NULL, NULL); +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  } @@ -3446,10 +3996,16 @@ client3_1_writev (call_frame_t *frame, xlator_t *this, void *data)                  gf_log (this->name, GF_LOG_WARNING, "failed to send the fop");          } +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  unwind: -        CLIENT_STACK_UNWIND (writev, frame, -1, op_errno, NULL, NULL); +        CLIENT_STACK_UNWIND (writev, frame, -1, op_errno, NULL, NULL, NULL); +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  } @@ -3489,6 +4045,9 @@ client3_1_flush (call_frame_t *frame, xlator_t *this,          req.fd = remote_fd;          memcpy (req.gfid, args->fd->inode->gfid, 16); +        GF_PROTOCOL_DICT_SERIALIZE (this, args->xdata, (&req.xdata.xdata_val), +                                    req.xdata.xdata_len, op_errno, unwind); +          ret = client_submit_request (this, &req, frame, conf->fops,                                       GFS3_OP_FLUSH, client3_1_flush_cbk, NULL,                                       NULL, 0, NULL, 0, @@ -3496,10 +4055,18 @@ client3_1_flush (call_frame_t *frame, xlator_t *this,          if (ret) {                  gf_log (this->name, GF_LOG_WARNING, "failed to send the fop");          } + +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); + +          return 0;  unwind: -        CLIENT_STACK_UNWIND (flush, frame, -1, op_errno); +        CLIENT_STACK_UNWIND (flush, frame, -1, op_errno, NULL); +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  } @@ -3537,10 +4104,17 @@ client3_1_fsync (call_frame_t *frame, xlator_t *this,                  gf_log (this->name, GF_LOG_WARNING, "failed to send the fop");          } + +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  unwind: -        CLIENT_STACK_UNWIND (fsync, frame, -1, op_errno, NULL, NULL); +        CLIENT_STACK_UNWIND (fsync, frame, -1, op_errno, NULL, NULL, NULL); +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  } @@ -3568,6 +4142,9 @@ client3_1_fstat (call_frame_t *frame, xlator_t *this,          req.fd = remote_fd;          memcpy (req.gfid, args->fd->inode->gfid, 16); +        GF_PROTOCOL_DICT_SERIALIZE (this, args->xdata, (&req.xdata.xdata_val), +                                    req.xdata.xdata_len, op_errno, unwind); +          ret = client_submit_request (this, &req, frame, conf->fops,                                       GFS3_OP_FSTAT, client3_1_fstat_cbk, NULL,                                       NULL, 0, NULL, 0, @@ -3576,10 +4153,16 @@ client3_1_fstat (call_frame_t *frame, xlator_t *this,                  gf_log (this->name, GF_LOG_WARNING, "failed to send the fop");          } +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  unwind: -        CLIENT_STACK_UNWIND (fstat, frame, -1, op_errno, NULL); +        CLIENT_STACK_UNWIND (fstat, frame, -1, op_errno, NULL, NULL); +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  } @@ -3632,10 +4215,16 @@ client3_1_opendir (call_frame_t *frame, xlator_t *this,                  gf_log (this->name, GF_LOG_WARNING, "failed to send the fop");          } +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  unwind: -        CLIENT_STACK_UNWIND (opendir, frame, -1, op_errno, NULL); +        CLIENT_STACK_UNWIND (opendir, frame, -1, op_errno, NULL, NULL); + +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val);          return 0;  } @@ -3666,6 +4255,9 @@ client3_1_fsyncdir (call_frame_t *frame, xlator_t *this, void *data)          conf = this->private; +        GF_PROTOCOL_DICT_SERIALIZE (this, args->xdata, (&req.xdata.xdata_val), +                                    req.xdata.xdata_len, op_errno, unwind); +          ret = client_submit_request (this, &req, frame, conf->fops,                                       GFS3_OP_FSYNCDIR, client3_1_fsyncdir_cbk,                                       NULL, NULL, 0, @@ -3675,10 +4267,16 @@ client3_1_fsyncdir (call_frame_t *frame, xlator_t *this, void *data)                  gf_log (this->name, GF_LOG_WARNING, "failed to send the fop");          } +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  unwind: -        CLIENT_STACK_UNWIND (fsyncdir, frame, -1, op_errno); +        CLIENT_STACK_UNWIND (fsyncdir, frame, -1, op_errno, NULL); +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  } @@ -3716,6 +4314,9 @@ client3_1_statfs (call_frame_t *frame, xlator_t *this,          conf = this->private; +        GF_PROTOCOL_DICT_SERIALIZE (this, args->xdata, (&req.xdata.xdata_val), +                                    req.xdata.xdata_len, op_errno, unwind); +          ret = client_submit_request (this, &req, frame, conf->fops,                                       GFS3_OP_STATFS, client3_1_statfs_cbk, NULL,                                       NULL, 0, NULL, 0, @@ -3723,10 +4324,17 @@ client3_1_statfs (call_frame_t *frame, xlator_t *this,          if (ret) {                  gf_log (this->name, GF_LOG_WARNING, "failed to send the fop");          } + +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  unwind: -        CLIENT_STACK_UNWIND (statfs, frame, -1, op_errno, NULL); +        CLIENT_STACK_UNWIND (statfs, frame, -1, op_errno, NULL, NULL); +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  } @@ -3758,8 +4366,8 @@ client3_1_setxattr (call_frame_t *frame, xlator_t *this,          GF_ASSERT_AND_GOTO_WITH_ERROR (this->name,                                         !uuid_is_null (*((uuid_t*)req.gfid)),                                         unwind, op_errno, EINVAL); -        if (args->dict) { -                GF_PROTOCOL_DICT_SERIALIZE (this, args->dict, +        if (args->xattr) { +                GF_PROTOCOL_DICT_SERIALIZE (this, args->xattr,                                              (&req.dict.dict_val),                                              req.dict.dict_len,                                              op_errno, unwind); @@ -3769,6 +4377,9 @@ client3_1_setxattr (call_frame_t *frame, xlator_t *this,          conf = this->private; +        GF_PROTOCOL_DICT_SERIALIZE (this, args->xdata, (&req.xdata.xdata_val), +                                    req.xdata.xdata_len, op_errno, unwind); +          ret = client_submit_request (this, &req, frame, conf->fops,                                       GFS3_OP_SETXATTR, client3_1_setxattr_cbk,                                       NULL, NULL, 0, NULL, 0, NULL, @@ -3776,16 +4387,21 @@ client3_1_setxattr (call_frame_t *frame, xlator_t *this,          if (ret) {                  gf_log (this->name, GF_LOG_WARNING, "failed to send the fop");          } -        if (req.dict.dict_val) { +        if (req.dict.dict_val)                  GF_FREE (req.dict.dict_val); -        } + +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val);          return 0;  unwind: -        CLIENT_STACK_UNWIND (setxattr, frame, -1, op_errno); -        if (req.dict.dict_val) { +        CLIENT_STACK_UNWIND (setxattr, frame, -1, op_errno, NULL); +        if (req.dict.dict_val)                  GF_FREE (req.dict.dict_val); -        } + +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  } @@ -3814,13 +4430,16 @@ client3_1_fsetxattr (call_frame_t *frame, xlator_t *this,          req.flags = args->flags;          memcpy (req.gfid, args->fd->inode->gfid, 16); -        if (args->dict) { -                GF_PROTOCOL_DICT_SERIALIZE (this, args->dict, +        if (args->xattr) { +                GF_PROTOCOL_DICT_SERIALIZE (this, args->xattr,                                              (&req.dict.dict_val),                                              req.dict.dict_len,                                              op_errno, unwind);          } +        GF_PROTOCOL_DICT_SERIALIZE (this, args->xdata, (&req.xdata.xdata_val), +                                    req.xdata.xdata_len, op_errno, unwind); +          ret = client_submit_request (this, &req, frame, conf->fops,                                       GFS3_OP_FSETXATTR, client3_1_fsetxattr_cbk,                                       NULL, NULL, 0, NULL, 0, NULL, @@ -3829,16 +4448,21 @@ client3_1_fsetxattr (call_frame_t *frame, xlator_t *this,                  gf_log (this->name, GF_LOG_WARNING, "failed to send the fop");          } -        if (req.dict.dict_val) { +        if (req.dict.dict_val)                  GF_FREE (req.dict.dict_val); -        } + +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val);          return 0;  unwind: -        CLIENT_STACK_UNWIND (fsetxattr, frame, -1, op_errno); -        if (req.dict.dict_val) { +        CLIENT_STACK_UNWIND (fsetxattr, frame, -1, op_errno, NULL); +        if (req.dict.dict_val)                  GF_FREE (req.dict.dict_val); -        } + +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  } @@ -3909,6 +4533,9 @@ client3_1_fgetxattr (call_frame_t *frame, xlator_t *this,          }          memcpy (req.gfid, args->fd->inode->gfid, 16); +        GF_PROTOCOL_DICT_SERIALIZE (this, args->xdata, (&req.xdata.xdata_val), +                                    req.xdata.xdata_len, op_errno, unwind); +          ret = client_submit_request (this, &req, frame, conf->fops,                                       GFS3_OP_FGETXATTR,                                       client3_1_fgetxattr_cbk, NULL, @@ -3919,9 +4546,12 @@ client3_1_fgetxattr (call_frame_t *frame, xlator_t *this,                  gf_log (this->name, GF_LOG_WARNING, "failed to send the fop");          } +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  unwind: -        CLIENT_STACK_UNWIND (fgetxattr, frame, -1, op_errno, NULL); +        CLIENT_STACK_UNWIND (fgetxattr, frame, -1, op_errno, NULL, NULL);          if (rsp_iobuf) {                  iobuf_unref (rsp_iobuf); @@ -3930,6 +4560,8 @@ unwind:          if (rsp_iobref) {                  iobref_unref (rsp_iobref);          } +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val);          return 0;  } @@ -4032,6 +4664,9 @@ client3_1_getxattr (call_frame_t *frame, xlator_t *this,                  }          } +        GF_PROTOCOL_DICT_SERIALIZE (this, args->xdata, (&req.xdata.xdata_val), +                                    req.xdata.xdata_len, op_errno, unwind); +          ret = client_submit_request (this, &req, frame, conf->fops,                                       GFS3_OP_GETXATTR,                                       client3_1_getxattr_cbk, NULL, @@ -4042,6 +4677,9 @@ client3_1_getxattr (call_frame_t *frame, xlator_t *this,                  gf_log (this->name, GF_LOG_WARNING, "failed to send the fop");          } +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  unwind:          if (rsp_iobuf) { @@ -4052,7 +4690,10 @@ unwind:                  iobref_unref (rsp_iobref);          } -        CLIENT_STACK_UNWIND (getxattr, frame, op_ret, op_errno, dict); +        CLIENT_STACK_UNWIND (getxattr, frame, op_ret, op_errno, dict, NULL); + +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val);          return 0;  } @@ -4121,8 +4762,8 @@ client3_1_xattrop (call_frame_t *frame, xlator_t *this,          GF_ASSERT_AND_GOTO_WITH_ERROR (this->name,                                         !uuid_is_null (*((uuid_t*)req.gfid)),                                         unwind, op_errno, EINVAL); -        if (args->dict) { -                GF_PROTOCOL_DICT_SERIALIZE (this, args->dict, +        if (args->xattr) { +                GF_PROTOCOL_DICT_SERIALIZE (this, args->xattr,                                              (&req.dict.dict_val),                                              req.dict.dict_len,                                              op_errno, unwind); @@ -4132,6 +4773,9 @@ client3_1_xattrop (call_frame_t *frame, xlator_t *this,          conf = this->private; +        GF_PROTOCOL_DICT_SERIALIZE (this, args->xdata, (&req.xdata.xdata_val), +                                    req.xdata.xdata_len, op_errno, unwind); +          ret = client_submit_request (this, &req, frame, conf->fops,                                       GFS3_OP_XATTROP,                                       client3_1_xattrop_cbk, NULL, @@ -4142,12 +4786,15 @@ client3_1_xattrop (call_frame_t *frame, xlator_t *this,                  gf_log (this->name, GF_LOG_WARNING, "failed to send the fop");          } -        if (req.dict.dict_val) { +        if (req.dict.dict_val)                  GF_FREE (req.dict.dict_val); -        } + +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  unwind: -        CLIENT_STACK_UNWIND (xattrop, frame, -1, op_errno, NULL); +        CLIENT_STACK_UNWIND (xattrop, frame, -1, op_errno, NULL, NULL);          if (req.dict.dict_val) {                  GF_FREE (req.dict.dict_val); @@ -4160,6 +4807,8 @@ unwind:          if (rsp_iobref) {                  iobref_unref (rsp_iobref);          } +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val);          return 0;  } @@ -4225,13 +4874,16 @@ client3_1_fxattrop (call_frame_t *frame, xlator_t *this,          local->iobref = rsp_iobref;          rsp_iobref = NULL; -        if (args->dict) { -                GF_PROTOCOL_DICT_SERIALIZE (this, args->dict, +        if (args->xattr) { +                GF_PROTOCOL_DICT_SERIALIZE (this, args->xattr,                                              (&req.dict.dict_val),                                              req.dict.dict_len,                                              op_errno, unwind);          } +        GF_PROTOCOL_DICT_SERIALIZE (this, args->xdata, (&req.xdata.xdata_val), +                                    req.xdata.xdata_len, op_errno, unwind); +          ret = client_submit_request (this, &req, frame, conf->fops,                                       GFS3_OP_FXATTROP,                                       client3_1_fxattrop_cbk, NULL, @@ -4242,31 +4894,32 @@ client3_1_fxattrop (call_frame_t *frame, xlator_t *this,                  gf_log (this->name, GF_LOG_WARNING, "failed to send the fop");          } -        if (req.dict.dict_val) { +        if (req.dict.dict_val)                  GF_FREE (req.dict.dict_val); -        } + +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val);          return 0;  unwind: -        CLIENT_STACK_UNWIND (fxattrop, frame, -1, op_errno, NULL); +        CLIENT_STACK_UNWIND (fxattrop, frame, -1, op_errno, NULL, NULL); -        if (req.dict.dict_val) { +        if (req.dict.dict_val)                  GF_FREE (req.dict.dict_val); -        } -        if (rsp_iobref) { +        if (rsp_iobref)                  iobref_unref (rsp_iobref); -        } -        if (rsp_iobuf) { +        if (rsp_iobuf)                  iobuf_unref (rsp_iobuf); -        } + +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val);          return 0;  } -  int32_t  client3_1_removexattr (call_frame_t *frame, xlator_t *this,                         void *data) @@ -4297,6 +4950,9 @@ client3_1_removexattr (call_frame_t *frame, xlator_t *this,          conf = this->private; +        GF_PROTOCOL_DICT_SERIALIZE (this, args->xdata, (&req.xdata.xdata_val), +                                    req.xdata.xdata_len, op_errno, unwind); +          ret = client_submit_request (this, &req, frame, conf->fops,                                       GFS3_OP_REMOVEXATTR,                                       client3_1_removexattr_cbk, NULL, @@ -4306,9 +4962,15 @@ client3_1_removexattr (call_frame_t *frame, xlator_t *this,                  gf_log (this->name, GF_LOG_WARNING, "failed to send the fop");          } +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  unwind: -        CLIENT_STACK_UNWIND (removexattr, frame, -1, op_errno); +        CLIENT_STACK_UNWIND (removexattr, frame, -1, op_errno, NULL); +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  } @@ -4339,6 +5001,9 @@ client3_1_fremovexattr (call_frame_t *frame, xlator_t *this,          req.name = (char *)args->name;          req.fd = remote_fd; +        GF_PROTOCOL_DICT_SERIALIZE (this, args->xdata, (&req.xdata.xdata_val), +                                    req.xdata.xdata_len, op_errno, unwind); +          ret = client_submit_request (this, &req, frame, conf->fops,                                       GFS3_OP_FREMOVEXATTR,                                       client3_1_fremovexattr_cbk, NULL, @@ -4348,9 +5013,15 @@ client3_1_fremovexattr (call_frame_t *frame, xlator_t *this,                  gf_log (this->name, GF_LOG_WARNING, "failed to send the fop");          } +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  unwind: -        CLIENT_STACK_UNWIND (fremovexattr, frame, -1, op_errno); +        CLIENT_STACK_UNWIND (fremovexattr, frame, -1, op_errno, NULL); +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  } @@ -4421,9 +5092,15 @@ client3_1_lk (call_frame_t *frame, xlator_t *this,                  gf_log (this->name, GF_LOG_WARNING, "failed to send the fop");          } +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  unwind: -        CLIENT_STACK_UNWIND (lk, frame, -1, op_errno, NULL); +        CLIENT_STACK_UNWIND (lk, frame, -1, op_errno, NULL, NULL); +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  } @@ -4487,6 +5164,9 @@ client3_1_inodelk (call_frame_t *frame, xlator_t *this,          conf = this->private; +        GF_PROTOCOL_DICT_SERIALIZE (this, args->xdata, (&req.xdata.xdata_val), +                                    req.xdata.xdata_len, op_errno, unwind); +          ret = client_submit_request (this, &req, frame, conf->fops,                                       GFS3_OP_INODELK,                                       client3_1_inodelk_cbk, NULL, @@ -4496,9 +5176,15 @@ client3_1_inodelk (call_frame_t *frame, xlator_t *this,                  gf_log (this->name, GF_LOG_WARNING, "failed to send the fop");          } +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  unwind: -        CLIENT_STACK_UNWIND (inodelk, frame, -1, op_errno); +        CLIENT_STACK_UNWIND (inodelk, frame, -1, op_errno, NULL); +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  } @@ -4556,6 +5242,9 @@ client3_1_finodelk (call_frame_t *frame, xlator_t *this,          gf_proto_flock_from_flock (&req.flock, args->flock);          memcpy (req.gfid, args->fd->inode->gfid, 16); +        GF_PROTOCOL_DICT_SERIALIZE (this, args->xdata, (&req.xdata.xdata_val), +                                    req.xdata.xdata_len, op_errno, unwind); +          ret = client_submit_request (this, &req, frame, conf->fops,                                       GFS3_OP_FINODELK,                                       client3_1_finodelk_cbk, NULL, @@ -4565,9 +5254,14 @@ client3_1_finodelk (call_frame_t *frame, xlator_t *this,                  gf_log (this->name, GF_LOG_WARNING, "failed to send the fop");          } +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val);          return 0;  unwind: -        CLIENT_STACK_UNWIND (finodelk, frame, -1, op_errno); +        CLIENT_STACK_UNWIND (finodelk, frame, -1, op_errno, NULL); +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  } @@ -4609,6 +5303,9 @@ client3_1_entrylk (call_frame_t *frame, xlator_t *this,          conf = this->private; +        GF_PROTOCOL_DICT_SERIALIZE (this, args->xdata, (&req.xdata.xdata_val), +                                    req.xdata.xdata_len, op_errno, unwind); +          ret = client_submit_request (this, &req, frame, conf->fops,                                       GFS3_OP_ENTRYLK,                                       client3_1_entrylk_cbk, NULL, @@ -4618,9 +5315,15 @@ client3_1_entrylk (call_frame_t *frame, xlator_t *this,                  gf_log (this->name, GF_LOG_WARNING, "failed to send the fop");          } +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  unwind: -        CLIENT_STACK_UNWIND (entrylk, frame, -1, op_errno); +        CLIENT_STACK_UNWIND (entrylk, frame, -1, op_errno, NULL); +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  } @@ -4656,6 +5359,9 @@ client3_1_fentrylk (call_frame_t *frame, xlator_t *this,          }          memcpy (req.gfid, args->fd->inode->gfid, 16); +        GF_PROTOCOL_DICT_SERIALIZE (this, args->xdata, (&req.xdata.xdata_val), +                                    req.xdata.xdata_len, op_errno, unwind); +          ret = client_submit_request (this, &req, frame, conf->fops,                                       GFS3_OP_FENTRYLK,                                       client3_1_fentrylk_cbk, NULL, @@ -4665,9 +5371,15 @@ client3_1_fentrylk (call_frame_t *frame, xlator_t *this,                  gf_log (this->name, GF_LOG_WARNING, "failed to send the fop");          } +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  unwind: -        CLIENT_STACK_UNWIND (fentrylk, frame, -1, op_errno); +        CLIENT_STACK_UNWIND (fentrylk, frame, -1, op_errno, NULL); +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  } @@ -4695,6 +5407,9 @@ client3_1_rchecksum (call_frame_t *frame, xlator_t *this,          req.offset = args->offset;          req.fd     = remote_fd; +        GF_PROTOCOL_DICT_SERIALIZE (this, args->xdata, (&req.xdata.xdata_val), +                                    req.xdata.xdata_len, op_errno, unwind); +          ret = client_submit_request (this, &req, frame, conf->fops,                                       GFS3_OP_RCHECKSUM,                                       client3_1_rchecksum_cbk, NULL, @@ -4705,9 +5420,15 @@ client3_1_rchecksum (call_frame_t *frame, xlator_t *this,                  gf_log (this->name, GF_LOG_WARNING, "failed to send the fop");          } +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  unwind: -        CLIENT_STACK_UNWIND (rchecksum, frame, -1, op_errno, 0, NULL); +        CLIENT_STACK_UNWIND (rchecksum, frame, -1, op_errno, 0, NULL, NULL); +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  } @@ -4782,6 +5503,8 @@ client3_1_readdir (call_frame_t *frame, xlator_t *this,          local->cmd = remote_fd;          memcpy (req.gfid, args->fd->inode->gfid, 16); +        GF_PROTOCOL_DICT_SERIALIZE (this, args->xdata, (&req.xdata.xdata_val), +                                    req.xdata.xdata_len, op_errno, unwind);          ret = client_submit_request (this, &req, frame, conf->fops,                                       GFS3_OP_READDIR, @@ -4795,6 +5518,9 @@ client3_1_readdir (call_frame_t *frame, xlator_t *this,                  gf_log (this->name, GF_LOG_WARNING, "failed to send the fop");          } +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  unwind: @@ -4806,7 +5532,10 @@ unwind:                  iobuf_unref (rsp_iobuf);          } -        CLIENT_STACK_UNWIND (readdir, frame, -1, op_errno, NULL); +        CLIENT_STACK_UNWIND (readdir, frame, -1, op_errno, NULL, NULL); +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  } @@ -4882,12 +5611,9 @@ client3_1_readdirp (call_frame_t *frame, xlator_t *this,          req.fd = remote_fd;          memcpy (req.gfid, args->fd->inode->gfid, 16); -        if (args->dict) { -                GF_PROTOCOL_DICT_SERIALIZE (this, args->dict, -                                            (&req.dict.dict_val), -                                            req.dict.dict_len, -                                            op_errno, unwind); -        } +        /* dict itself is 'xdata' here */ +        GF_PROTOCOL_DICT_SERIALIZE (this, args->xdata, (&req.dict.dict_val), +                                    req.dict.dict_len, op_errno, unwind);          ret = client_submit_request (this, &req, frame, conf->fops,                                       GFS3_OP_READDIRP, @@ -4915,7 +5641,7 @@ unwind:          if (req.dict.dict_val)                  GF_FREE (req.dict.dict_val); -        CLIENT_STACK_UNWIND (readdirp, frame, -1, op_errno, NULL); +        CLIENT_STACK_UNWIND (readdirp, frame, -1, op_errno, NULL, NULL);          return 0;  } @@ -4951,6 +5677,9 @@ client3_1_setattr (call_frame_t *frame, xlator_t *this,          conf = this->private; +        GF_PROTOCOL_DICT_SERIALIZE (this, args->xdata, (&req.xdata.xdata_val), +                                    req.xdata.xdata_len, op_errno, unwind); +          ret = client_submit_request (this, &req, frame, conf->fops,                                       GFS3_OP_SETATTR,                                       client3_1_setattr_cbk, NULL, @@ -4960,9 +5689,15 @@ client3_1_setattr (call_frame_t *frame, xlator_t *this,                  gf_log (this->name, GF_LOG_WARNING, "failed to send the fop");          } +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  unwind: -        CLIENT_STACK_UNWIND (setattr, frame, -1, op_errno, NULL, NULL); +        CLIENT_STACK_UNWIND (setattr, frame, -1, op_errno, NULL, NULL, NULL); +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  } @@ -4997,9 +5732,15 @@ client3_1_fsetattr (call_frame_t *frame, xlator_t *this, void *data)                  gf_log (this->name, GF_LOG_WARNING, "failed to send the fop");          } +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  unwind: -        CLIENT_STACK_UNWIND (fsetattr, frame, -1, op_errno, NULL, NULL); +        CLIENT_STACK_UNWIND (fsetattr, frame, -1, op_errno, NULL, NULL, NULL); +        if (req.xdata.xdata_val) +                GF_FREE (req.xdata.xdata_val); +          return 0;  } diff --git a/xlators/protocol/server/src/server-helpers.c b/xlators/protocol/server/src/server-helpers.c index adcf9c1f1..7ccd629e7 100644 --- a/xlators/protocol/server/src/server-helpers.c +++ b/xlators/protocol/server/src/server-helpers.c @@ -116,6 +116,11 @@ free_state (server_state_t *state)                  state->dict = NULL;          } +        if (state->xdata) { +                dict_unref (state->xdata); +                state->xdata = NULL; +        } +          if (state->volume)                  GF_FREE ((void *)state->volume); @@ -249,7 +254,7 @@ out:  static int  server_nop_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)  {          int             ret   = -1;          server_state_t *state = NULL; @@ -334,7 +339,7 @@ do_lock_table_cleanup (xlator_t *this, server_connection_t *conn,                          STACK_WIND (tmp_frame, server_nop_cbk, bound_xl,                                      bound_xl->fops->finodelk,                                      locker->volume, -                                    locker->fd, F_SETLK, &flock); +                                    locker->fd, F_SETLK, &flock, NULL);                          fd_unref (locker->fd);                  } else {                          gf_log (this->name, GF_LOG_INFO, "inodelk released " @@ -343,7 +348,7 @@ do_lock_table_cleanup (xlator_t *this, server_connection_t *conn,                          STACK_WIND (tmp_frame, server_nop_cbk, bound_xl,                                      bound_xl->fops->inodelk,                                      locker->volume, -                                    &(locker->loc), F_SETLK, &flock); +                                    &(locker->loc), F_SETLK, &flock, NULL);                          loc_wipe (&locker->loc);                  } @@ -382,7 +387,7 @@ do_lock_table_cleanup (xlator_t *this, server_connection_t *conn,                                      bound_xl->fops->fentrylk,                                      locker->volume,                                      locker->fd, NULL, -                                    ENTRYLK_UNLOCK, ENTRYLK_WRLCK); +                                    ENTRYLK_UNLOCK, ENTRYLK_WRLCK, NULL);                          fd_unref (locker->fd);                  } else {                          gf_log (this->name, GF_LOG_INFO, "entrylk released " @@ -392,7 +397,7 @@ do_lock_table_cleanup (xlator_t *this, server_connection_t *conn,                                      bound_xl->fops->entrylk,                                      locker->volume,                                      &(locker->loc), NULL, -                                    ENTRYLK_UNLOCK, ENTRYLK_WRLCK); +                                    ENTRYLK_UNLOCK, ENTRYLK_WRLCK, NULL);                          loc_wipe (&locker->loc);                  } @@ -411,7 +416,7 @@ out:  static int  server_connection_cleanup_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)  {          int32_t ret = -1;          fd_t *fd = NULL; @@ -484,7 +489,7 @@ do_fd_cleanup (xlator_t *this, server_connection_t *conn, call_frame_t *frame,                          STACK_WIND (tmp_frame,                                      server_connection_cleanup_flush_cbk, -                                    bound_xl, bound_xl->fops->flush, fd); +                                    bound_xl, bound_xl->fops->flush, fd, NULL);                  }          } diff --git a/xlators/protocol/server/src/server-resolve.c b/xlators/protocol/server/src/server-resolve.c index 38ab368c3..4992fb530 100644 --- a/xlators/protocol/server/src/server-resolve.c +++ b/xlators/protocol/server/src/server-resolve.c @@ -70,7 +70,8 @@ resolve_loc_touchup (call_frame_t *frame)  int  resolve_gfid_entry_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, struct iatt *postparent) +                        struct iatt *buf, dict_t *xdata, +                        struct iatt *postparent)  {          server_state_t       *state = NULL;          server_resolve_t     *resolve = NULL; @@ -111,7 +112,7 @@ out:  int  resolve_gfid_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, struct iatt *postparent) +                  dict_t *xdata, struct iatt *postparent)  {          server_state_t       *state = NULL;          server_resolve_t     *resolve = NULL; diff --git a/xlators/protocol/server/src/server.h b/xlators/protocol/server/src/server.h index d000c8d36..94ceafd10 100644 --- a/xlators/protocol/server/src/server.h +++ b/xlators/protocol/server/src/server.h @@ -197,6 +197,9 @@ struct _server_state {          struct gf_flock      flock;          const char       *volume;          dir_entry_t      *entry; + +        dict_t           *xdata; +        mode_t            umask;  };  extern struct rpcsvc_program gluster_handshake_prog; diff --git a/xlators/protocol/server/src/server3_1-fops.c b/xlators/protocol/server/src/server3_1-fops.c index ef9a98f38..1c40a12cf 100644 --- a/xlators/protocol/server/src/server3_1-fops.c +++ b/xlators/protocol/server/src/server3_1-fops.c @@ -36,15 +36,13 @@  /* Callback function section */  int  server_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)  {          gfs3_statfs_rsp   rsp = {0,};          rpcsvc_request_t *req = NULL; -        req           = frame->local; - -        rsp.op_ret    = op_ret; -        rsp.op_errno  = gf_errno_to_error (op_errno); +        req = frame->local;          if (op_ret >= 0) {                  gf_statfs_from_statfs (&rsp.statfs, buf); @@ -54,16 +52,27 @@ server_statfs_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          frame->root->unique, op_ret, strerror (op_errno));          } +        GF_PROTOCOL_DICT_SERIALIZE (this, xdata, (&rsp.xdata.xdata_val), +                                    rsp.xdata.xdata_len, op_errno, out); + +out: +        rsp.op_ret    = op_ret; +        rsp.op_errno  = gf_errno_to_error (op_errno); + +          server_submit_reply (frame, req, &rsp, NULL, 0, NULL,                               (xdrproc_t)xdr_gfs3_statfs_rsp); +        if (rsp.xdata.xdata_val) +                GF_FREE (rsp.xdata.xdata_val); +          return 0;  }  int  server_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, +                   inode_t *inode, struct iatt *stbuf, dict_t *xdata,                     struct iatt *postparent)  {          rpcsvc_request_t *req        = NULL; @@ -86,19 +95,12 @@ server_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  STACK_WIND (frame, server_lookup_cbk, BOUND_XL (frame),                              BOUND_XL (frame)->fops->lookup, -                            &fresh_loc, state->dict); +                            &fresh_loc, state->xdata);                  loc_wipe (&fresh_loc);                  return 0;          } -        if ((op_ret >= 0) && dict) { -                GF_PROTOCOL_DICT_SERIALIZE (this, dict, -                                            (&rsp.dict.dict_val), -                                            rsp.dict.dict_len, -                                            op_errno, out); -        } -          gf_stat_from_iatt (&rsp.postparent, postparent);          if (op_ret == 0) { @@ -129,6 +131,10 @@ server_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          }                  }          } + +        GF_PROTOCOL_DICT_SERIALIZE (this, xdata, (&rsp.xdata.xdata_val), +                                    rsp.xdata.xdata_len, op_errno, out); +  out:          rsp.op_ret   = op_ret;          rsp.op_errno = gf_errno_to_error (op_errno); @@ -145,8 +151,8 @@ out:          server_submit_reply (frame, req, &rsp, NULL, 0, NULL,                               (xdrproc_t)xdr_gfs3_lookup_rsp); -        if (rsp.dict.dict_val) -                GF_FREE (rsp.dict.dict_val); +        if (rsp.xdata.xdata_val) +                GF_FREE (rsp.xdata.xdata_val);          return 0;  } @@ -154,16 +160,17 @@ out:  int  server_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_ret, int32_t op_errno, struct gf_flock *lock, +               dict_t *xdata)  {          gfs3_lk_rsp       rsp   = {0,};          rpcsvc_request_t *req   = NULL;          server_state_t   *state = NULL; -        req           = frame->local; +        req = frame->local; -        rsp.op_ret    = op_ret; -        rsp.op_errno  = gf_errno_to_error (op_errno); +        GF_PROTOCOL_DICT_SERIALIZE (this, xdata, (&rsp.xdata.xdata_val), +                                    rsp.xdata.xdata_len, op_errno, out);          state = CALL_STATE(frame); @@ -193,16 +200,23 @@ server_lk_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          op_ret, strerror (op_errno));          } +out: +        rsp.op_ret    = op_ret; +        rsp.op_errno  = gf_errno_to_error (op_errno); +          server_submit_reply (frame, req, &rsp, NULL, 0, NULL,                               (xdrproc_t)xdr_gfs3_lk_rsp); +        if (rsp.xdata.xdata_val) +                GF_FREE (rsp.xdata.xdata_val); +          return 0;  }  int  server_inodelk_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_common_rsp        rsp   = {0,};          server_connection_t *conn  = NULL; @@ -211,8 +225,8 @@ server_inodelk_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          req           = frame->local; -        rsp.op_ret    = op_ret; -        rsp.op_errno  = gf_errno_to_error (op_errno); +        GF_PROTOCOL_DICT_SERIALIZE (this, xdata, (&rsp.xdata.xdata_val), +                                    rsp.xdata.xdata_len, op_errno, out);          conn  = SERVER_CONNECTION(frame);          state = CALL_STATE(frame); @@ -235,26 +249,30 @@ server_inodelk_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          "--", op_ret, strerror (op_errno));          } +out: +        rsp.op_ret    = op_ret; +        rsp.op_errno  = gf_errno_to_error (op_errno); +          server_submit_reply (frame, req, &rsp, NULL, 0, NULL,                               (xdrproc_t)xdr_gf_common_rsp); +        if (rsp.xdata.xdata_val) +                GF_FREE (rsp.xdata.xdata_val); +          return 0;  }  int  server_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_common_rsp        rsp   = {0,};          server_state_t      *state = NULL;          server_connection_t *conn  = NULL;          rpcsvc_request_t    *req   = NULL; -        req           = frame->local; - -        rsp.op_ret    = op_ret; -        rsp.op_errno  = gf_errno_to_error (op_errno); +        req = frame->local;          conn = SERVER_CONNECTION(frame);          state = CALL_STATE(frame); @@ -277,25 +295,32 @@ server_finodelk_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          op_ret, strerror (op_errno));          } +        GF_PROTOCOL_DICT_SERIALIZE (this, xdata, (&rsp.xdata.xdata_val), +                                    rsp.xdata.xdata_len, op_errno, out); + +out: +        rsp.op_ret    = op_ret; +        rsp.op_errno  = gf_errno_to_error (op_errno); +          server_submit_reply (frame, req, &rsp, NULL, 0, NULL,                               (xdrproc_t)xdr_gf_common_rsp); +        if (rsp.xdata.xdata_val) +                GF_FREE (rsp.xdata.xdata_val); +          return 0;  }  int  server_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)  {          server_connection_t *conn  = NULL;          server_state_t      *state = NULL;          rpcsvc_request_t    *req   = NULL;          gf_common_rsp        rsp   = {0,}; -        req           = frame->local; - -        rsp.op_ret    = op_ret; -        rsp.op_errno  = gf_errno_to_error (op_errno); +        req = frame->local;          conn  = SERVER_CONNECTION(frame);          state = CALL_STATE(frame); @@ -318,26 +343,33 @@ server_entrylk_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          "--", op_ret, strerror (op_errno));          } +        GF_PROTOCOL_DICT_SERIALIZE (this, xdata, (&rsp.xdata.xdata_val), +                                    rsp.xdata.xdata_len, op_errno, out); + +out: +        rsp.op_ret    = op_ret; +        rsp.op_errno  = gf_errno_to_error (op_errno); +          server_submit_reply (frame, req, &rsp, NULL, 0, NULL,                               (xdrproc_t)xdr_gf_common_rsp); + +        if (rsp.xdata.xdata_val) +                GF_FREE (rsp.xdata.xdata_val); +          return 0;  }  int  server_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_common_rsp        rsp   = {0,};          server_connection_t *conn  = NULL;          server_state_t      *state = NULL;          rpcsvc_request_t    *req   = NULL; -        req           = frame->local; - -        rsp.op_ret    = op_ret; -        rsp.op_errno  = gf_errno_to_error (op_errno); - +        req   = frame->local;          conn  = SERVER_CONNECTION(frame);          state = CALL_STATE(frame);          if (op_ret >= 0) { @@ -358,27 +390,35 @@ server_fentrylk_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          op_ret, strerror (op_errno));          } +        GF_PROTOCOL_DICT_SERIALIZE (this, xdata, (&rsp.xdata.xdata_val), +                                    rsp.xdata.xdata_len, op_errno, out); + +out: +        rsp.op_ret    = op_ret; +        rsp.op_errno  = gf_errno_to_error (op_errno); +          server_submit_reply (frame, req, &rsp, NULL, 0, NULL,                               (xdrproc_t)xdr_gf_common_rsp); +        if (rsp.xdata.xdata_val) +                GF_FREE (rsp.xdata.xdata_val); +          return 0;  }  int  server_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)  {          gf_common_rsp     rsp = {0,};          rpcsvc_request_t *req = NULL;          server_state_t   *state = NULL; -        req           = frame->local; +        req = frame->local;          state = CALL_STATE(frame); -        rsp.op_ret    = op_ret; -        rsp.op_errno  = gf_errno_to_error (op_errno);          if (op_ret)                  gf_log (this->name, GF_LOG_INFO,                          "%"PRId64": ACCESS %s (%s) ==> %"PRId32" (%s)", @@ -386,26 +426,33 @@ server_access_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          state->loc.inode ? uuid_utoa (state->loc.inode->gfid) :                          "--", op_ret, strerror (op_errno)); +        GF_PROTOCOL_DICT_SERIALIZE (this, xdata, (&rsp.xdata.xdata_val), +                                    rsp.xdata.xdata_len, op_errno, out); + +out: +        rsp.op_ret    = op_ret; +        rsp.op_errno  = gf_errno_to_error (op_errno); +          server_submit_reply (frame, req, &rsp, NULL, 0, NULL,                               (xdrproc_t)xdr_gf_common_rsp); +        if (rsp.xdata.xdata_val) +                GF_FREE (rsp.xdata.xdata_val); +          return 0;  }  int  server_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)  {          gfs3_rmdir_rsp    rsp    = {0,};          server_state_t   *state  = NULL;          inode_t          *parent = NULL;          rpcsvc_request_t *req    = NULL; -        req           = frame->local; - -        rsp.op_ret    = op_ret; -        rsp.op_errno  = gf_errno_to_error (op_errno); +        req = frame->local;          state = CALL_STATE(frame); @@ -432,9 +479,19 @@ server_rmdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          "--", op_ret, strerror (op_errno));          } +        GF_PROTOCOL_DICT_SERIALIZE (this, xdata, (&rsp.xdata.xdata_val), +                                    rsp.xdata.xdata_len, op_errno, out); + +out: +        rsp.op_ret    = op_ret; +        rsp.op_errno  = gf_errno_to_error (op_errno); +          server_submit_reply (frame, req, &rsp, NULL, 0, NULL,                               (xdrproc_t)xdr_gfs3_rmdir_rsp); +        if (rsp.xdata.xdata_val) +                GF_FREE (rsp.xdata.xdata_val); +          return 0;  } @@ -442,17 +499,14 @@ int  server_mkdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                    int32_t op_ret, int32_t op_errno, inode_t *inode,                    struct iatt *stbuf, struct iatt *preparent, -                  struct iatt *postparent) +                  struct iatt *postparent, dict_t *xdata)  {          gfs3_mkdir_rsp    rsp        = {0,};          server_state_t   *state      = NULL;          inode_t          *link_inode = NULL;          rpcsvc_request_t *req        = NULL; -        req           = frame->local; - -        rsp.op_ret    = op_ret; -        rsp.op_errno  = gf_errno_to_error (op_errno); +        req = frame->local;          state = CALL_STATE(frame);          if (op_ret >= 0) { @@ -471,9 +525,19 @@ server_mkdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          op_ret, strerror (op_errno));          } +        GF_PROTOCOL_DICT_SERIALIZE (this, xdata, (&rsp.xdata.xdata_val), +                                    rsp.xdata.xdata_len, op_errno, out); + +out: +        rsp.op_ret    = op_ret; +        rsp.op_errno  = gf_errno_to_error (op_errno); +          server_submit_reply (frame, req, &rsp, NULL, 0, NULL,                               (xdrproc_t)xdr_gfs3_mkdir_rsp); +        if (rsp.xdata.xdata_val) +                GF_FREE (rsp.xdata.xdata_val); +          return 0;  } @@ -481,17 +545,14 @@ int  server_mknod_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                    int32_t op_ret, int32_t op_errno,                    inode_t *inode, struct iatt *stbuf, struct iatt *preparent, -                  struct iatt *postparent) +                  struct iatt *postparent, dict_t *xdata)  {          gfs3_mknod_rsp    rsp        = {0,};          server_state_t   *state      = NULL;          inode_t          *link_inode = NULL;          rpcsvc_request_t *req        = NULL; -        req           = frame->local; - -        rsp.op_ret    = op_ret; -        rsp.op_errno  = gf_errno_to_error (op_errno); +        req = frame->local;          state = CALL_STATE(frame);          if (op_ret >= 0) { @@ -510,25 +571,31 @@ server_mknod_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          op_ret, strerror (op_errno));          } +        GF_PROTOCOL_DICT_SERIALIZE (this, xdata, (&rsp.xdata.xdata_val), +                                    rsp.xdata.xdata_len, op_errno, out); + +out: +        rsp.op_ret    = op_ret; +        rsp.op_errno  = gf_errno_to_error (op_errno); +          server_submit_reply (frame, req, &rsp, NULL, 0, NULL,                               (xdrproc_t)xdr_gfs3_mknod_rsp); +        if (rsp.xdata.xdata_val) +                GF_FREE (rsp.xdata.xdata_val);          return 0;  }  int  server_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)  {          gf_common_rsp     rsp   = {0,};          server_state_t   *state = NULL;          rpcsvc_request_t *req   = NULL; -        req           = frame->local; - -        rsp.op_ret    = op_ret; -        rsp.op_errno  = gf_errno_to_error (op_errno); +        req = frame->local;          state = CALL_STATE(frame); @@ -540,22 +607,32 @@ server_fsyncdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          op_ret, strerror (op_errno));          } +        GF_PROTOCOL_DICT_SERIALIZE (this, xdata, (&rsp.xdata.xdata_val), +                                    rsp.xdata.xdata_len, op_errno, out); + +out: +        rsp.op_ret    = op_ret; +        rsp.op_errno  = gf_errno_to_error (op_errno); +          server_submit_reply (frame, req, &rsp, NULL, 0, NULL,                               (xdrproc_t)xdr_gf_common_rsp); +        if (rsp.xdata.xdata_val) +                GF_FREE (rsp.xdata.xdata_val); +          return 0;  }  int  server_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)  {          gfs3_readdir_rsp  rsp   = {0,};          server_state_t   *state = NULL;          rpcsvc_request_t *req   = NULL;          int               ret   = 0; -        req           = frame->local; +        req = frame->local;          state = CALL_STATE(frame);          if (op_ret > 0) { @@ -563,7 +640,7 @@ server_readdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  if (ret == -1) {                          op_ret   = -1;                          op_errno = ENOMEM; -                        goto unwind; +                        goto out;                  }          } else {                  /* (op_ret == 0) is valid, and means EOF, don't log for that */ @@ -573,40 +650,28 @@ server_readdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          state->fd ? uuid_utoa (state->fd->inode->gfid) : "--",                          op_ret, strerror (op_errno));          } -unwind: + +        GF_PROTOCOL_DICT_SERIALIZE (this, xdata, (&rsp.xdata.xdata_val), +                                    rsp.xdata.xdata_len, op_errno, out); + +out:          rsp.op_ret    = op_ret;          rsp.op_errno  = gf_errno_to_error (op_errno);          server_submit_reply (frame, req, &rsp, NULL, 0, NULL,                               (xdrproc_t)xdr_gfs3_readdir_rsp); -        readdir_rsp_cleanup (&rsp); - -        return 0; -} - - -int -server_releasedir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                       int32_t op_ret, int32_t op_errno) -{ -        gf_common_rsp     rsp = {0,}; -        rpcsvc_request_t *req = NULL; +        if (rsp.xdata.xdata_val) +                GF_FREE (rsp.xdata.xdata_val); -        req           = frame->local; - -        rsp.op_ret    = op_ret; -        rsp.op_errno  = gf_errno_to_error (op_errno); - -        server_submit_reply (frame, req, &rsp, NULL, 0, NULL, -                             (xdrproc_t)xdr_gf_common_rsp); +        readdir_rsp_cleanup (&rsp);          return 0;  }  int  server_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)  {          server_connection_t *conn  = NULL;          server_state_t      *state = NULL; @@ -630,21 +695,28 @@ server_opendir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          "--", op_ret, strerror (op_errno));          } -        req           = frame->local; +        req = frame->local; -        rsp.fd        = fd_no; +        GF_PROTOCOL_DICT_SERIALIZE (this, xdata, (&rsp.xdata.xdata_val), +                                    rsp.xdata.xdata_len, op_errno, out); + +out: +        rsp.fd = fd_no;          rsp.op_ret    = op_ret;          rsp.op_errno  = gf_errno_to_error (op_errno);          server_submit_reply (frame, req, &rsp, NULL, 0, NULL,                               (xdrproc_t)xdr_gfs3_opendir_rsp); +        if (rsp.xdata.xdata_val) +                GF_FREE (rsp.xdata.xdata_val); +          return 0;  }  int  server_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)  {          gf_common_rsp     rsp = {0,};          rpcsvc_request_t *req = NULL; @@ -653,8 +725,6 @@ server_removexattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          req   = frame->local;          state = CALL_STATE(frame); -        rsp.op_ret    = op_ret; -        rsp.op_errno  = gf_errno_to_error (op_errno);          if (op_ret == -1)                  gf_log (this->name, GF_LOG_INFO,                          "%"PRId64": REMOVEXATTR %s (%s) ==> %"PRId32" (%s)", @@ -662,15 +732,25 @@ server_removexattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          state->loc.inode ? uuid_utoa (state->loc.inode->gfid) :                          "--", op_ret, strerror (op_errno)); +        GF_PROTOCOL_DICT_SERIALIZE (this, xdata, (&rsp.xdata.xdata_val), +                                    rsp.xdata.xdata_len, op_errno, out); + +out: +        rsp.op_ret    = op_ret; +        rsp.op_errno  = gf_errno_to_error (op_errno); +          server_submit_reply (frame, req, &rsp, NULL, 0, NULL,                               (xdrproc_t)xdr_gf_common_rsp); +        if (rsp.xdata.xdata_val) +                GF_FREE (rsp.xdata.xdata_val); +          return 0;  }  int  server_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)  {          gf_common_rsp     rsp = {0,};          rpcsvc_request_t *req = NULL; @@ -679,8 +759,6 @@ server_fremovexattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          req   = frame->local;          state = CALL_STATE(frame); -        rsp.op_ret    = op_ret; -        rsp.op_errno  = gf_errno_to_error (op_errno);          if (op_ret == -1)                  gf_log (this->name, GF_LOG_INFO,                          "%"PRId64": FREMOVEXATTR (%s) ==> %"PRId32" (%s)", @@ -689,15 +767,26 @@ server_fremovexattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                                                "--"),                          op_ret, strerror (op_errno)); +        GF_PROTOCOL_DICT_SERIALIZE (this, xdata, (&rsp.xdata.xdata_val), +                                    rsp.xdata.xdata_len, op_errno, out); + +out: +        rsp.op_ret    = op_ret; +        rsp.op_errno  = gf_errno_to_error (op_errno); +          server_submit_reply (frame, req, &rsp, NULL, 0, NULL,                               (xdrproc_t)xdr_gf_common_rsp); +        if (rsp.xdata.xdata_val) +                GF_FREE (rsp.xdata.xdata_val); +          return 0;  }  int  server_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)  {          gfs3_getxattr_rsp  rsp   = {0,};          rpcsvc_request_t  *req   = NULL; @@ -711,6 +800,10 @@ server_getxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                                              rsp.dict.dict_len,                                              op_errno, out);          } + +        GF_PROTOCOL_DICT_SERIALIZE (this, xdata, (&rsp.xdata.xdata_val), +                                    rsp.xdata.xdata_len, op_errno, out); +  out:          req               = frame->local; @@ -729,13 +822,17 @@ out:          if (rsp.dict.dict_val)                  GF_FREE (rsp.dict.dict_val); +        if (rsp.xdata.xdata_val) +                GF_FREE (rsp.xdata.xdata_val); +          return 0;  }  int  server_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)  {          gfs3_fgetxattr_rsp  rsp   = {0,};          server_state_t     *state = NULL; @@ -750,6 +847,9 @@ server_fgetxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                                              op_errno, out);          } +        GF_PROTOCOL_DICT_SERIALIZE (this, xdata, (&rsp.xdata.xdata_val), +                                    rsp.xdata.xdata_len, op_errno, out); +  out:          req               = frame->local; @@ -768,12 +868,15 @@ out:          if (rsp.dict.dict_val)                  GF_FREE (rsp.dict.dict_val); +        if (rsp.xdata.xdata_val) +                GF_FREE (rsp.xdata.xdata_val); +          return 0;  }  int  server_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)  {          gf_common_rsp     rsp = {0,};          rpcsvc_request_t *req = NULL; @@ -791,26 +894,35 @@ server_setxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          frame->root->unique, state->loc.path,                          state->loc.inode ? uuid_utoa (state->loc.inode->gfid) :                          "--", op_ret, strerror (op_errno)); + +        GF_PROTOCOL_DICT_SERIALIZE (this, xdata, (&rsp.xdata.xdata_val), +                                    rsp.xdata.xdata_len, op_errno, out); + +out: +        rsp.op_ret    = op_ret; +        rsp.op_errno  = gf_errno_to_error (op_errno); +          server_submit_reply (frame, req, &rsp, NULL, 0, NULL,                               (xdrproc_t)xdr_gf_common_rsp); +        if (rsp.xdata.xdata_val) +                GF_FREE (rsp.xdata.xdata_val); +          return 0;  }  int  server_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_common_rsp     rsp = {0,};          rpcsvc_request_t *req = NULL;          server_state_t      *state = NULL; -        req           = frame->local; +        req = frame->local;          state = CALL_STATE(frame); -        rsp.op_ret    = op_ret; -        rsp.op_errno  = gf_errno_to_error (op_errno);          if (op_ret == -1)                  gf_log (this->name, GF_LOG_INFO, @@ -819,9 +931,19 @@ server_fsetxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          state->fd ? uuid_utoa (state->fd->inode->gfid) : "--",                          op_ret, strerror (op_errno)); +        GF_PROTOCOL_DICT_SERIALIZE (this, xdata, (&rsp.xdata.xdata_val), +                                    rsp.xdata.xdata_len, op_errno, out); + +out: +        rsp.op_ret    = op_ret; +        rsp.op_errno  = gf_errno_to_error (op_errno); +          server_submit_reply (frame, req, &rsp, NULL, 0, NULL,                               (xdrproc_t)xdr_gf_common_rsp); +        if (rsp.xdata.xdata_val) +                GF_FREE (rsp.xdata.xdata_val); +          return 0;  } @@ -829,7 +951,8 @@ int  server_rename_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                     int32_t op_ret, int32_t op_errno, struct iatt *stbuf,                     struct iatt *preoldparent, struct iatt *postoldparent, -                   struct iatt *prenewparent, struct iatt *postnewparent) +                   struct iatt *prenewparent, struct iatt *postnewparent, +                   dict_t *xdata)  {          gfs3_rename_rsp   rsp   = {0,};          server_state_t   *state = NULL; @@ -837,11 +960,7 @@ server_rename_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          inode_t     *tmp_inode = NULL;          inode_t     *tmp_parent = NULL; -        req           = frame->local; - -        rsp.op_ret    = op_ret; -        rsp.op_errno  = gf_errno_to_error (op_errno); - +        req   = frame->local;          state = CALL_STATE(frame);          if (op_ret == 0) { @@ -894,26 +1013,33 @@ server_rename_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          state->loc.inode ? uuid_utoa (state->loc.inode->gfid) :                          "--", op_ret, strerror (op_errno)); +        GF_PROTOCOL_DICT_SERIALIZE (this, xdata, (&rsp.xdata.xdata_val), +                                    rsp.xdata.xdata_len, op_errno, out); + +out: +        rsp.op_ret    = op_ret; +        rsp.op_errno  = gf_errno_to_error (op_errno); +          server_submit_reply (frame, req, &rsp, NULL, 0, NULL,                               (xdrproc_t)xdr_gfs3_rename_rsp); +        if (rsp.xdata.xdata_val) +                GF_FREE (rsp.xdata.xdata_val); +          return 0;  }  int  server_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)  {          gfs3_unlink_rsp   rsp    = {0,};          server_state_t   *state  = NULL;          inode_t          *parent = NULL;          rpcsvc_request_t *req    = NULL; -        req           = frame->local; - -        rsp.op_ret    = op_ret; -        rsp.op_errno  = gf_errno_to_error (op_errno); +        req = frame->local;          state = CALL_STATE(frame); @@ -943,9 +1069,19 @@ server_unlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          "--", op_ret, strerror (op_errno));          } +        GF_PROTOCOL_DICT_SERIALIZE (this, xdata, (&rsp.xdata.xdata_val), +                                    rsp.xdata.xdata_len, op_errno, out); + +out: +        rsp.op_ret    = op_ret; +        rsp.op_errno  = gf_errno_to_error (op_errno); +          server_submit_reply (frame, req, &rsp, NULL, 0, NULL,                               (xdrproc_t)xdr_gfs3_unlink_rsp); +        if (rsp.xdata.xdata_val) +                GF_FREE (rsp.xdata.xdata_val); +          return 0;  } @@ -953,17 +1089,14 @@ int  server_symlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                      int32_t op_ret, int32_t op_errno, inode_t *inode,                      struct iatt *stbuf, struct iatt *preparent, -                    struct iatt *postparent) +                    struct iatt *postparent, dict_t *xdata)  {          gfs3_symlink_rsp  rsp        = {0,};          server_state_t   *state      = NULL;          inode_t          *link_inode = NULL;          rpcsvc_request_t *req        = NULL; -        req           = frame->local; - -        rsp.op_ret    = op_ret; -        rsp.op_errno  = gf_errno_to_error (op_errno); +        req = frame->local;          state = CALL_STATE(frame);          if (op_ret >= 0) { @@ -983,9 +1116,19 @@ server_symlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          "--", op_ret, strerror (op_errno));          } +        GF_PROTOCOL_DICT_SERIALIZE (this, xdata, (&rsp.xdata.xdata_val), +                                    rsp.xdata.xdata_len, op_errno, out); + +out: +        rsp.op_ret    = op_ret; +        rsp.op_errno  = gf_errno_to_error (op_errno); +          server_submit_reply (frame, req, &rsp, NULL, 0, NULL,                               (xdrproc_t)xdr_gfs3_symlink_rsp); +        if (rsp.xdata.xdata_val) +                GF_FREE (rsp.xdata.xdata_val); +          return 0;  } @@ -994,17 +1137,14 @@ int  server_link_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                   int32_t op_ret, int32_t op_errno, inode_t *inode,                   struct iatt *stbuf, struct iatt *preparent, -                 struct iatt *postparent) +                 struct iatt *postparent, dict_t *xdata)  {          gfs3_link_rsp     rsp        = {0,};          server_state_t   *state      = NULL;          inode_t          *link_inode = NULL;          rpcsvc_request_t *req        = NULL; -        req           = frame->local; - -        rsp.op_ret    = op_ret; -        rsp.op_errno  = gf_errno_to_error (op_errno); +        req = frame->local;          state = CALL_STATE(frame); @@ -1026,25 +1166,32 @@ server_link_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          state->loc.inode ? uuid_utoa (state->loc.inode->gfid) :                          "--", op_ret, strerror (op_errno)); +        GF_PROTOCOL_DICT_SERIALIZE (this, xdata, (&rsp.xdata.xdata_val), +                                    rsp.xdata.xdata_len, op_errno, out); + +out: +        rsp.op_ret    = op_ret; +        rsp.op_errno  = gf_errno_to_error (op_errno); +          server_submit_reply (frame, req, &rsp, NULL, 0, NULL,                               (xdrproc_t)xdr_gfs3_link_rsp); +        if (rsp.xdata.xdata_val) +                GF_FREE (rsp.xdata.xdata_val); +          return 0;  }  int  server_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)  {          gfs3_truncate_rsp  rsp   = {0,};          server_state_t    *state = NULL;          rpcsvc_request_t  *req   = NULL; -        req           = frame->local; - -        rsp.op_ret    = op_ret; -        rsp.op_errno  = gf_errno_to_error (op_errno); +        req = frame->local;          state = CALL_STATE (frame); @@ -1059,24 +1206,31 @@ server_truncate_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          "--", op_ret, strerror (op_errno));          } +        GF_PROTOCOL_DICT_SERIALIZE (this, xdata, (&rsp.xdata.xdata_val), +                                    rsp.xdata.xdata_len, op_errno, out); + +out: +        rsp.op_ret    = op_ret; +        rsp.op_errno  = gf_errno_to_error (op_errno); +          server_submit_reply (frame, req, &rsp, NULL, 0, NULL,                               (xdrproc_t)xdr_gfs3_truncate_rsp); +        if (rsp.xdata.xdata_val) +                GF_FREE (rsp.xdata.xdata_val); +          return 0;  }  int  server_fstat_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)  {          gfs3_fstat_rsp    rsp   = {0,};          server_state_t   *state = NULL;          rpcsvc_request_t *req   = NULL; -        req           = frame->local; - -        rsp.op_ret    = op_ret; -        rsp.op_errno  = gf_errno_to_error (op_errno); +        req = frame->local;          state = CALL_STATE(frame); @@ -1090,25 +1244,32 @@ server_fstat_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          op_ret, strerror (op_errno));          } +        GF_PROTOCOL_DICT_SERIALIZE (this, xdata, (&rsp.xdata.xdata_val), +                                    rsp.xdata.xdata_len, op_errno, out); + +out: +        rsp.op_ret    = op_ret; +        rsp.op_errno  = gf_errno_to_error (op_errno); +          server_submit_reply (frame, req, &rsp, NULL, 0, NULL,                               (xdrproc_t)xdr_gfs3_fstat_rsp); +        if (rsp.xdata.xdata_val) +                GF_FREE (rsp.xdata.xdata_val); +          return 0;  }  int  server_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)  {          gfs3_ftruncate_rsp  rsp   = {0};          server_state_t     *state = NULL;          rpcsvc_request_t   *req   = NULL; -        req           = frame->local; - -        rsp.op_ret    = op_ret; -        rsp.op_errno  = gf_errno_to_error (op_errno); +        req = frame->local;          state = CALL_STATE (frame); @@ -1123,24 +1284,31 @@ server_ftruncate_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          op_ret, strerror (op_errno));          } +        GF_PROTOCOL_DICT_SERIALIZE (this, xdata, (&rsp.xdata.xdata_val), +                                    rsp.xdata.xdata_len, op_errno, out); + +out: +        rsp.op_ret    = op_ret; +        rsp.op_errno  = gf_errno_to_error (op_errno); +          server_submit_reply (frame, req, &rsp, NULL, 0, NULL,                               (xdrproc_t)xdr_gfs3_ftruncate_rsp); +        if (rsp.xdata.xdata_val) +                GF_FREE (rsp.xdata.xdata_val); +          return 0;  }  int  server_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)  {          gf_common_rsp     rsp   = {0,};          server_state_t   *state = NULL;          rpcsvc_request_t *req   = NULL; -        req           = frame->local; - -        rsp.op_ret    = op_ret; -        rsp.op_errno  = gf_errno_to_error (op_errno); +        req = frame->local;          state = CALL_STATE(frame);          if (op_ret < 0) { @@ -1151,9 +1319,18 @@ server_flush_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          op_ret, strerror (op_errno));          } +        GF_PROTOCOL_DICT_SERIALIZE (this, xdata, (&rsp.xdata.xdata_val), +                                    rsp.xdata.xdata_len, op_errno, out); + +out: +        rsp.op_ret    = op_ret; +        rsp.op_errno  = gf_errno_to_error (op_errno); +          server_submit_reply (frame, req, &rsp, NULL, 0, NULL,                               (xdrproc_t)xdr_gf_common_rsp); +        if (rsp.xdata.xdata_val) +                GF_FREE (rsp.xdata.xdata_val);          return 0;  } @@ -1161,16 +1338,13 @@ server_flush_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  server_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)  {          gfs3_fsync_rsp    rsp   = {0,};          server_state_t   *state = NULL;          rpcsvc_request_t *req   = NULL; -        req           = frame->local; - -        rsp.op_ret    = op_ret; -        rsp.op_errno  = gf_errno_to_error (op_errno); +        req = frame->local;          state = CALL_STATE(frame); @@ -1185,25 +1359,32 @@ server_fsync_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          op_ret, strerror (op_errno));          } +        GF_PROTOCOL_DICT_SERIALIZE (this, xdata, (&rsp.xdata.xdata_val), +                                    rsp.xdata.xdata_len, op_errno, out); + +out: +        rsp.op_ret    = op_ret; +        rsp.op_errno  = gf_errno_to_error (op_errno); +          server_submit_reply (frame, req, &rsp, NULL, 0, NULL,                               (xdrproc_t)xdr_gfs3_fsync_rsp); +        if (rsp.xdata.xdata_val) +                GF_FREE (rsp.xdata.xdata_val); +          return 0;  }  int  server_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)  {          gfs3_write_rsp    rsp   = {0,};          server_state_t   *state = NULL;          rpcsvc_request_t *req   = NULL; -        req           = frame->local; - -        rsp.op_ret    = op_ret; -        rsp.op_errno  = gf_errno_to_error (op_errno); +        req = frame->local;          state = CALL_STATE(frame);          if (op_ret >= 0) { @@ -1217,9 +1398,19 @@ server_writev_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          op_ret, strerror (op_errno));          } +        GF_PROTOCOL_DICT_SERIALIZE (this, xdata, (&rsp.xdata.xdata_val), +                                    rsp.xdata.xdata_len, op_errno, out); + +out: +        rsp.op_ret    = op_ret; +        rsp.op_errno  = gf_errno_to_error (op_errno); +          server_submit_reply (frame, req, &rsp, NULL, 0, NULL,                               (xdrproc_t)xdr_gfs3_write_rsp); +        if (rsp.xdata.xdata_val) +                GF_FREE (rsp.xdata.xdata_val); +          return 0;  } @@ -1228,16 +1419,13 @@ int  server_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)  {          gfs3_read_rsp     rsp   = {0,};          server_state_t   *state = NULL;          rpcsvc_request_t *req   = NULL; -        req           = frame->local; - -        rsp.op_ret    = op_ret; -        rsp.op_errno  = gf_errno_to_error (op_errno); +        req = frame->local;          state = CALL_STATE(frame);          if (op_ret >= 0) { @@ -1251,27 +1439,34 @@ server_readv_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          op_ret, strerror (op_errno));          } +        GF_PROTOCOL_DICT_SERIALIZE (this, xdata, (&rsp.xdata.xdata_val), +                                    rsp.xdata.xdata_len, op_errno, out); + +out: +        rsp.op_ret    = op_ret; +        rsp.op_errno  = gf_errno_to_error (op_errno); +          server_submit_reply (frame, req, &rsp, vector, count, iobref,                               (xdrproc_t)xdr_gfs3_read_rsp); +        if (rsp.xdata.xdata_val) +                GF_FREE (rsp.xdata.xdata_val); +          return 0;  }  int  server_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) +                      uint32_t weak_checksum, uint8_t *strong_checksum, dict_t *xdata)  {          gfs3_rchecksum_rsp  rsp = {0,};          rpcsvc_request_t   *req = NULL;          server_state_t      *state = NULL; -        req           = frame->local; +        req = frame->local;          state = CALL_STATE(frame); -        rsp.op_ret    = op_ret; -        rsp.op_errno  = gf_errno_to_error (op_errno); -          if (op_ret >= 0) {                  rsp.weak_checksum = weak_checksum; @@ -1285,16 +1480,26 @@ server_rchecksum_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          state->fd ? uuid_utoa (state->fd->inode->gfid) : "--",                          op_ret, strerror (op_errno)); +        GF_PROTOCOL_DICT_SERIALIZE (this, xdata, (&rsp.xdata.xdata_val), +                                    rsp.xdata.xdata_len, op_errno, out); + +out: +        rsp.op_ret    = op_ret; +        rsp.op_errno  = gf_errno_to_error (op_errno); +          server_submit_reply (frame, req, &rsp, NULL, 0, NULL,                               (xdrproc_t)xdr_gfs3_rchecksum_rsp); +        if (rsp.xdata.xdata_val) +                GF_FREE (rsp.xdata.xdata_val); +          return 0;  }  int  server_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)  {          server_connection_t *conn  = NULL;          server_state_t      *state = NULL; @@ -1317,14 +1522,21 @@ server_open_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          "--", op_ret, strerror (op_errno));          } -        req           = frame->local; +        req    = frame->local; +        rsp.fd = fd_no; -        rsp.fd        = fd_no; +        GF_PROTOCOL_DICT_SERIALIZE (this, xdata, (&rsp.xdata.xdata_val), +                                    rsp.xdata.xdata_len, op_errno, out); + +out:          rsp.op_ret    = op_ret;          rsp.op_errno  = gf_errno_to_error (op_errno);          server_submit_reply (frame, req, &rsp, NULL, 0, NULL,                               (xdrproc_t)xdr_gfs3_open_rsp); +        if (rsp.xdata.xdata_val) +                GF_FREE (rsp.xdata.xdata_val); +          return 0;  } @@ -1333,7 +1545,7 @@ int  server_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 *preparent, struct iatt *postparent, dict_t *xdata)  {          server_connection_t *conn       = NULL;          server_state_t      *state      = NULL; @@ -1395,6 +1607,9 @@ server_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          "--", op_ret, strerror (op_errno));          } +        GF_PROTOCOL_DICT_SERIALIZE (this, xdata, (&rsp.xdata.xdata_val), +                                    rsp.xdata.xdata_len, op_errno, out); +  out:          req           = frame->local; @@ -1405,25 +1620,24 @@ out:          server_submit_reply (frame, req, &rsp, NULL, 0, NULL,                               (xdrproc_t)xdr_gfs3_create_rsp); +        if (rsp.xdata.xdata_val) +                GF_FREE (rsp.xdata.xdata_val); +          return 0;  }  int  server_readlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                       int32_t op_ret, int32_t op_errno, const char *buf, -                     struct iatt *stbuf) +                     struct iatt *stbuf, dict_t *xdata)  {          gfs3_readlink_rsp  rsp   = {0,};          server_state_t    *state = NULL;          rpcsvc_request_t  *req   = NULL; -        req           = frame->local; - -        rsp.op_ret    = op_ret; -        rsp.op_errno  = gf_errno_to_error (op_errno); - +        req = frame->local; -        state  = CALL_STATE(frame); +        state = CALL_STATE(frame);          if (op_ret >= 0) {                  gf_stat_from_iatt (&rsp.buf, stbuf); @@ -1439,24 +1653,31 @@ server_readlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          if (!rsp.path)                  rsp.path = ""; +        GF_PROTOCOL_DICT_SERIALIZE (this, xdata, (&rsp.xdata.xdata_val), +                                    rsp.xdata.xdata_len, op_errno, out); + +out: +        rsp.op_ret    = op_ret; +        rsp.op_errno  = gf_errno_to_error (op_errno); +          server_submit_reply (frame, req, &rsp, NULL, 0, NULL,                               (xdrproc_t)xdr_gfs3_readlink_rsp); +        if (rsp.xdata.xdata_val) +                GF_FREE (rsp.xdata.xdata_val); +          return 0;  }  int  server_stat_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)  {          gfs3_stat_rsp     rsp   = {0,};          server_state_t   *state = NULL;          rpcsvc_request_t *req   = NULL; -        req           = frame->local; - -        rsp.op_ret    = op_ret; -        rsp.op_errno  = gf_errno_to_error (op_errno); +        req = frame->local;          state  = CALL_STATE (frame); @@ -1470,9 +1691,19 @@ server_stat_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          "--", op_ret, strerror (op_errno));          } +        GF_PROTOCOL_DICT_SERIALIZE (this, xdata, (&rsp.xdata.xdata_val), +                                    rsp.xdata.xdata_len, op_errno, out); + +out: +        rsp.op_ret    = op_ret; +        rsp.op_errno  = gf_errno_to_error (op_errno); +          server_submit_reply (frame, req, &rsp, NULL, 0, NULL,                               (xdrproc_t)xdr_gfs3_stat_rsp); +        if (rsp.xdata.xdata_val) +                GF_FREE (rsp.xdata.xdata_val); +          return 0;  } @@ -1480,18 +1711,14 @@ server_stat_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  server_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 *statpre, struct iatt *statpost, dict_t *xdata)  {          gfs3_setattr_rsp  rsp   = {0,};          server_state_t   *state = NULL;          rpcsvc_request_t *req   = NULL; -        req           = frame->local; - -        rsp.op_ret    = op_ret; -        rsp.op_errno  = gf_errno_to_error (op_errno); - -        state  = CALL_STATE (frame); +        req = frame->local; +        state = CALL_STATE (frame);          if (op_ret == 0) {                  gf_stat_from_iatt (&rsp.statpre, statpre); @@ -1504,16 +1731,26 @@ server_setattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          "--", op_ret, strerror (op_errno));          } +        GF_PROTOCOL_DICT_SERIALIZE (this, xdata, (&rsp.xdata.xdata_val), +                                    rsp.xdata.xdata_len, op_errno, out); + +out: +        rsp.op_ret    = op_ret; +        rsp.op_errno  = gf_errno_to_error (op_errno); +          server_submit_reply (frame, req, &rsp, NULL, 0, NULL,                               (xdrproc_t)xdr_gfs3_setattr_rsp); +        if (rsp.xdata.xdata_val) +                GF_FREE (rsp.xdata.xdata_val); +          return 0;  }  int  server_fsetattr_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 *statpre, struct iatt *statpost, dict_t *xdata)  {          gfs3_fsetattr_rsp  rsp   = {0,};          server_state_t    *state = NULL; @@ -1532,21 +1769,29 @@ server_fsetattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          op_ret, strerror (op_errno));          } -        req           = frame->local; +        req = frame->local; + +        GF_PROTOCOL_DICT_SERIALIZE (this, xdata, (&rsp.xdata.xdata_val), +                                    rsp.xdata.xdata_len, op_errno, out); +out:          rsp.op_ret    = op_ret;          rsp.op_errno  = gf_errno_to_error (op_errno);          server_submit_reply (frame, req, &rsp, NULL, 0, NULL,                               (xdrproc_t)xdr_gfs3_fsetattr_rsp); +        if (rsp.xdata.xdata_val) +                GF_FREE (rsp.xdata.xdata_val); +          return 0;  }  int  server_xattrop_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)  {          gfs3_xattrop_rsp  rsp   = {0,};          server_state_t   *state = NULL; @@ -1569,6 +1814,10 @@ server_xattrop_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                                              rsp.dict.dict_len,                                              op_errno, out);          } + +        GF_PROTOCOL_DICT_SERIALIZE (this, xdata, (&rsp.xdata.xdata_val), +                                    rsp.xdata.xdata_len, op_errno, out); +  out:          req               = frame->local; @@ -1588,13 +1837,17 @@ out:          if (rsp.dict.dict_val)                  GF_FREE (rsp.dict.dict_val); +        if (rsp.xdata.xdata_val) +                GF_FREE (rsp.xdata.xdata_val); +          return 0;  }  int  server_fxattrop_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)  {          gfs3_xattrop_rsp  rsp   = {0,};          server_state_t   *state = NULL; @@ -1617,6 +1870,11 @@ server_fxattrop_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                                              rsp.dict.dict_len,                                              op_errno, out);          } + +        GF_PROTOCOL_DICT_SERIALIZE (this, xdata, (&rsp.xdata.xdata_val), +                                    rsp.xdata.xdata_len, op_errno, out); + +  out:          req               = frame->local; @@ -1636,13 +1894,16 @@ out:          if (rsp.dict.dict_val)                  GF_FREE (rsp.dict.dict_val); +        if (rsp.xdata.xdata_val) +                GF_FREE (rsp.xdata.xdata_val); +          return 0;  }  int  server_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)  {          gfs3_readdirp_rsp  rsp   = {0,};          server_state_t    *state = NULL; @@ -1672,6 +1933,9 @@ server_readdirp_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          op_ret, strerror (op_errno));          } +        GF_PROTOCOL_DICT_SERIALIZE (this, xdata, (&rsp.xdata.xdata_val), +                                    rsp.xdata.xdata_len, op_errno, out); +  out:          rsp.op_ret    = op_ret;          rsp.op_errno  = gf_errno_to_error (op_errno); @@ -1679,6 +1943,9 @@ out:          server_submit_reply (frame, req, &rsp, NULL, 0, NULL,                               (xdrproc_t)xdr_gfs3_readdirp_rsp); +        if (rsp.xdata.xdata_val) +                GF_FREE (rsp.xdata.xdata_val); +          readdirp_rsp_cleanup (&rsp);          return 0; @@ -1703,11 +1970,12 @@ server_rchecksum_resume (call_frame_t *frame, xlator_t *bound_xl)          STACK_WIND (frame, server_rchecksum_cbk, bound_xl,                      bound_xl->fops->rchecksum, state->fd, -                    state->offset, state->size); +                    state->offset, state->size, state->xdata);          return 0;  err: -        server_rchecksum_cbk (frame, NULL, frame->this, op_ret, op_errno, 0, NULL); +        server_rchecksum_cbk (frame, NULL, frame->this, op_ret, op_errno, 0, +                              NULL, NULL);          return 0; @@ -1724,13 +1992,13 @@ server_lk_resume (call_frame_t *frame, xlator_t *bound_xl)                  goto err;          STACK_WIND (frame, server_lk_cbk, bound_xl, bound_xl->fops->lk, -                    state->fd, state->cmd, &state->flock); +                    state->fd, state->cmd, &state->flock, state->xdata);          return 0;  err:          server_lk_cbk (frame, NULL, frame->this, state->resolve.op_ret, -                       state->resolve.op_errno, NULL); +                       state->resolve.op_errno, NULL, NULL);          return 0;  } @@ -1757,11 +2025,11 @@ server_rename_resume (call_frame_t *frame, xlator_t *bound_xl)          STACK_WIND (frame, server_rename_cbk,                      bound_xl, bound_xl->fops->rename, -                    &state->loc, &state->loc2); +                    &state->loc, &state->loc2, state->xdata);          return 0;  err:          server_rename_cbk (frame, NULL, frame->this, op_ret, op_errno, -                           NULL, NULL, NULL, NULL, NULL); +                           NULL, NULL, NULL, NULL, NULL, NULL);          return 0;  } @@ -1790,12 +2058,12 @@ server_link_resume (call_frame_t *frame, xlator_t *bound_xl)          state->loc2.inode = inode_ref (state->loc.inode);          STACK_WIND (frame, server_link_cbk, bound_xl, bound_xl->fops->link, -                    &state->loc, &state->loc2); +                    &state->loc, &state->loc2, state->xdata);          return 0;  err:          server_link_cbk (frame, NULL, frame->this, op_ret, op_errno, -                         NULL, NULL, NULL, NULL); +                         NULL, NULL, NULL, NULL, NULL);          return 0;  } @@ -1813,12 +2081,12 @@ server_symlink_resume (call_frame_t *frame, xlator_t *bound_xl)          STACK_WIND (frame, server_symlink_cbk,                      bound_xl, bound_xl->fops->symlink, -                    state->name, &state->loc, state->params); +                    state->name, &state->loc, state->umask, state->xdata);          return 0;  err:          server_symlink_cbk (frame, NULL, frame->this, state->resolve.op_ret, -                            state->resolve.op_errno, NULL, NULL, NULL, NULL); +                            state->resolve.op_errno, NULL, NULL, NULL, NULL, NULL);          return 0;  } @@ -1835,11 +2103,11 @@ server_access_resume (call_frame_t *frame, xlator_t *bound_xl)          STACK_WIND (frame, server_access_cbk,                      bound_xl, bound_xl->fops->access, -                    &state->loc, state->mask); +                    &state->loc, state->mask, state->xdata);          return 0;  err:          server_access_cbk (frame, NULL, frame->this, state->resolve.op_ret, -                           state->resolve.op_errno); +                           state->resolve.op_errno, NULL);          return 0;  } @@ -1856,12 +2124,12 @@ server_fentrylk_resume (call_frame_t *frame, xlator_t *bound_xl)          STACK_WIND (frame, server_fentrylk_cbk, bound_xl,                      bound_xl->fops->fentrylk,                      state->volume, state->fd, state->name, -                    state->cmd, state->type); +                    state->cmd, state->type, state->xdata);          return 0;  err:          server_fentrylk_cbk (frame, NULL, frame->this, state->resolve.op_ret, -                             state->resolve.op_errno); +                             state->resolve.op_errno, NULL);          return 0;  } @@ -1879,11 +2147,11 @@ server_entrylk_resume (call_frame_t *frame, xlator_t *bound_xl)          STACK_WIND (frame, server_entrylk_cbk,                      bound_xl, bound_xl->fops->entrylk,                      state->volume, &state->loc, state->name, -                    state->cmd, state->type); +                    state->cmd, state->type, state->xdata);          return 0;  err:          server_entrylk_cbk (frame, NULL, frame->this, state->resolve.op_ret, -                            state->resolve.op_errno); +                            state->resolve.op_errno, NULL);          return 0;  } @@ -1899,13 +2167,13 @@ server_finodelk_resume (call_frame_t *frame, xlator_t *bound_xl)                  goto err;          STACK_WIND (frame, server_finodelk_cbk, bound_xl, -                    bound_xl->fops->finodelk, -                    state->volume, state->fd, state->cmd, &state->flock); +                    bound_xl->fops->finodelk, state->volume, state->fd, +                    state->cmd, &state->flock, state->xdata);          return 0;  err:          server_finodelk_cbk (frame, NULL, frame->this, state->resolve.op_ret, -                             state->resolve.op_errno); +                             state->resolve.op_errno, NULL);          return 0;  } @@ -1920,13 +2188,13 @@ server_inodelk_resume (call_frame_t *frame, xlator_t *bound_xl)          if (state->resolve.op_ret != 0)                  goto err; -        STACK_WIND (frame, server_inodelk_cbk, -                    bound_xl, bound_xl->fops->inodelk, -                    state->volume, &state->loc, state->cmd, &state->flock); +        STACK_WIND (frame, server_inodelk_cbk, bound_xl, +                    bound_xl->fops->inodelk, state->volume, &state->loc, +                    state->cmd, &state->flock, state->xdata);          return 0;  err:          server_inodelk_cbk (frame, NULL, frame->this, state->resolve.op_ret, -                            state->resolve.op_errno); +                            state->resolve.op_errno, NULL);          return 0;  } @@ -1940,12 +2208,12 @@ server_rmdir_resume (call_frame_t *frame, xlator_t *bound_xl)          if (state->resolve.op_ret != 0)                  goto err; -        STACK_WIND (frame, server_rmdir_cbk, -                    bound_xl, bound_xl->fops->rmdir, &state->loc, state->flags); +        STACK_WIND (frame, server_rmdir_cbk, bound_xl, bound_xl->fops->rmdir, +                    &state->loc, state->flags, state->xdata);          return 0;  err:          server_rmdir_cbk (frame, NULL, frame->this, state->resolve.op_ret, -                          state->resolve.op_errno, NULL, NULL); +                          state->resolve.op_errno, NULL, NULL, NULL);          return 0;  } @@ -1964,12 +2232,12 @@ server_mkdir_resume (call_frame_t *frame, xlator_t *bound_xl)          STACK_WIND (frame, server_mkdir_cbk,                      bound_xl, bound_xl->fops->mkdir, -                    &(state->loc), state->mode, state->params); +                    &(state->loc), state->mode, state->umask, state->xdata);          return 0;  err:          server_mkdir_cbk (frame, NULL, frame->this, state->resolve.op_ret, -                          state->resolve.op_errno, NULL, NULL, NULL, NULL); +                          state->resolve.op_errno, NULL, NULL, NULL, NULL, NULL);          return 0;  } @@ -1989,12 +2257,12 @@ server_mknod_resume (call_frame_t *frame, xlator_t *bound_xl)          STACK_WIND (frame, server_mknod_cbk,                      bound_xl, bound_xl->fops->mknod,                      &(state->loc), state->mode, state->dev, -                    state->params); +                    state->umask, state->xdata);          return 0;  err:          server_mknod_cbk (frame, NULL, frame->this, state->resolve.op_ret, -                          state->resolve.op_errno, NULL, NULL, NULL, NULL); +                          state->resolve.op_errno, NULL, NULL, NULL, NULL, NULL);          return 0;  } @@ -2012,13 +2280,13 @@ server_fsyncdir_resume (call_frame_t *frame, xlator_t *bound_xl)          STACK_WIND (frame, server_fsyncdir_cbk,                      bound_xl,                      bound_xl->fops->fsyncdir, -                    state->fd, state->flags); +                    state->fd, state->flags, state->xdata);          return 0;  err:          server_fsyncdir_cbk (frame, NULL, frame->this,                               state->resolve.op_ret, -                             state->resolve.op_errno); +                             state->resolve.op_errno, NULL);          return 0;  } @@ -2036,12 +2304,12 @@ server_readdir_resume (call_frame_t *frame, xlator_t *bound_xl)          STACK_WIND (frame, server_readdir_cbk,                      bound_xl,                      bound_xl->fops->readdir, -                    state->fd, state->size, state->offset); +                    state->fd, state->size, state->offset, state->xdata);          return 0;  err:          server_readdir_cbk (frame, NULL, frame->this, state->resolve.op_ret, -                            state->resolve.op_errno, NULL); +                            state->resolve.op_errno, NULL, NULL);          return 0;  } @@ -2062,7 +2330,7 @@ server_readdirp_resume (call_frame_t *frame, xlator_t *bound_xl)          return 0;  err:          server_readdirp_cbk (frame, NULL, frame->this, state->resolve.op_ret, -                             state->resolve.op_errno, NULL); +                             state->resolve.op_errno, NULL, NULL);          return 0;  } @@ -2081,11 +2349,11 @@ server_opendir_resume (call_frame_t *frame, xlator_t *bound_xl)          STACK_WIND (frame, server_opendir_cbk,                      bound_xl, bound_xl->fops->opendir, -                    &state->loc, state->fd); +                    &state->loc, state->fd, state->xdata);          return 0;  err:          server_opendir_cbk (frame, NULL, frame->this, state->resolve.op_ret, -                            state->resolve.op_errno, NULL); +                            state->resolve.op_errno, NULL, NULL);          return 0;  } @@ -2102,12 +2370,12 @@ server_statfs_resume (call_frame_t *frame, xlator_t *bound_xl)          STACK_WIND (frame, server_statfs_cbk,                      bound_xl, bound_xl->fops->statfs, -                    &state->loc); +                    &state->loc, state->xdata);          return 0;  err:          server_statfs_cbk (frame, NULL, frame->this, state->resolve.op_ret, -                           state->resolve.op_errno, NULL); +                           state->resolve.op_errno, NULL, NULL);          return 0;  } @@ -2124,11 +2392,11 @@ server_removexattr_resume (call_frame_t *frame, xlator_t *bound_xl)          STACK_WIND (frame, server_removexattr_cbk,                      bound_xl, bound_xl->fops->removexattr, -                    &state->loc, state->name); +                    &state->loc, state->name, state->xdata);          return 0;  err:          server_removexattr_cbk (frame, NULL, frame->this, state->resolve.op_ret, -                                state->resolve.op_errno); +                                state->resolve.op_errno, NULL);          return 0;  } @@ -2144,11 +2412,11 @@ server_fremovexattr_resume (call_frame_t *frame, xlator_t *bound_xl)          STACK_WIND (frame, server_fremovexattr_cbk,                      bound_xl, bound_xl->fops->fremovexattr, -                    state->fd, state->name); +                    state->fd, state->name, state->xdata);          return 0;  err:          server_fremovexattr_cbk (frame, NULL, frame->this, state->resolve.op_ret, -                                 state->resolve.op_errno); +                                 state->resolve.op_errno, NULL);          return 0;  } @@ -2164,11 +2432,11 @@ server_fgetxattr_resume (call_frame_t *frame, xlator_t *bound_xl)          STACK_WIND (frame, server_fgetxattr_cbk,                      bound_xl, bound_xl->fops->fgetxattr, -                    state->fd, state->name); +                    state->fd, state->name, state->xdata);          return 0;  err:          server_fgetxattr_cbk (frame, NULL, frame->this, state->resolve.op_ret, -                              state->resolve.op_errno, NULL); +                              state->resolve.op_errno, NULL, NULL);          return 0;  } @@ -2185,11 +2453,11 @@ server_xattrop_resume (call_frame_t *frame, xlator_t *bound_xl)          STACK_WIND (frame, server_xattrop_cbk,                      bound_xl, bound_xl->fops->xattrop, -                    &state->loc, state->flags, state->dict); +                    &state->loc, state->flags, state->dict, state->xdata);          return 0;  err:          server_xattrop_cbk (frame, NULL, frame->this, state->resolve.op_ret, -                            state->resolve.op_errno, NULL); +                            state->resolve.op_errno, NULL, NULL);          return 0;  } @@ -2205,11 +2473,11 @@ server_fxattrop_resume (call_frame_t *frame, xlator_t *bound_xl)          STACK_WIND (frame, server_fxattrop_cbk,                      bound_xl, bound_xl->fops->fxattrop, -                    state->fd, state->flags, state->dict); +                    state->fd, state->flags, state->dict, state->xdata);          return 0;  err:          server_fxattrop_cbk (frame, NULL, frame->this, state->resolve.op_ret, -                             state->resolve.op_errno, NULL); +                             state->resolve.op_errno, NULL, NULL);          return 0;  } @@ -2225,11 +2493,11 @@ server_fsetxattr_resume (call_frame_t *frame, xlator_t *bound_xl)          STACK_WIND (frame, server_setxattr_cbk,                      bound_xl, bound_xl->fops->fsetxattr, -                    state->fd, state->dict, state->flags); +                    state->fd, state->dict, state->flags, state->xdata);          return 0;  err:          server_fsetxattr_cbk (frame, NULL, frame->this, state->resolve.op_ret, -                              state->resolve.op_errno); +                              state->resolve.op_errno, NULL);          return 0;  } @@ -2246,11 +2514,11 @@ server_unlink_resume (call_frame_t *frame, xlator_t *bound_xl)          STACK_WIND (frame, server_unlink_cbk,                      bound_xl, bound_xl->fops->unlink, -                    &state->loc); +                    &state->loc, state->flags, state->xdata);          return 0;  err:          server_unlink_cbk (frame, NULL, frame->this, state->resolve.op_ret, -                           state->resolve.op_errno, NULL, NULL); +                           state->resolve.op_errno, NULL, NULL, NULL);          return 0;  } @@ -2266,11 +2534,11 @@ server_truncate_resume (call_frame_t *frame, xlator_t *bound_xl)          STACK_WIND (frame, server_truncate_cbk,                      bound_xl, bound_xl->fops->truncate, -                    &state->loc, state->offset); +                    &state->loc, state->offset, state->xdata);          return 0;  err:          server_truncate_cbk (frame, NULL, frame->this, state->resolve.op_ret, -                             state->resolve.op_errno, NULL, NULL); +                             state->resolve.op_errno, NULL, NULL, NULL);          return 0;  } @@ -2288,11 +2556,11 @@ server_fstat_resume (call_frame_t *frame, xlator_t *bound_xl)          STACK_WIND (frame, server_fstat_cbk,                      bound_xl, bound_xl->fops->fstat, -                    state->fd); +                    state->fd, state->xdata);          return 0;  err:          server_fstat_cbk (frame, NULL, frame->this, state->resolve.op_ret, -                          state->resolve.op_errno, NULL); +                          state->resolve.op_errno, NULL, NULL);          return 0;  } @@ -2309,11 +2577,11 @@ server_setxattr_resume (call_frame_t *frame, xlator_t *bound_xl)          STACK_WIND (frame, server_setxattr_cbk,                      bound_xl, bound_xl->fops->setxattr, -                    &state->loc, state->dict, state->flags); +                    &state->loc, state->dict, state->flags, state->xdata);          return 0;  err:          server_setxattr_cbk (frame, NULL, frame->this, state->resolve.op_ret, -                             state->resolve.op_errno); +                             state->resolve.op_errno, NULL);          return 0;  } @@ -2331,11 +2599,11 @@ server_getxattr_resume (call_frame_t *frame, xlator_t *bound_xl)          STACK_WIND (frame, server_getxattr_cbk,                      bound_xl, bound_xl->fops->getxattr, -                    &state->loc, state->name); +                    &state->loc, state->name, state->xdata);          return 0;  err:          server_getxattr_cbk (frame, NULL, frame->this, state->resolve.op_ret, -                             state->resolve.op_errno, NULL); +                             state->resolve.op_errno, NULL, NULL);          return 0;  } @@ -2352,11 +2620,11 @@ server_ftruncate_resume (call_frame_t *frame, xlator_t *bound_xl)          STACK_WIND (frame, server_ftruncate_cbk,                      bound_xl, bound_xl->fops->ftruncate, -                    state->fd, state->offset); +                    state->fd, state->offset, state->xdata);          return 0;  err:          server_ftruncate_cbk (frame, NULL, frame->this, state->resolve.op_ret, -                              state->resolve.op_errno, NULL, NULL); +                              state->resolve.op_errno, NULL, NULL, NULL);          return 0;  } @@ -2373,11 +2641,11 @@ server_flush_resume (call_frame_t *frame, xlator_t *bound_xl)                  goto err;          STACK_WIND (frame, server_flush_cbk, -                    bound_xl, bound_xl->fops->flush, state->fd); +                    bound_xl, bound_xl->fops->flush, state->fd, state->xdata);          return 0;  err:          server_flush_cbk (frame, NULL, frame->this, state->resolve.op_ret, -                          state->resolve.op_errno); +                          state->resolve.op_errno, NULL);          return 0;  } @@ -2395,11 +2663,11 @@ server_fsync_resume (call_frame_t *frame, xlator_t *bound_xl)          STACK_WIND (frame, server_fsync_cbk,                      bound_xl, bound_xl->fops->fsync, -                    state->fd, state->flags); +                    state->fd, state->flags, state->xdata);          return 0;  err:          server_fsync_cbk (frame, NULL, frame->this, state->resolve.op_ret, -                          state->resolve.op_errno, NULL, NULL); +                          state->resolve.op_errno, NULL, NULL, NULL);          return 0;  } @@ -2417,12 +2685,12 @@ server_writev_resume (call_frame_t *frame, xlator_t *bound_xl)          STACK_WIND (frame, server_writev_cbk,                      bound_xl, bound_xl->fops->writev,                      state->fd, state->payload_vector, state->payload_count, -                    state->offset, state->flags, state->iobref); +                    state->offset, state->flags, state->iobref, state->xdata);          return 0;  err:          server_writev_cbk (frame, NULL, frame->this, state->resolve.op_ret, -                           state->resolve.op_errno, NULL, NULL); +                           state->resolve.op_errno, NULL, NULL, NULL);          return 0;  } @@ -2439,12 +2707,12 @@ server_readv_resume (call_frame_t *frame, xlator_t *bound_xl)          STACK_WIND (frame, server_readv_cbk,                      bound_xl, bound_xl->fops->readv, -                    state->fd, state->size, state->offset, state->flags); +                    state->fd, state->size, state->offset, state->flags, state->xdata);          return 0;  err:          server_readv_cbk (frame, NULL, frame->this, state->resolve.op_ret, -                          state->resolve.op_errno, NULL, 0, NULL, NULL); +                          state->resolve.op_errno, NULL, 0, NULL, NULL, NULL);          return 0;  } @@ -2475,13 +2743,13 @@ server_create_resume (call_frame_t *frame, xlator_t *bound_xl)          STACK_WIND (frame, server_create_cbk,                      bound_xl, bound_xl->fops->create,                      &(state->loc), state->flags, state->mode, -                    state->fd, state->params); +                    state->umask, state->fd, state->xdata);          return 0;  err:          server_create_cbk (frame, NULL, frame->this, state->resolve.op_ret,                             state->resolve.op_errno, NULL, NULL, NULL, -                           NULL, NULL); +                           NULL, NULL, NULL);          return 0;  } @@ -2501,12 +2769,12 @@ server_open_resume (call_frame_t *frame, xlator_t *bound_xl)          STACK_WIND (frame, server_open_cbk,                      bound_xl, bound_xl->fops->open, -                    &state->loc, state->flags, state->fd, 0); +                    &state->loc, state->flags, state->fd, state->xdata);          return 0;  err:          server_open_cbk (frame, NULL, frame->this, state->resolve.op_ret, -                         state->resolve.op_errno, NULL); +                         state->resolve.op_errno, NULL, NULL);          return 0;  } @@ -2523,11 +2791,11 @@ server_readlink_resume (call_frame_t *frame, xlator_t *bound_xl)          STACK_WIND (frame, server_readlink_cbk,                      bound_xl, bound_xl->fops->readlink, -                    &state->loc, state->size); +                    &state->loc, state->size, state->xdata);          return 0;  err:          server_readlink_cbk (frame, NULL, frame->this, state->resolve.op_ret, -                             state->resolve.op_errno, NULL, NULL); +                             state->resolve.op_errno, NULL, NULL, NULL);          return 0;  } @@ -2544,11 +2812,11 @@ server_fsetattr_resume (call_frame_t *frame, xlator_t *bound_xl)          STACK_WIND (frame, server_fsetattr_cbk,                      bound_xl, bound_xl->fops->fsetattr, -                    state->fd, &state->stbuf, state->valid); +                    state->fd, &state->stbuf, state->valid, state->xdata);          return 0;  err:          server_fsetattr_cbk (frame, NULL, frame->this, state->resolve.op_ret, -                             state->resolve.op_errno, NULL, NULL); +                             state->resolve.op_errno, NULL, NULL, NULL);          return 0;  } @@ -2566,11 +2834,11 @@ server_setattr_resume (call_frame_t *frame, xlator_t *bound_xl)          STACK_WIND (frame, server_setattr_cbk,                      bound_xl, bound_xl->fops->setattr, -                    &state->loc, &state->stbuf, state->valid); +                    &state->loc, &state->stbuf, state->valid, state->xdata);          return 0;  err:          server_setattr_cbk (frame, NULL, frame->this, state->resolve.op_ret, -                            state->resolve.op_errno, NULL, NULL); +                            state->resolve.op_errno, NULL, NULL, NULL);          return 0;  } @@ -2587,11 +2855,11 @@ server_stat_resume (call_frame_t *frame, xlator_t *bound_xl)                  goto err;          STACK_WIND (frame, server_stat_cbk, -                    bound_xl, bound_xl->fops->stat, &state->loc); +                    bound_xl, bound_xl->fops->stat, &state->loc, state->xdata);          return 0;  err:          server_stat_cbk (frame, NULL, frame->this, state->resolve.op_ret, -                         state->resolve.op_errno, NULL); +                         state->resolve.op_errno, NULL, NULL);          return 0;  } @@ -2612,7 +2880,7 @@ server_lookup_resume (call_frame_t *frame, xlator_t *bound_xl)          STACK_WIND (frame, server_lookup_cbk,                      bound_xl, bound_xl->fops->lookup, -                    &state->loc, state->dict); +                    &state->loc, state->xdata);          return 0;  err: @@ -2630,10 +2898,11 @@ err:  int  server_stat (rpcsvc_request_t *req)  { -        server_state_t *state                 = NULL; -        call_frame_t   *frame                 = NULL; -        gfs3_stat_req   args                  = {{0,},}; -        int             ret                   = -1; +        server_state_t *state    = NULL; +        call_frame_t   *frame    = NULL; +        gfs3_stat_req   args     = {{0,},}; +        int             ret      = -1; +        int             op_errno = 0;          if (!req)                  return 0; @@ -2664,9 +2933,22 @@ server_stat (rpcsvc_request_t *req)          state->resolve.type  = RESOLVE_MUST;          memcpy (state->resolve.gfid, args.gfid, 16); +        GF_PROTOCOL_DICT_UNSERIALIZE (state->conn->bound_xl, state->xdata, +                                      (args.xdata.xdata_val), +                                      (args.xdata.xdata_len), ret, +                                      op_errno, out); + +          ret = 0;          resolve_and_resume (frame, server_stat_resume); +  out: +        if (args.xdata.xdata_val) +                free (args.xdata.xdata_val); + +        if (op_errno) +                req->rpc_err = GARBAGE_ARGS; +          return ret;  } @@ -2678,6 +2960,7 @@ server_setattr (rpcsvc_request_t *req)          call_frame_t     *frame                 = NULL;          gfs3_setattr_req  args                  = {{0,},};          int               ret                   = -1; +        int               op_errno = 0;          if (!req)                  return 0; @@ -2709,9 +2992,21 @@ server_setattr (rpcsvc_request_t *req)          gf_stat_to_iatt (&args.stbuf, &state->stbuf);          state->valid = args.valid; +        GF_PROTOCOL_DICT_UNSERIALIZE (state->conn->bound_xl, state->xdata, +                                      (args.xdata.xdata_val), +                                      (args.xdata.xdata_len), ret, +                                      op_errno, out); +          ret = 0;          resolve_and_resume (frame, server_setattr_resume); +  out: +        if (op_errno) +                req->rpc_err = GARBAGE_ARGS; + +        if (args.xdata.xdata_val) +                free (args.xdata.xdata_val); +          return ret;  } @@ -2723,6 +3018,7 @@ server_fsetattr (rpcsvc_request_t *req)          call_frame_t      *frame = NULL;          gfs3_fsetattr_req  args  = {0,};          int                ret   = -1; +        int                op_errno = 0;          if (!req)                  return ret; @@ -2754,9 +3050,21 @@ server_fsetattr (rpcsvc_request_t *req)          gf_stat_to_iatt (&args.stbuf, &state->stbuf);          state->valid = args.valid; +        GF_PROTOCOL_DICT_UNSERIALIZE (state->conn->bound_xl, state->xdata, +                                      (args.xdata.xdata_val), +                                      (args.xdata.xdata_len), ret, +                                      op_errno, out); +          ret = 0;          resolve_and_resume (frame, server_fsetattr_resume); +  out: +        if (args.xdata.xdata_val) +                free (args.xdata.xdata_val); + +        if (op_errno) +                req->rpc_err = GARBAGE_ARGS; +          return ret;  } @@ -2768,6 +3076,7 @@ server_readlink (rpcsvc_request_t *req)          call_frame_t      *frame                 = NULL;          gfs3_readlink_req  args                  = {{0,},};          int                ret                   = -1; +        int                op_errno = 0;          if (!req)                  return ret; @@ -2798,9 +3107,21 @@ server_readlink (rpcsvc_request_t *req)          state->size  = args.size; +        GF_PROTOCOL_DICT_UNSERIALIZE (state->conn->bound_xl, state->xdata, +                                      (args.xdata.xdata_val), +                                      (args.xdata.xdata_len), ret, +                                      op_errno, out); +          ret = 0;          resolve_and_resume (frame, server_readlink_resume); +  out: +        if (args.xdata.xdata_val) +                free (args.xdata.xdata_val); + +        if (op_errno) +                req->rpc_err = GARBAGE_ARGS; +          return ret;  } @@ -2810,7 +3131,6 @@ server_create (rpcsvc_request_t *req)  {          server_state_t  *state    = NULL;          call_frame_t    *frame    = NULL; -        dict_t          *params   = NULL;          gfs3_create_req  args     = {{0,},};          int              ret      = -1;          int              op_errno = 0; @@ -2841,16 +3161,10 @@ server_create (rpcsvc_request_t *req)                  goto out;          } -        /* Unserialize the dictionary */ -        GF_PROTOCOL_DICT_UNSERIALIZE (state->conn->bound_xl, params, -                                      (args.dict.dict_val), -                                      (args.dict.dict_len), ret, -                                      op_errno, out); - -        state->params = params;          state->resolve.bname  = gf_strdup (args.bname);          state->mode           = args.mode; +        state->umask          = args.umask;          state->flags          = gf_flags_to_flags (args.flags);          memcpy (state->resolve.pargfid, args.pargfid, 16); @@ -2860,27 +3174,23 @@ server_create (rpcsvc_request_t *req)                  state->resolve.type = RESOLVE_DONTCARE;          } +        /* TODO: can do alloca for xdata field instead of stdalloc */ +        GF_PROTOCOL_DICT_UNSERIALIZE (state->conn->bound_xl, state->xdata, +                                      (args.xdata.xdata_val), +                                      (args.xdata.xdata_len), ret, +                                      op_errno, out); +          ret = 0;          resolve_and_resume (frame, server_create_resume); +out:          /* memory allocated by libc, don't use GF_FREE */ -        if (args.dict.dict_val != NULL) { -                free (args.dict.dict_val); -        } +        if (args.xdata.xdata_val) +                free (args.xdata.xdata_val); -        return ret; -out:          if (op_errno)                  req->rpc_err = GARBAGE_ARGS; -        if (params) -                dict_unref (params); - -        /* memory allocated by libc, don't use GF_FREE */ -        if (args.dict.dict_val != NULL) { -                free (args.dict.dict_val); -        } -          return ret;  } @@ -2892,6 +3202,7 @@ server_open (rpcsvc_request_t *req)          call_frame_t   *frame                 = NULL;          gfs3_open_req   args                  = {{0,},};          int             ret                   = -1; +        int             op_errno = 0;          if (!req)                  return ret; @@ -2922,9 +3233,20 @@ server_open (rpcsvc_request_t *req)          state->flags = gf_flags_to_flags (args.flags); +        GF_PROTOCOL_DICT_UNSERIALIZE (state->conn->bound_xl, state->xdata, +                                      (args.xdata.xdata_val), +                                      (args.xdata.xdata_len), ret, +                                      op_errno, out); +          ret = 0;          resolve_and_resume (frame, server_open_resume);  out: +        if (op_errno) +                req->rpc_err = GARBAGE_ARGS; + +        if (args.xdata.xdata_val) +                free (args.xdata.xdata_val); +          return ret;  } @@ -2936,6 +3258,7 @@ server_readv (rpcsvc_request_t *req)          call_frame_t   *frame = NULL;          gfs3_read_req   args  = {{0,},};          int             ret   = -1; +        int             op_errno = 0;          if (!req)                  goto out; @@ -2969,9 +3292,21 @@ server_readv (rpcsvc_request_t *req)          memcpy (state->resolve.gfid, args.gfid, 16); +        GF_PROTOCOL_DICT_UNSERIALIZE (state->conn->bound_xl, state->xdata, +                                      (args.xdata.xdata_val), +                                      (args.xdata.xdata_len), ret, +                                      op_errno, out); +          ret = 0;          resolve_and_resume (frame, server_readv_resume);  out: +        /* memory allocated by libc, don't use GF_FREE */ +        if (args.xdata.xdata_val) +                free (args.xdata.xdata_val); + +        if (op_errno) +                req->rpc_err = GARBAGE_ARGS; +          return ret;  } @@ -2985,6 +3320,7 @@ server_writev (rpcsvc_request_t *req)          ssize_t              len    = 0;          int                  i      = 0;          int                  ret    = -1; +        int                  op_errno = 0;          if (!req)                  return ret; @@ -3035,9 +3371,20 @@ server_writev (rpcsvc_request_t *req)                  state->size += state->payload_vector[i].iov_len;          } +        GF_PROTOCOL_DICT_UNSERIALIZE (state->conn->bound_xl, state->xdata, +                                      (args.xdata.xdata_val), +                                      (args.xdata.xdata_len), ret, +                                      op_errno, out); +          ret = 0;          resolve_and_resume (frame, server_writev_resume);  out: +        if (args.xdata.xdata_val) +                free (args.xdata.xdata_val); + +        if (op_errno) +                req->rpc_err = GARBAGE_ARGS; +          return ret;  } @@ -3093,6 +3440,7 @@ server_release (rpcsvc_request_t *req)          server_submit_reply (NULL, req, &rsp, NULL, 0, NULL,                               (xdrproc_t)xdr_gf_common_rsp); +          ret = 0;  out:          return ret; @@ -3117,6 +3465,7 @@ server_releasedir (rpcsvc_request_t *req)          server_submit_reply (NULL, req, &rsp, NULL, 0, NULL,                               (xdrproc_t)xdr_gf_common_rsp); +          ret = 0;  out:          return ret; @@ -3130,6 +3479,7 @@ server_fsync (rpcsvc_request_t *req)          call_frame_t   *frame = NULL;          gfs3_fsync_req  args  = {{0,},};          int             ret   = -1; +        int             op_errno = 0;          if (!req)                  return ret; @@ -3160,9 +3510,20 @@ server_fsync (rpcsvc_request_t *req)          state->flags         = args.data;          memcpy (state->resolve.gfid, args.gfid, 16); +        GF_PROTOCOL_DICT_UNSERIALIZE (state->conn->bound_xl, state->xdata, +                                      (args.xdata.xdata_val), +                                      (args.xdata.xdata_len), ret, +                                      op_errno, out); +          ret = 0;          resolve_and_resume (frame, server_fsync_resume);  out: +        if (args.xdata.xdata_val) +                free (args.xdata.xdata_val); + +        if (op_errno) +                req->rpc_err = GARBAGE_ARGS; +          return ret;  } @@ -3175,6 +3536,7 @@ server_flush (rpcsvc_request_t *req)          call_frame_t   *frame = NULL;          gfs3_flush_req  args  = {{0,},};          int             ret   = -1; +        int             op_errno = 0;          if (!req)                  return ret; @@ -3204,9 +3566,20 @@ server_flush (rpcsvc_request_t *req)          state->resolve.fd_no = args.fd;          memcpy (state->resolve.gfid, args.gfid, 16); +        GF_PROTOCOL_DICT_UNSERIALIZE (state->conn->bound_xl, state->xdata, +                                      (args.xdata.xdata_val), +                                      (args.xdata.xdata_len), ret, +                                      op_errno, out); +          ret = 0;          resolve_and_resume (frame, server_flush_resume);  out: +        if (args.xdata.xdata_val) +                free (args.xdata.xdata_val); + +        if (op_errno) +                req->rpc_err = GARBAGE_ARGS; +          return ret;  } @@ -3219,6 +3592,7 @@ server_ftruncate (rpcsvc_request_t *req)          call_frame_t       *frame = NULL;          gfs3_ftruncate_req  args  = {{0,},};          int                 ret   = -1; +        int                 op_errno = 0;          if (!req)                  return ret; @@ -3249,9 +3623,20 @@ server_ftruncate (rpcsvc_request_t *req)          state->offset         = args.offset;          memcpy (state->resolve.gfid, args.gfid, 16); +        GF_PROTOCOL_DICT_UNSERIALIZE (state->conn->bound_xl, state->xdata, +                                      (args.xdata.xdata_val), +                                      (args.xdata.xdata_len), ret, +                                      op_errno, out); +          ret = 0;          resolve_and_resume (frame, server_ftruncate_resume);  out: +        if (args.xdata.xdata_val) +                free (args.xdata.xdata_val); + +        if (op_errno) +                req->rpc_err = GARBAGE_ARGS; +          return ret;  } @@ -3261,8 +3646,9 @@ server_fstat (rpcsvc_request_t *req)  {          server_state_t *state = NULL;          call_frame_t   *frame = NULL; -        gfs3_write_req  args  = {{0,},}; +        gfs3_fstat_req  args  = {{0,},};          int             ret   = -1; +        int             op_errno = 0;          if (!req)                  return ret; @@ -3292,9 +3678,20 @@ server_fstat (rpcsvc_request_t *req)          state->resolve.fd_no   = args.fd;          memcpy (state->resolve.gfid, args.gfid, 16); +        GF_PROTOCOL_DICT_UNSERIALIZE (state->conn->bound_xl, state->xdata, +                                      (args.xdata.xdata_val), +                                      (args.xdata.xdata_len), ret, +                                      op_errno, out); +          ret = 0;          resolve_and_resume (frame, server_fstat_resume);  out: +        if (args.xdata.xdata_val) +                free (args.xdata.xdata_val); + +        if (op_errno) +                req->rpc_err = GARBAGE_ARGS; +          return ret;  } @@ -3306,6 +3703,7 @@ server_truncate (rpcsvc_request_t *req)          call_frame_t      *frame                 = NULL;          gfs3_truncate_req  args                  = {{0,},};          int                ret                   = -1; +        int                op_errno = 0;          if (!req)                  return ret; @@ -3335,9 +3733,20 @@ server_truncate (rpcsvc_request_t *req)          memcpy (state->resolve.gfid, args.gfid, 16);          state->offset        = args.offset; +        GF_PROTOCOL_DICT_UNSERIALIZE (state->conn->bound_xl, state->xdata, +                                      (args.xdata.xdata_val), +                                      (args.xdata.xdata_len), ret, +                                      op_errno, out); +          ret = 0;          resolve_and_resume (frame, server_truncate_resume);  out: +        if (args.xdata.xdata_val) +                free (args.xdata.xdata_val); + +        if (op_errno) +                req->rpc_err = GARBAGE_ARGS; +          return ret;  } @@ -3350,6 +3759,7 @@ server_unlink (rpcsvc_request_t *req)          call_frame_t    *frame                  = NULL;          gfs3_unlink_req  args                   = {{0,},};          int              ret                    = -1; +        int              op_errno = 0;          if (!req)                  return ret; @@ -3381,9 +3791,22 @@ server_unlink (rpcsvc_request_t *req)          state->resolve.bname  = gf_strdup (args.bname);          memcpy (state->resolve.pargfid, args.pargfid, 16); +        state->flags = args.xflags; + +        GF_PROTOCOL_DICT_UNSERIALIZE (state->conn->bound_xl, state->xdata, +                                      (args.xdata.xdata_val), +                                      (args.xdata.xdata_len), ret, +                                      op_errno, out); +          ret = 0;          resolve_and_resume (frame, server_unlink_resume);  out: +        if (args.xdata.xdata_val) +                free (args.xdata.xdata_val); + +        if (op_errno) +                req->rpc_err = GARBAGE_ARGS; +          return ret;  } @@ -3397,7 +3820,7 @@ server_setxattr (rpcsvc_request_t *req)          server_connection_t *conn                  = NULL;          gfs3_setxattr_req    args                  = {{0,},};          int32_t              ret                   = -1; -        int                  op_errno = 0; +        int32_t              op_errno = 0;          if (!req)                  return ret; @@ -3441,17 +3864,25 @@ server_setxattr (rpcsvc_request_t *req)          /* There can be some commands hidden in key, check and proceed */          gf_server_check_setxattr_cmd (frame, dict); +        GF_PROTOCOL_DICT_UNSERIALIZE (state->conn->bound_xl, state->xdata, +                                      (args.xdata.xdata_val), +                                      (args.xdata.xdata_len), ret, +                                      op_errno, out); +          ret = 0;          resolve_and_resume (frame, server_setxattr_resume);          return ret;  out: -        if (dict) -                dict_unref (dict); +        if (args.xdata.xdata_val) +                free (args.xdata.xdata_val);          if (op_errno)                  req->rpc_err = GARBAGE_ARGS; +        if (dict) +                dict_unref (dict); +          return ret;  } @@ -3466,7 +3897,7 @@ server_fsetxattr (rpcsvc_request_t *req)          call_frame_t        *frame                = NULL;          gfs3_fsetxattr_req   args                 = {{0,},};          int32_t              ret                  = -1; -        int                  op_errno = 0; +        int32_t              op_errno = 0;          if (!req)                  return ret; @@ -3507,15 +3938,25 @@ server_fsetxattr (rpcsvc_request_t *req)          state->dict = dict; +        GF_PROTOCOL_DICT_UNSERIALIZE (state->conn->bound_xl, state->xdata, +                                      (args.xdata.xdata_val), +                                      (args.xdata.xdata_len), ret, +                                      op_errno, out); +          ret = 0;          resolve_and_resume (frame, server_fsetxattr_resume);          return ret;  out: -        if (dict) -                dict_unref (dict); +        if (args.xdata.xdata_val) +                free (args.xdata.xdata_val); +          if (op_errno)                  req->rpc_err = GARBAGE_ARGS; + +        if (dict) +                dict_unref (dict); +          return ret;  } @@ -3530,7 +3971,7 @@ server_fxattrop (rpcsvc_request_t *req)          call_frame_t        *frame                = NULL;          gfs3_fxattrop_req    args                 = {{0,},};          int32_t              ret                  = -1; -        int              op_errno = 0; +        int32_t              op_errno = 0;          if (!req)                  return ret; @@ -3571,17 +4012,26 @@ server_fxattrop (rpcsvc_request_t *req)          state->dict = dict; +        GF_PROTOCOL_DICT_UNSERIALIZE (state->conn->bound_xl, state->xdata, +                                      (args.xdata.xdata_val), +                                      (args.xdata.xdata_len), ret, +                                      op_errno, out); +          ret = 0;          resolve_and_resume (frame, server_fxattrop_resume);          return ret;  out: -        if (dict) -                dict_unref (dict); +        if (args.xdata.xdata_val) +                free (args.xdata.xdata_val); +          if (op_errno)                  req->rpc_err = GARBAGE_ARGS; +        if (dict) +                dict_unref (dict); +          return ret;  } @@ -3596,7 +4046,7 @@ server_xattrop (rpcsvc_request_t *req)          call_frame_t        *frame                 = NULL;          gfs3_xattrop_req     args                  = {{0,},};          int32_t              ret                   = -1; -        int              op_errno = 0; +        int32_t              op_errno = 0;          if (!req)                  return ret; @@ -3637,17 +4087,25 @@ server_xattrop (rpcsvc_request_t *req)          state->dict = dict; +        GF_PROTOCOL_DICT_UNSERIALIZE (state->conn->bound_xl, state->xdata, +                                      (args.xdata.xdata_val), +                                      (args.xdata.xdata_len), ret, +                                      op_errno, out); +          ret = 0;          resolve_and_resume (frame, server_xattrop_resume);          return ret;  out: -        if (dict) -                dict_unref (dict); +        if (args.xdata.xdata_val) +                free (args.xdata.xdata_val);          if (op_errno)                  req->rpc_err = GARBAGE_ARGS; +        if (dict) +                dict_unref (dict); +          return ret;  } @@ -3659,6 +4117,7 @@ server_getxattr (rpcsvc_request_t *req)          call_frame_t        *frame                 = NULL;          gfs3_getxattr_req    args                  = {{0,},};          int                  ret                   = -1; +        int                  op_errno = 0;          if (!req)                  return ret; @@ -3695,9 +4154,20 @@ server_getxattr (rpcsvc_request_t *req)                  gf_server_check_getxattr_cmd (frame, state->name);          } +        GF_PROTOCOL_DICT_UNSERIALIZE (state->conn->bound_xl, state->xdata, +                                      (args.xdata.xdata_val), +                                      (args.xdata.xdata_len), ret, +                                      op_errno, out); +          ret = 0;          resolve_and_resume (frame, server_getxattr_resume);  out: +        if (args.xdata.xdata_val) +                free (args.xdata.xdata_val); + +        if (op_errno) +                req->rpc_err = GARBAGE_ARGS; +          return ret;  } @@ -3709,6 +4179,7 @@ server_fgetxattr (rpcsvc_request_t *req)          call_frame_t        *frame      = NULL;          gfs3_fgetxattr_req   args       = {{0,},};          int                  ret        = -1; +        int                  op_errno = 0;          if (!req)                  return ret; @@ -3742,9 +4213,20 @@ server_fgetxattr (rpcsvc_request_t *req)          if (args.namelen)                  state->name = gf_strdup (args.name); +        GF_PROTOCOL_DICT_UNSERIALIZE (state->conn->bound_xl, state->xdata, +                                      (args.xdata.xdata_val), +                                      (args.xdata.xdata_len), ret, +                                      op_errno, out); +          ret = 0;          resolve_and_resume (frame, server_fgetxattr_resume);  out: +        if (args.xdata.xdata_val) +                free (args.xdata.xdata_val); + +        if (op_errno) +                req->rpc_err = GARBAGE_ARGS; +          return ret;  } @@ -3757,6 +4239,7 @@ server_removexattr (rpcsvc_request_t *req)          call_frame_t         *frame                 = NULL;          gfs3_removexattr_req  args                  = {{0,},};          int                   ret                   = -1; +        int                   op_errno = 0;          if (!req)                  return ret; @@ -3788,9 +4271,20 @@ server_removexattr (rpcsvc_request_t *req)          memcpy (state->resolve.gfid, args.gfid, 16);          state->name           = gf_strdup (args.name); +        GF_PROTOCOL_DICT_UNSERIALIZE (state->conn->bound_xl, state->xdata, +                                      (args.xdata.xdata_val), +                                      (args.xdata.xdata_len), ret, +                                      op_errno, out); +          ret = 0;          resolve_and_resume (frame, server_removexattr_resume);  out: +        if (args.xdata.xdata_val) +                free (args.xdata.xdata_val); + +        if (op_errno) +                req->rpc_err = GARBAGE_ARGS; +          return ret;  } @@ -3801,6 +4295,7 @@ server_fremovexattr (rpcsvc_request_t *req)          call_frame_t         *frame                 = NULL;          gfs3_fremovexattr_req  args                  = {{0,},};          int                   ret                   = -1; +        int                   op_errno = 0;          if (!req)                  return ret; @@ -3834,9 +4329,20 @@ server_fremovexattr (rpcsvc_request_t *req)          memcpy (state->resolve.gfid, args.gfid, 16);          state->name           = gf_strdup (args.name); +        GF_PROTOCOL_DICT_UNSERIALIZE (state->conn->bound_xl, state->xdata, +                                      (args.xdata.xdata_val), +                                      (args.xdata.xdata_len), ret, +                                      op_errno, out); +          ret = 0;          resolve_and_resume (frame, server_fremovexattr_resume);  out: +        if (args.xdata.xdata_val) +                free (args.xdata.xdata_val); + +        if (op_errno) +                req->rpc_err = GARBAGE_ARGS; +          return ret;  } @@ -3850,6 +4356,7 @@ server_opendir (rpcsvc_request_t *req)          call_frame_t     *frame                 = NULL;          gfs3_opendir_req  args                  = {{0,},};          int               ret                   = -1; +        int               op_errno = 0;          if (!req)                  return ret; @@ -3878,9 +4385,20 @@ server_opendir (rpcsvc_request_t *req)          state->resolve.type   = RESOLVE_MUST;          memcpy (state->resolve.gfid, args.gfid, 16); +        GF_PROTOCOL_DICT_UNSERIALIZE (state->conn->bound_xl, state->xdata, +                                      (args.xdata.xdata_val), +                                      (args.xdata.xdata_len), ret, +                                      op_errno, out); +          ret = 0;          resolve_and_resume (frame, server_opendir_resume);  out: +        if (args.xdata.xdata_val) +                free (args.xdata.xdata_val); + +        if (op_errno) +                req->rpc_err = GARBAGE_ARGS; +          return ret;  } @@ -3893,7 +4411,7 @@ server_readdirp (rpcsvc_request_t *req)          gfs3_readdirp_req    args         = {{0,},};          size_t               headers_size = 0;          int                  ret          = -1; -        int              op_errno = 0; +        int                  op_errno = 0;          if (!req)                  return ret; @@ -3935,6 +4453,7 @@ server_readdirp (rpcsvc_request_t *req)          state->offset = args.offset;          memcpy (state->resolve.gfid, args.gfid, 16); +        /* here, dict itself works as xdata */          GF_PROTOCOL_DICT_UNSERIALIZE (state->conn->bound_xl, state->dict,                                        (args.dict.dict_val),                                        (args.dict.dict_len), ret, @@ -3947,9 +4466,8 @@ out:          if (op_errno)                  req->rpc_err = GARBAGE_ARGS; -        if (args.dict.dict_val != NULL) { +        if (args.dict.dict_val)                  free (args.dict.dict_val); -        }          return ret;  } @@ -3962,6 +4480,7 @@ server_readdir (rpcsvc_request_t *req)          gfs3_readdir_req     args         = {{0,},};          size_t               headers_size = 0;          int                  ret          = -1; +        int                  op_errno = 0;          if (!req)                  return ret; @@ -4003,9 +4522,20 @@ server_readdir (rpcsvc_request_t *req)          state->offset = args.offset;          memcpy (state->resolve.gfid, args.gfid, 16); +        GF_PROTOCOL_DICT_UNSERIALIZE (state->conn->bound_xl, state->xdata, +                                      (args.xdata.xdata_val), +                                      (args.xdata.xdata_len), ret, +                                      op_errno, out); +          ret = 0;          resolve_and_resume (frame, server_readdir_resume);  out: +        if (args.xdata.xdata_val) +                free (args.xdata.xdata_val); + +        if (op_errno) +                req->rpc_err = GARBAGE_ARGS; +          return ret;  } @@ -4016,6 +4546,7 @@ server_fsyncdir (rpcsvc_request_t *req)          call_frame_t        *frame = NULL;          gfs3_fsyncdir_req    args  = {{0,},};          int                  ret   = -1; +        int                  op_errno = 0;          if (!req)                  return ret; @@ -4046,9 +4577,20 @@ server_fsyncdir (rpcsvc_request_t *req)          state->flags = args.data;          memcpy (state->resolve.gfid, args.gfid, 16); +        GF_PROTOCOL_DICT_UNSERIALIZE (state->conn->bound_xl, state->xdata, +                                      (args.xdata.xdata_val), +                                      (args.xdata.xdata_len), ret, +                                      op_errno, out); +          ret = 0;          resolve_and_resume (frame, server_fsyncdir_resume);  out: +        if (args.xdata.xdata_val) +                free (args.xdata.xdata_val); + +        if (op_errno) +                req->rpc_err = GARBAGE_ARGS; +          return ret;  } @@ -4059,10 +4601,9 @@ server_mknod (rpcsvc_request_t *req)  {          server_state_t      *state                  = NULL;          call_frame_t        *frame                  = NULL; -        dict_t              *params                 = NULL;          gfs3_mknod_req       args                   = {{0,},};          int                  ret                    = -1; -        int              op_errno = 0; +        int                  op_errno = 0;          if (!req)                  return ret; @@ -4090,40 +4631,29 @@ server_mknod (rpcsvc_request_t *req)                  goto out;          } -        GF_PROTOCOL_DICT_UNSERIALIZE (state->conn->bound_xl, params, -                                      (args.dict.dict_val), -                                      (args.dict.dict_len), ret, -                                      op_errno, out); - -        state->params = params; -          state->resolve.type    = RESOLVE_NOT;          memcpy (state->resolve.pargfid, args.pargfid, 16);          state->resolve.bname   = gf_strdup (args.bname); -        state->mode = args.mode; -        state->dev  = args.dev; +        state->mode  = args.mode; +        state->dev   = args.dev; +        state->umask = args.umask; + +        GF_PROTOCOL_DICT_UNSERIALIZE (state->conn->bound_xl, state->xdata, +                                      (args.xdata.xdata_val), +                                      (args.xdata.xdata_len), ret, +                                      op_errno, out);          ret = 0;          resolve_and_resume (frame, server_mknod_resume); -        /* memory allocated by libc, don't use GF_FREE */ -        if (args.dict.dict_val != NULL) { -                free (args.dict.dict_val); -        } - -        return ret;  out:          if (op_errno)                  req->rpc_err = GARBAGE_ARGS; -        if (params) -                dict_unref (params); -          /* memory allocated by libc, don't use GF_FREE */ -        if (args.dict.dict_val != NULL) { -                free (args.dict.dict_val); -        } +        if (args.xdata.xdata_val) +                free (args.xdata.xdata_val);          return ret; @@ -4135,10 +4665,9 @@ server_mkdir (rpcsvc_request_t *req)  {          server_state_t      *state                  = NULL;          call_frame_t        *frame                  = NULL; -        dict_t              *params                 = NULL;          gfs3_mkdir_req       args                   = {{0,},};          int                  ret                    = -1; -        int              op_errno = 0; +        int                  op_errno = 0;          if (!req)                  return ret; @@ -4165,39 +4694,29 @@ server_mkdir (rpcsvc_request_t *req)                  req->rpc_err = GARBAGE_ARGS;                  goto out;          } -        GF_PROTOCOL_DICT_UNSERIALIZE (state->conn->bound_xl, params, -                                      (args.dict.dict_val), -                                      (args.dict.dict_len), ret, -                                      op_errno, out); - -        state->params = params;          state->resolve.type    = RESOLVE_NOT;          memcpy (state->resolve.pargfid, args.pargfid, 16);          state->resolve.bname   = gf_strdup (args.bname); -        state->mode = args.mode; +        state->mode  = args.mode; +        state->umask = args.umask; + +        /* TODO: can do alloca for xdata field instead of stdalloc */ +        GF_PROTOCOL_DICT_UNSERIALIZE (state->conn->bound_xl, state->xdata, +                                      (args.xdata.xdata_val), +                                      (args.xdata.xdata_len), ret, +                                      op_errno, out);          ret = 0;          resolve_and_resume (frame, server_mkdir_resume); -        if (args.dict.dict_val != NULL) { -                /* memory allocated by libc, don't use GF_FREE */ -                free (args.dict.dict_val); -        } - -        return ret;  out:          if (op_errno)                  req->rpc_err = GARBAGE_ARGS; -        if (params) -                dict_unref (params); - -        if (args.dict.dict_val != NULL) { -                /* memory allocated by libc, don't use GF_FREE */ -                free (args.dict.dict_val); -        } +        if (args.xdata.xdata_val) +                free (args.xdata.xdata_val);          return ret;  } @@ -4210,6 +4729,7 @@ server_rmdir (rpcsvc_request_t *req)          call_frame_t        *frame                  = NULL;          gfs3_rmdir_req       args                   = {{0,},};          int                  ret                    = -1; +        int                  op_errno = 0;          if (!req)                  return ret; @@ -4241,11 +4761,22 @@ server_rmdir (rpcsvc_request_t *req)          memcpy (state->resolve.pargfid, args.pargfid, 16);          state->resolve.bname   = gf_strdup (args.bname); -        state->flags = args.flags; +        state->flags = args.xflags; + +        GF_PROTOCOL_DICT_UNSERIALIZE (state->conn->bound_xl, state->xdata, +                                      (args.xdata.xdata_val), +                                      (args.xdata.xdata_len), ret, +                                      op_errno, out);          ret = 0;          resolve_and_resume (frame, server_rmdir_resume);  out: +        if (args.xdata.xdata_val) +                free (args.xdata.xdata_val); + +        if (op_errno) +                req->rpc_err = GARBAGE_ARGS; +          return ret;  } @@ -4259,6 +4790,7 @@ server_inodelk (rpcsvc_request_t *req)          gfs3_inodelk_req     args                  = {{0,},};          int                  cmd                   = 0;          int                  ret                   = -1; +        int                  op_errno = 0;          if (!req)                  return ret; @@ -4319,9 +4851,20 @@ server_inodelk (rpcsvc_request_t *req)                  break;          } +        GF_PROTOCOL_DICT_UNSERIALIZE (state->conn->bound_xl, state->xdata, +                                      (args.xdata.xdata_val), +                                      (args.xdata.xdata_len), ret, +                                      op_errno, out); +          ret = 0;          resolve_and_resume (frame, server_inodelk_resume);  out: +        if (args.xdata.xdata_val) +                free (args.xdata.xdata_val); + +        if (op_errno) +                req->rpc_err = GARBAGE_ARGS; +          return ret;  } @@ -4332,6 +4875,7 @@ server_finodelk (rpcsvc_request_t *req)          call_frame_t        *frame        = NULL;          gfs3_finodelk_req    args         = {{0,},};          int                  ret          = -1; +        int                  op_errno = 0;          if (!req)                  return ret; @@ -4392,9 +4936,20 @@ server_finodelk (rpcsvc_request_t *req)                  break;          } +        GF_PROTOCOL_DICT_UNSERIALIZE (state->conn->bound_xl, state->xdata, +                                      (args.xdata.xdata_val), +                                      (args.xdata.xdata_len), ret, +                                      op_errno, out); +          ret = 0;          resolve_and_resume (frame, server_finodelk_resume);  out: +        if (args.xdata.xdata_val) +                free (args.xdata.xdata_val); + +        if (op_errno) +                req->rpc_err = GARBAGE_ARGS; +          return ret;  } @@ -4406,6 +4961,7 @@ server_entrylk (rpcsvc_request_t *req)          call_frame_t        *frame                 = NULL;          gfs3_entrylk_req     args                  = {{0,},};          int                  ret                   = -1; +        int                  op_errno = 0;          if (!req)                  return ret; @@ -4444,9 +5000,20 @@ server_entrylk (rpcsvc_request_t *req)          state->cmd            = args.cmd;          state->type           = args.type; +        GF_PROTOCOL_DICT_UNSERIALIZE (state->conn->bound_xl, state->xdata, +                                      (args.xdata.xdata_val), +                                      (args.xdata.xdata_len), ret, +                                      op_errno, out); +          ret = 0;          resolve_and_resume (frame, server_entrylk_resume);  out: +        if (args.xdata.xdata_val) +                free (args.xdata.xdata_val); + +        if (op_errno) +                req->rpc_err = GARBAGE_ARGS; +          return ret;  } @@ -4457,6 +5024,7 @@ server_fentrylk (rpcsvc_request_t *req)          call_frame_t        *frame        = NULL;          gfs3_fentrylk_req    args         = {{0,},};          int                  ret          = -1; +        int                  op_errno = 0;          if (!req)                  return ret; @@ -4495,9 +5063,20 @@ server_fentrylk (rpcsvc_request_t *req)                  state->name = gf_strdup (args.name);          state->volume = gf_strdup (args.volume); +        GF_PROTOCOL_DICT_UNSERIALIZE (state->conn->bound_xl, state->xdata, +                                      (args.xdata.xdata_val), +                                      (args.xdata.xdata_len), ret, +                                      op_errno, out); +          ret = 0;          resolve_and_resume (frame, server_fentrylk_resume);  out: +        if (args.xdata.xdata_val) +                free (args.xdata.xdata_val); + +        if (op_errno) +                req->rpc_err = GARBAGE_ARGS; +          return ret;  } @@ -4508,6 +5087,7 @@ server_access (rpcsvc_request_t *req)          call_frame_t        *frame                 = NULL;          gfs3_access_req      args                  = {{0,},};          int                  ret                   = -1; +        int                  op_errno = 0;          if (!req)                  return ret; @@ -4537,9 +5117,20 @@ server_access (rpcsvc_request_t *req)          memcpy (state->resolve.gfid, args.gfid, 16);          state->mask          = args.mask; +        GF_PROTOCOL_DICT_UNSERIALIZE (state->conn->bound_xl, state->xdata, +                                      (args.xdata.xdata_val), +                                      (args.xdata.xdata_len), ret, +                                      op_errno, out); +          ret = 0;          resolve_and_resume (frame, server_access_resume);  out: +        if (args.xdata.xdata_val) +                free (args.xdata.xdata_val); + +        if (op_errno) +                req->rpc_err = GARBAGE_ARGS; +          return ret;  } @@ -4550,10 +5141,9 @@ server_symlink (rpcsvc_request_t *req)  {          server_state_t      *state                 = NULL;          call_frame_t        *frame                 = NULL; -        dict_t              *params                = NULL;          gfs3_symlink_req     args                  = {{0,},};          int                  ret                   = -1; -        int              op_errno = 0; +        int                  op_errno = 0;          if (!req)                  return ret; @@ -4582,37 +5172,27 @@ server_symlink (rpcsvc_request_t *req)                  goto out;          } -        GF_PROTOCOL_DICT_UNSERIALIZE (state->conn->bound_xl, params, -                                      (args.dict.dict_val), -                                      (args.dict.dict_len), ret, -                                      op_errno, out); - -        state->params = params; -          state->resolve.type   = RESOLVE_NOT;          memcpy (state->resolve.pargfid, args.pargfid, 16);          state->resolve.bname  = gf_strdup (args.bname);          state->name           = gf_strdup (args.linkname); +        state->umask          = args.umask; + +        GF_PROTOCOL_DICT_UNSERIALIZE (state->conn->bound_xl, state->xdata, +                                      (args.xdata.xdata_val), +                                      (args.xdata.xdata_len), ret, +                                      op_errno, out);          ret = 0;          resolve_and_resume (frame, server_symlink_resume); -        /* memory allocated by libc, don't use GF_FREE */ -        if (args.dict.dict_val != NULL) { -                free (args.dict.dict_val); -        } -        return ret;  out:          if (op_errno)                  req->rpc_err = GARBAGE_ARGS; -        if (params) -                dict_unref (params); -          /* memory allocated by libc, don't use GF_FREE */ -        if (args.dict.dict_val != NULL) { -                free (args.dict.dict_val); -        } +        if (args.xdata.xdata_val) +                free (args.xdata.xdata_val);          return ret;  } @@ -4626,6 +5206,7 @@ server_link (rpcsvc_request_t *req)          call_frame_t        *frame                     = NULL;          gfs3_link_req        args                      = {{0,},};          int                  ret                       = -1; +        int                  op_errno = 0;          if (!req)                  return ret; @@ -4660,9 +5241,20 @@ server_link (rpcsvc_request_t *req)          state->resolve2.bname  = gf_strdup (args.newbname);          memcpy (state->resolve2.pargfid, args.newgfid, 16); +        GF_PROTOCOL_DICT_UNSERIALIZE (state->conn->bound_xl, state->xdata, +                                      (args.xdata.xdata_val), +                                      (args.xdata.xdata_len), ret, +                                      op_errno, out); +          ret = 0;          resolve_and_resume (frame, server_link_resume);  out: +        if (args.xdata.xdata_val) +                free (args.xdata.xdata_val); + +        if (op_errno) +                req->rpc_err = GARBAGE_ARGS; +          return ret;  } @@ -4674,6 +5266,7 @@ server_rename (rpcsvc_request_t *req)          call_frame_t        *frame                     = NULL;          gfs3_rename_req      args                      = {{0,},};          int                  ret                       = -1; +        int                  op_errno = 0;          if (!req)                  return ret; @@ -4710,9 +5303,20 @@ server_rename (rpcsvc_request_t *req)          state->resolve2.bname = gf_strdup (args.newbname);          memcpy (state->resolve2.pargfid, args.newgfid, 16); +        GF_PROTOCOL_DICT_UNSERIALIZE (state->conn->bound_xl, state->xdata, +                                      (args.xdata.xdata_val), +                                      (args.xdata.xdata_len), ret, +                                      op_errno, out); +          ret = 0;          resolve_and_resume (frame, server_rename_resume);  out: +        if (args.xdata.xdata_val) +                free (args.xdata.xdata_val); + +        if (op_errno) +                req->rpc_err = GARBAGE_ARGS; +          return ret;  } @@ -4724,6 +5328,7 @@ server_lk (rpcsvc_request_t *req)          call_frame_t        *frame = NULL;          gfs3_lk_req          args  = {{0,},};          int                  ret   = -1; +        int                  op_errno = 0;          if (!req)                  return ret; @@ -4803,9 +5408,20 @@ server_lk (rpcsvc_request_t *req)          } +        GF_PROTOCOL_DICT_UNSERIALIZE (state->conn->bound_xl, state->xdata, +                                      (args.xdata.xdata_val), +                                      (args.xdata.xdata_len), ret, +                                      op_errno, out); +          ret = 0;          resolve_and_resume (frame, server_lk_resume);  out: +        if (args.xdata.xdata_val) +                free (args.xdata.xdata_val); + +        if (op_errno) +                req->rpc_err = GARBAGE_ARGS; +          return ret;  } @@ -4817,6 +5433,7 @@ server_rchecksum (rpcsvc_request_t *req)          call_frame_t        *frame = NULL;          gfs3_rchecksum_req   args  = {0,};          int                  ret   = -1; +        int                  op_errno = 0;          if (!req)                  return ret; @@ -4847,9 +5464,20 @@ server_rchecksum (rpcsvc_request_t *req)          state->offset        = args.offset;          state->size          = args.len; +        GF_PROTOCOL_DICT_UNSERIALIZE (state->conn->bound_xl, state->xdata, +                                      (args.xdata.xdata_val), +                                      (args.xdata.xdata_len), ret, +                                      op_errno, out); +          ret = 0;          resolve_and_resume (frame, server_rchecksum_resume);  out: +        if (args.xdata.xdata_val) +                free (args.xdata.xdata_val); + +        if (op_errno) +                req->rpc_err = GARBAGE_ARGS; +          return ret;  } @@ -4870,20 +5498,19 @@ server_null (rpcsvc_request_t *req)  int  server_lookup (rpcsvc_request_t *req)  { -        call_frame_t        *frame                  = NULL; -        server_connection_t *conn                   = NULL; -        server_state_t      *state                  = NULL; -        dict_t              *xattr_req              = NULL; -        gfs3_lookup_req      args                   = {{0,},}; -        int                  ret                    = -1; -        int              op_errno = 0; +        call_frame_t        *frame    = NULL; +        server_connection_t *conn     = NULL; +        server_state_t      *state    = NULL; +        gfs3_lookup_req      args     = {{0,},}; +        int                  ret      = -1; +        int                  op_errno = 0;          GF_VALIDATE_OR_GOTO ("server", req, err);          conn = req->trans->xl_private; -        args.bname         = alloca (req->msg[0].iov_len); -        args.dict.dict_val = alloca (req->msg[0].iov_len); +        args.bname           = alloca (req->msg[0].iov_len); +        args.xdata.xdata_val = alloca (req->msg[0].iov_len);          if (!xdr_to_generic (req->msg[0], &args, (xdrproc_t)xdr_gfs3_lookup_req)) {                  //failed to decode msg; @@ -4919,19 +5546,16 @@ server_lookup (rpcsvc_request_t *req)                  memcpy (state->resolve.gfid, args.gfid, 16);          } -        GF_PROTOCOL_DICT_UNSERIALIZE (state->conn->bound_xl, xattr_req, -                                      (args.dict.dict_val), -                                      (args.dict.dict_len), ret, +        GF_PROTOCOL_DICT_UNSERIALIZE (state->conn->bound_xl, state->xdata, +                                      (args.xdata.xdata_val), +                                      (args.xdata.xdata_len), ret,                                        op_errno, out); -        state->dict = xattr_req;          ret = 0;          resolve_and_resume (frame, server_lookup_resume);          return ret;  out: -        if (xattr_req) -                dict_unref (xattr_req);          server_lookup_cbk (frame, NULL, frame->this, -1, EINVAL, NULL, NULL,                             NULL, NULL); @@ -4946,7 +5570,8 @@ server_statfs (rpcsvc_request_t *req)          server_state_t      *state = NULL;          call_frame_t        *frame = NULL;          gfs3_statfs_req      args  = {{0,},}; -        int                  ret                    = -1; +        int                  ret   = -1; +        int                  op_errno = 0;          if (!req)                  return ret; @@ -4975,9 +5600,17 @@ server_statfs (rpcsvc_request_t *req)          state->resolve.type   = RESOLVE_MUST;          memcpy (state->resolve.gfid, args.gfid, 16); +        GF_PROTOCOL_DICT_UNSERIALIZE (state->conn->bound_xl, state->xdata, +                                      (args.xdata.xdata_val), +                                      (args.xdata.xdata_len), ret, +                                      op_errno, out); +          ret = 0;          resolve_and_resume (frame, server_statfs_resume);  out: +        if (op_errno) +                req->rpc_err = GARBAGE_ARGS; +          return ret;  } diff --git a/xlators/storage/posix/src/posix.c b/xlators/storage/posix/src/posix.c index 2df5702cb..bf38bd6ce 100644 --- a/xlators/storage/posix/src/posix.c +++ b/xlators/storage/posix/src/posix.c @@ -98,7 +98,7 @@ posix_forget (xlator_t *this, inode_t *inode)  int32_t  posix_lookup (call_frame_t *frame, xlator_t *this, -              loc_t *loc, dict_t *xattr_req) +              loc_t *loc, dict_t *xdata)  {          struct iatt buf                = {0, };          int32_t     op_ret             = -1; @@ -133,7 +133,7 @@ posix_lookup (call_frame_t *frame, xlator_t *this,                  MAKE_ENTRY_HANDLE (real_path, par_path, this, loc, &buf);                  if (uuid_is_null (loc->inode->gfid)) -                        posix_gfid_set (this, real_path, loc, xattr_req); +                        posix_gfid_set (this, real_path, loc, xdata);          }          op_errno = errno; @@ -149,9 +149,9 @@ posix_lookup (call_frame_t *frame, xlator_t *this,                  goto parent;          } -        if (xattr_req && (op_ret == 0)) { +        if (xdata && (op_ret == 0)) {                  xattr = posix_lookup_xattr_fill (this, real_path, loc, -                                                 xattr_req, &buf); +                                                 xdata, &buf);          }  parent: @@ -188,7 +188,7 @@ out:  int32_t -posix_stat (call_frame_t *frame, xlator_t *this, loc_t *loc) +posix_stat (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *xdata)  {          struct iatt           buf       = {0,};          int32_t               op_ret    = -1; @@ -221,7 +221,7 @@ posix_stat (call_frame_t *frame, xlator_t *this, loc_t *loc)  out:          SET_TO_OLD_FS_ID(); -        STACK_UNWIND_STRICT (stat, frame, op_ret, op_errno, &buf); +        STACK_UNWIND_STRICT (stat, frame, op_ret, op_errno, &buf, NULL);          return 0;  } @@ -327,7 +327,7 @@ out:  int  posix_setattr (call_frame_t *frame, xlator_t *this, -               loc_t *loc, struct iatt *stbuf, int32_t valid) +               loc_t *loc, struct iatt *stbuf, int32_t valid, dict_t *xdata)  {          int32_t        op_ret    = -1;          int32_t        op_errno  = 0; @@ -412,7 +412,7 @@ out:          SET_TO_OLD_FS_ID ();          STACK_UNWIND_STRICT (setattr, frame, op_ret, op_errno, -                             &statpre, &statpost); +                             &statpre, &statpost, NULL);          return 0;  } @@ -462,7 +462,7 @@ posix_do_futimes (xlator_t *this,  int  posix_fsetattr (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)  {          int32_t        op_ret    = -1;          int32_t        op_errno  = 0; @@ -557,14 +557,14 @@ out:          SET_TO_OLD_FS_ID ();          STACK_UNWIND_STRICT (fsetattr, frame, op_ret, op_errno, -                             &statpre, &statpost); +                             &statpre, &statpost, NULL);          return 0;  }  int32_t  posix_opendir (call_frame_t *frame, xlator_t *this, -               loc_t *loc, fd_t *fd) +               loc_t *loc, fd_t *fd, dict_t *xdata)  {          char *            real_path = NULL;          int32_t           op_ret    = -1; @@ -633,7 +633,7 @@ out:          }          SET_TO_OLD_FS_ID (); -        STACK_UNWIND_STRICT (opendir, frame, op_ret, op_errno, fd); +        STACK_UNWIND_STRICT (opendir, frame, op_ret, op_errno, fd, NULL);          return 0;  } @@ -681,7 +681,7 @@ out:  int32_t  posix_readlink (call_frame_t *frame, xlator_t *this, -                loc_t *loc, size_t size) +                loc_t *loc, size_t size, dict_t *xdata)  {          char *  dest      = NULL;          int32_t op_ret    = -1; @@ -719,7 +719,7 @@ posix_readlink (call_frame_t *frame, xlator_t *this,  out:          SET_TO_OLD_FS_ID (); -        STACK_UNWIND_STRICT (readlink, frame, op_ret, op_errno, dest, &stbuf); +        STACK_UNWIND_STRICT (readlink, frame, op_ret, op_errno, dest, &stbuf, NULL);          return 0;  } @@ -727,7 +727,7 @@ out:  int  posix_mknod (call_frame_t *frame, xlator_t *this, -             loc_t *loc, mode_t mode, dev_t dev, dict_t *params) +             loc_t *loc, mode_t mode, dev_t dev, mode_t umask, dict_t *xdata)  {          int                   tmp_fd      = 0;          int32_t               op_ret      = -1; @@ -773,9 +773,9 @@ posix_mknod (call_frame_t *frame, xlator_t *this,          /* Check if the 'gfid' already exists, because this mknod may be an             internal call from distribute for creating 'linkfile', and that             linkfile may be for a hardlinked file */ -        if (dict_get (params, GLUSTERFS_INTERNAL_FOP_KEY)) { -                dict_del (params, GLUSTERFS_INTERNAL_FOP_KEY); -                op_ret = dict_get_ptr (params, "gfid-req", &uuid_req); +        if (dict_get (xdata, GLUSTERFS_INTERNAL_FOP_KEY)) { +                dict_del (xdata, GLUSTERFS_INTERNAL_FOP_KEY); +                op_ret = dict_get_ptr (xdata, "gfid-req", &uuid_req);                  if (op_ret) {                          gf_log (this->name, GF_LOG_DEBUG,                                  "failed to get the gfid from dict for %s", @@ -818,7 +818,7 @@ real_op:                  }          } -        op_ret = posix_gfid_set (this, real_path, loc, params); +        op_ret = posix_gfid_set (this, real_path, loc, xdata);          if (op_ret) {                  gf_log (this->name, GF_LOG_ERROR,                          "setting gfid on %s failed", real_path); @@ -836,14 +836,14 @@ real_op:  #endif  post_op: -        op_ret = posix_acl_xattr_set (this, real_path, params); +        op_ret = posix_acl_xattr_set (this, real_path, xdata);          if (op_ret) {                  gf_log (this->name, GF_LOG_ERROR,                          "setting ACLs on %s failed (%s)", real_path,                          strerror (errno));          } -        op_ret = posix_entry_create_xattr_set (this, real_path, params); +        op_ret = posix_entry_create_xattr_set (this, real_path, xdata);          if (op_ret) {                  gf_log (this->name, GF_LOG_ERROR,                          "setting xattrs on %s failed (%s)", real_path, @@ -874,7 +874,8 @@ out:          SET_TO_OLD_FS_ID ();          STACK_UNWIND_STRICT (mknod, frame, op_ret, op_errno, -                             (loc)?loc->inode:NULL, &stbuf, &preparent, &postparent); +                             (loc)?loc->inode:NULL, &stbuf, &preparent, +                             &postparent, NULL);          if ((op_ret == -1) && (!was_present)) {                  unlink (real_path); @@ -886,7 +887,7 @@ out:  int  posix_mkdir (call_frame_t *frame, xlator_t *this, -             loc_t *loc, mode_t mode, dict_t *params) +             loc_t *loc, mode_t mode, mode_t umask, dict_t *xdata)  {          int32_t               op_ret      = -1;          int32_t               op_errno    = 0; @@ -942,7 +943,7 @@ posix_mkdir (call_frame_t *frame, xlator_t *this,                  goto out;          } -        op_ret = posix_gfid_set (this, real_path, loc, params); +        op_ret = posix_gfid_set (this, real_path, loc, xdata);          if (op_ret) {                  gf_log (this->name, GF_LOG_ERROR,                          "setting gfid on %s failed", real_path); @@ -959,14 +960,14 @@ posix_mkdir (call_frame_t *frame, xlator_t *this,          }  #endif -        op_ret = posix_acl_xattr_set (this, real_path, params); +        op_ret = posix_acl_xattr_set (this, real_path, xdata);          if (op_ret) {                  gf_log (this->name, GF_LOG_ERROR,                          "setting ACLs on %s failed (%s)", real_path,                          strerror (errno));          } -        op_ret = posix_entry_create_xattr_set (this, real_path, params); +        op_ret = posix_entry_create_xattr_set (this, real_path, xdata);          if (op_ret) {                  gf_log (this->name, GF_LOG_ERROR,                          "setting xattrs on %s failed (%s)", real_path, @@ -997,7 +998,8 @@ out:          SET_TO_OLD_FS_ID ();          STACK_UNWIND_STRICT (mkdir, frame, op_ret, op_errno, -                             (loc)?loc->inode:NULL, &stbuf, &preparent, &postparent); +                             (loc)?loc->inode:NULL, &stbuf, &preparent, +                             &postparent, NULL);          if ((op_ret == -1) && (!was_present)) {                  unlink (real_path); @@ -1009,7 +1011,7 @@ out:  int32_t  posix_unlink (call_frame_t *frame, xlator_t *this, -              loc_t *loc) +              loc_t *loc, int xflag, dict_t *xdata)  {          int32_t                  op_ret    = -1;          int32_t                  op_errno  = 0; @@ -1081,7 +1083,7 @@ out:          SET_TO_OLD_FS_ID ();          STACK_UNWIND_STRICT (unlink, frame, op_ret, op_errno, -                             &preparent, &postparent); +                             &preparent, &postparent, NULL);          if (fd != -1) {                  close (fd); @@ -1093,7 +1095,7 @@ out:  int  posix_rmdir (call_frame_t *frame, xlator_t *this, -             loc_t *loc, int flags) +             loc_t *loc, int flags, dict_t *xdata)  {          int32_t op_ret    = -1;          int32_t op_errno  = 0; @@ -1186,7 +1188,7 @@ out:          SET_TO_OLD_FS_ID ();          STACK_UNWIND_STRICT (rmdir, frame, op_ret, op_errno, -                             &preparent, &postparent); +                             &preparent, &postparent, NULL);          return 0;  } @@ -1194,7 +1196,7 @@ out:  int  posix_symlink (call_frame_t *frame, xlator_t *this, -               const char *linkname, loc_t *loc, dict_t *params) +               const char *linkname, loc_t *loc, mode_t umask, dict_t *xdata)  {          int32_t               op_ret      = -1;          int32_t               op_errno    = 0; @@ -1250,7 +1252,7 @@ posix_symlink (call_frame_t *frame, xlator_t *this,                  goto out;          } -        op_ret = posix_gfid_set (this, real_path, loc, params); +        op_ret = posix_gfid_set (this, real_path, loc, xdata);          if (op_ret) {                  gf_log (this->name, GF_LOG_ERROR,                          "setting gfid on %s failed", real_path); @@ -1267,14 +1269,14 @@ posix_symlink (call_frame_t *frame, xlator_t *this,          }  #endif -        op_ret = posix_acl_xattr_set (this, real_path, params); +        op_ret = posix_acl_xattr_set (this, real_path, xdata);          if (op_ret) {                  gf_log (this->name, GF_LOG_ERROR,                          "setting ACLs on %s failed (%s)", real_path,                          strerror (errno));          } -        op_ret = posix_entry_create_xattr_set (this, real_path, params); +        op_ret = posix_entry_create_xattr_set (this, real_path, xdata);          if (op_ret) {                  gf_log (this->name, GF_LOG_ERROR,                          "setting xattrs on %s failed (%s)", real_path, @@ -1305,7 +1307,8 @@ out:          SET_TO_OLD_FS_ID ();          STACK_UNWIND_STRICT (symlink, frame, op_ret, op_errno, -                             (loc)?loc->inode:NULL, &stbuf, &preparent, &postparent); +                             (loc)?loc->inode:NULL, &stbuf, &preparent, +                             &postparent, NULL);          if ((op_ret == -1) && (!was_present)) {                  unlink (real_path); @@ -1317,7 +1320,7 @@ out:  int  posix_rename (call_frame_t *frame, xlator_t *this, -              loc_t *oldloc, loc_t *newloc) +              loc_t *oldloc, loc_t *newloc, dict_t *xdata)  {          int32_t               op_ret       = -1;          int32_t               op_errno     = 0; @@ -1461,7 +1464,7 @@ out:          STACK_UNWIND_STRICT (rename, frame, op_ret, op_errno, &stbuf,                               &preoldparent, &postoldparent, -                             &prenewparent, &postnewparent); +                             &prenewparent, &postnewparent, NULL);          if ((op_ret == -1) && !was_present) {                  unlink (real_newpath); @@ -1473,7 +1476,7 @@ out:  int  posix_link (call_frame_t *frame, xlator_t *this, -            loc_t *oldloc, loc_t *newloc) +            loc_t *oldloc, loc_t *newloc, dict_t *xdata)  {          int32_t               op_ret       = -1;          int32_t               op_errno     = 0; @@ -1556,7 +1559,7 @@ out:          STACK_UNWIND_STRICT (link, frame, op_ret, op_errno,                               (oldloc)?oldloc->inode:NULL, &stbuf, &preparent, -                             &postparent); +                             &postparent, NULL);          if ((op_ret == -1) && (!was_present)) {                  unlink (real_newpath); @@ -1567,7 +1570,8 @@ out:  int32_t -posix_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, off_t offset) +posix_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, off_t offset, +                dict_t *xdata)  {          int32_t               op_ret    = -1;          int32_t               op_errno  = 0; @@ -1619,7 +1623,7 @@ out:          SET_TO_OLD_FS_ID ();          STACK_UNWIND_STRICT (truncate, frame, op_ret, op_errno, -                             &prebuf, &postbuf); +                             &prebuf, &postbuf, NULL);          return 0;  } @@ -1628,7 +1632,7 @@ out:  int  posix_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 umask, fd_t *fd, dict_t *xdata)  {          int32_t                op_ret      = -1;          int32_t                op_errno    = 0; @@ -1701,7 +1705,7 @@ posix_create (call_frame_t *frame, xlator_t *this,                  goto out;          } -        op_ret = posix_gfid_set (this, real_path, loc, params); +        op_ret = posix_gfid_set (this, real_path, loc, xdata);          if (op_ret) {                  gf_log (this->name, GF_LOG_ERROR,                          "setting gfid on %s failed", real_path); @@ -1717,14 +1721,14 @@ posix_create (call_frame_t *frame, xlator_t *this,          }  #endif -        op_ret = posix_acl_xattr_set (this, real_path, params); +        op_ret = posix_acl_xattr_set (this, real_path, xdata);          if (op_ret) {                  gf_log (this->name, GF_LOG_ERROR,                          "setting ACLs on %s failed (%s)", real_path,                          strerror (errno));          } -        op_ret = posix_entry_create_xattr_set (this, real_path, params); +        op_ret = posix_entry_create_xattr_set (this, real_path, xdata);          if (op_ret) {                  gf_log (this->name, GF_LOG_ERROR,                          "setting xattrs on %s failed (%s)", real_path, @@ -1785,14 +1789,14 @@ out:          STACK_UNWIND_STRICT (create, frame, op_ret, op_errno,                               fd, (loc)?loc->inode:NULL, &stbuf, &preparent, -                             &postparent); +                             &postparent, NULL);          return 0;  }  int32_t  posix_open (call_frame_t *frame, xlator_t *this, -            loc_t *loc, int32_t flags, fd_t *fd, int wbflags) +            loc_t *loc, int32_t flags, fd_t *fd, dict_t *xdata)  {          int32_t               op_ret       = -1;          int32_t               op_errno     = 0; @@ -1838,8 +1842,6 @@ posix_open (call_frame_t *frame, xlator_t *this,          pfd->flags = flags;          pfd->fd    = _fd; -        if (wbflags == GF_OPEN_FSYNC) -                pfd->flushwrites = 1;          op_ret = fd_ctx_set (fd, this, (uint64_t)(long)pfd);          if (op_ret) @@ -1864,7 +1866,7 @@ out:          SET_TO_OLD_FS_ID (); -        STACK_UNWIND_STRICT (open, frame, op_ret, op_errno, fd); +        STACK_UNWIND_STRICT (open, frame, op_ret, op_errno, fd, NULL);          return 0;  } @@ -1874,7 +1876,7 @@ out:  int  posix_readv (call_frame_t *frame, xlator_t *this, -             fd_t *fd, size_t size, off_t offset, uint32_t flags) +             fd_t *fd, size_t size, off_t offset, uint32_t flags, dict_t *xdata)  {          int32_t                op_ret     = -1;          int32_t                op_errno   = 0; @@ -1964,7 +1966,7 @@ posix_readv (call_frame_t *frame, xlator_t *this,  out:          STACK_UNWIND_STRICT (readv, frame, op_ret, op_errno, -                             &vec, 1, &stbuf, iobref); +                             &vec, 1, &stbuf, iobref, NULL);          if (iobref)                  iobref_unref (iobref); @@ -2060,7 +2062,7 @@ err:  int32_t  posix_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)  {          int32_t                op_ret   = -1;          int32_t                op_errno = 0; @@ -2071,7 +2073,6 @@ posix_writev (call_frame_t *frame, xlator_t *this, fd_t *fd,          struct iatt            postop    = {0,};          int                      ret      = -1; -          VALIDATE_OR_GOTO (frame, out);          VALIDATE_OR_GOTO (this, out);          VALIDATE_OR_GOTO (fd, out); @@ -2141,7 +2142,8 @@ posix_writev (call_frame_t *frame, xlator_t *this, fd_t *fd,  out: -        STACK_UNWIND_STRICT (writev, frame, op_ret, op_errno, &preop, &postop); +        STACK_UNWIND_STRICT (writev, frame, op_ret, op_errno, &preop, &postop, +                             NULL);          return 0;  } @@ -2149,7 +2151,7 @@ out:  int32_t  posix_statfs (call_frame_t *frame, xlator_t *this, -              loc_t *loc) +              loc_t *loc, dict_t *xdata)  {          char *                 real_path = NULL;          int32_t                op_ret    = -1; @@ -2188,14 +2190,14 @@ posix_statfs (call_frame_t *frame, xlator_t *this,          op_ret = 0;  out: -        STACK_UNWIND_STRICT (statfs, frame, op_ret, op_errno, &buf); +        STACK_UNWIND_STRICT (statfs, frame, op_ret, op_errno, &buf, NULL);          return 0;  }  int32_t  posix_flush (call_frame_t *frame, xlator_t *this, -             fd_t *fd) +             fd_t *fd, dict_t *xdata)  {          int32_t           op_ret   = -1;          int32_t           op_errno = 0; @@ -2217,15 +2219,14 @@ posix_flush (call_frame_t *frame, xlator_t *this,          op_ret = 0;  out: -        STACK_UNWIND_STRICT (flush, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (flush, frame, op_ret, op_errno, NULL);          return 0;  }  int32_t -posix_release (xlator_t *this, -               fd_t *fd) +posix_release (xlator_t *this, fd_t *fd)  {          struct posix_private * priv     = NULL;          struct posix_fd *      pfd      = NULL; @@ -2272,7 +2273,7 @@ out:  int32_t  posix_fsync (call_frame_t *frame, xlator_t *this, -             fd_t *fd, int32_t datasync) +             fd_t *fd, int32_t datasync, dict_t *xdata)  {          int32_t           op_ret   = -1;          int32_t           op_errno = 0; @@ -2350,7 +2351,8 @@ posix_fsync (call_frame_t *frame, xlator_t *this,  out:          SET_TO_OLD_FS_ID (); -        STACK_UNWIND_STRICT (fsync, frame, op_ret, op_errno, &preop, &postop); +        STACK_UNWIND_STRICT (fsync, frame, op_ret, op_errno, &preop, &postop, +                             NULL);          return 0;  } @@ -2359,7 +2361,7 @@ static int gf_posix_xattr_enotsup_log;  int32_t  posix_setxattr (call_frame_t *frame, xlator_t *this, -                loc_t *loc, dict_t *dict, int flags) +                loc_t *loc, dict_t *dict, int flags, dict_t *xdata)  {          int32_t       op_ret                  = -1;          int32_t       op_errno                = 0; @@ -2396,7 +2398,7 @@ posix_setxattr (call_frame_t *frame, xlator_t *this,  out:          SET_TO_OLD_FS_ID (); -        STACK_UNWIND_STRICT (setxattr, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (setxattr, frame, op_ret, op_errno, NULL);          return 0;  } @@ -2408,7 +2410,7 @@ out:   */  int32_t  posix_getxattr (call_frame_t *frame, xlator_t *this, -                loc_t *loc, const char *name) +                loc_t *loc, const char *name, dict_t *xdata)  {          struct posix_private *priv           = NULL;          int32_t               op_ret         = -1; @@ -2645,7 +2647,7 @@ done:  out:          SET_TO_OLD_FS_ID (); -        STACK_UNWIND_STRICT (getxattr, frame, op_ret, op_errno, dict); +        STACK_UNWIND_STRICT (getxattr, frame, op_ret, op_errno, dict, NULL);          if (dict)                  dict_unref (dict); @@ -2656,7 +2658,7 @@ out:  int32_t  posix_fgetxattr (call_frame_t *frame, xlator_t *this, -                 fd_t *fd, const char *name) +                 fd_t *fd, const char *name, dict_t *xdata)  {          int32_t           op_ret         = -1;          int32_t           op_errno       = ENOENT; @@ -2797,7 +2799,7 @@ done:  out:          SET_TO_OLD_FS_ID (); -        STACK_UNWIND_STRICT (fgetxattr, frame, op_ret, op_errno, dict); +        STACK_UNWIND_STRICT (fgetxattr, frame, op_ret, op_errno, dict, NULL);          if (dict)                  dict_unref (dict); @@ -2808,7 +2810,7 @@ out:  int32_t  posix_fsetxattr (call_frame_t *frame, xlator_t *this, -                 fd_t *fd, dict_t *dict, int flags) +                 fd_t *fd, dict_t *dict, int flags, dict_t *xdata)  {          int32_t            op_ret       = -1;          int32_t            op_errno     = 0; @@ -2852,7 +2854,7 @@ posix_fsetxattr (call_frame_t *frame, xlator_t *this,  out:          SET_TO_OLD_FS_ID (); -        STACK_UNWIND_STRICT (fsetxattr, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (fsetxattr, frame, op_ret, op_errno, NULL);          return 0;  } @@ -2860,7 +2862,7 @@ out:  int32_t  posix_removexattr (call_frame_t *frame, xlator_t *this, -                   loc_t *loc, const char *name) +                   loc_t *loc, const char *name, dict_t *xdata)  {          int32_t op_ret    = -1;          int32_t op_errno  = 0; @@ -2895,13 +2897,13 @@ posix_removexattr (call_frame_t *frame, xlator_t *this,  out:          SET_TO_OLD_FS_ID (); -        STACK_UNWIND_STRICT (removexattr, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (removexattr, frame, op_ret, op_errno, NULL);          return 0;  }  int32_t  posix_fremovexattr (call_frame_t *frame, xlator_t *this, -                    fd_t *fd, const char *name) +                    fd_t *fd, const char *name, dict_t *xdata)  {          int32_t           op_ret   = -1;          int32_t           op_errno = 0; @@ -2948,14 +2950,14 @@ posix_fremovexattr (call_frame_t *frame, xlator_t *this,  out:          SET_TO_OLD_FS_ID (); -        STACK_UNWIND_STRICT (fremovexattr, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (fremovexattr, frame, op_ret, op_errno, NULL);          return 0;  }  int32_t  posix_fsyncdir (call_frame_t *frame, xlator_t *this, -                fd_t *fd, int datasync) +                fd_t *fd, int datasync, dict_t *xdata)  {          int32_t           op_ret   = -1;          int32_t           op_errno = 0; @@ -2977,7 +2979,7 @@ posix_fsyncdir (call_frame_t *frame, xlator_t *this,          op_ret = 0;  out: -        STACK_UNWIND_STRICT (fsyncdir, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (fsyncdir, frame, op_ret, op_errno, NULL);          return 0;  } @@ -3027,8 +3029,8 @@ __add_long_array (int64_t *dest, int64_t *src, int count)   */  int -do_xattrop (call_frame_t *frame, xlator_t *this, -            loc_t *loc, fd_t *fd, gf_xattrop_flags_t optype, dict_t *xattr) +do_xattrop (call_frame_t *frame, xlator_t *this, loc_t *loc, fd_t *fd, +            gf_xattrop_flags_t optype, dict_t *xattr)  {          char            *real_path = NULL;          char            *array = NULL; @@ -3201,14 +3203,14 @@ out:          if (path)                  GF_FREE (path); -        STACK_UNWIND_STRICT (xattrop, frame, op_ret, op_errno, xattr); +        STACK_UNWIND_STRICT (xattrop, frame, op_ret, op_errno, xattr, NULL);          return 0;  }  int  posix_xattrop (call_frame_t *frame, xlator_t *this, -               loc_t *loc, gf_xattrop_flags_t optype, dict_t *xattr) +               loc_t *loc, gf_xattrop_flags_t optype, dict_t *xattr, dict_t *xdata)  {          do_xattrop (frame, this, loc, NULL, optype, xattr);          return 0; @@ -3217,7 +3219,7 @@ posix_xattrop (call_frame_t *frame, xlator_t *this,  int  posix_fxattrop (call_frame_t *frame, xlator_t *this, -                fd_t *fd, gf_xattrop_flags_t optype, dict_t *xattr) +                fd_t *fd, gf_xattrop_flags_t optype, dict_t *xattr, dict_t *xdata)  {          do_xattrop (frame, this, NULL, fd, optype, xattr);          return 0; @@ -3226,7 +3228,7 @@ posix_fxattrop (call_frame_t *frame, xlator_t *this,  int  posix_access (call_frame_t *frame, xlator_t *this, -              loc_t *loc, int32_t mask) +              loc_t *loc, int32_t mask, dict_t *xdata)  {          int32_t                 op_ret    = -1;          int32_t                 op_errno  = 0; @@ -3253,14 +3255,14 @@ posix_access (call_frame_t *frame, xlator_t *this,  out:          SET_TO_OLD_FS_ID (); -        STACK_UNWIND_STRICT (access, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (access, frame, op_ret, op_errno, NULL);          return 0;  }  int32_t  posix_ftruncate (call_frame_t *frame, xlator_t *this, -                 fd_t *fd, off_t offset) +                 fd_t *fd, off_t offset, dict_t *xdata)  {          int32_t               op_ret   = -1;          int32_t               op_errno = 0; @@ -3324,7 +3326,8 @@ posix_ftruncate (call_frame_t *frame, xlator_t *this,  out:          SET_TO_OLD_FS_ID (); -        STACK_UNWIND_STRICT (ftruncate, frame, op_ret, op_errno, &preop, &postop); +        STACK_UNWIND_STRICT (ftruncate, frame, op_ret, op_errno, &preop, +                             &postop, NULL);          return 0;  } @@ -3332,7 +3335,7 @@ out:  int32_t  posix_fstat (call_frame_t *frame, xlator_t *this, -             fd_t *fd) +             fd_t *fd, dict_t *xdata)  {          int                   _fd      = -1;          int32_t               op_ret   = -1; @@ -3375,7 +3378,7 @@ posix_fstat (call_frame_t *frame, xlator_t *this,  out:          SET_TO_OLD_FS_ID (); -        STACK_UNWIND_STRICT (fstat, frame, op_ret, op_errno, &buf); +        STACK_UNWIND_STRICT (fstat, frame, op_ret, op_errno, &buf, NULL);          return 0;  } @@ -3383,7 +3386,7 @@ static int gf_posix_lk_log;  int32_t  posix_lk (call_frame_t *frame, xlator_t *this, -          fd_t *fd, int32_t cmd, struct gf_flock *lock) +          fd_t *fd, int32_t cmd, struct gf_flock *lock, dict_t *xdata)  {          struct gf_flock nullock = {0, }; @@ -3392,33 +3395,35 @@ posix_lk (call_frame_t *frame, xlator_t *this,                               "not loaded. You need to use it for proper "                               "functioning of your application."); -        STACK_UNWIND_STRICT (lk, frame, -1, ENOSYS, &nullock); +        STACK_UNWIND_STRICT (lk, frame, -1, ENOSYS, &nullock, NULL);          return 0;  }  int32_t  posix_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)  {          GF_LOG_OCCASIONALLY (gf_posix_lk_log, this->name, GF_LOG_CRITICAL,                               "\"features/locks\" translator is "                               "not loaded. You need to use it for proper "                               "functioning of your application."); -        STACK_UNWIND_STRICT (inodelk, frame, -1, ENOSYS); +        STACK_UNWIND_STRICT (inodelk, frame, -1, ENOSYS, NULL);          return 0;  }  int32_t  posix_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)  {          GF_LOG_OCCASIONALLY (gf_posix_lk_log, this->name, GF_LOG_CRITICAL,                               "\"features/locks\" translator is "                               "not loaded. You need to use it for proper "                               "functioning of your application."); -        STACK_UNWIND_STRICT (finodelk, frame, -1, ENOSYS); +        STACK_UNWIND_STRICT (finodelk, frame, -1, ENOSYS, NULL);          return 0;  } @@ -3426,28 +3431,28 @@ posix_finodelk (call_frame_t *frame, xlator_t *this,  int32_t  posix_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)  {          GF_LOG_OCCASIONALLY (gf_posix_lk_log, this->name, GF_LOG_CRITICAL,                               "\"features/locks\" translator is "                               "not loaded. You need to use it for proper "                               "functioning of your application."); -        STACK_UNWIND_STRICT (entrylk, frame, -1, ENOSYS); +        STACK_UNWIND_STRICT (entrylk, frame, -1, ENOSYS, NULL);          return 0;  }  int32_t  posix_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)  {          GF_LOG_OCCASIONALLY (gf_posix_lk_log, this->name, GF_LOG_CRITICAL,                               "\"features/locks\" translator is "                               "not loaded. You need to use it for proper "                               "functioning of your application."); -        STACK_UNWIND_STRICT (fentrylk, frame, -1, ENOSYS); +        STACK_UNWIND_STRICT (fentrylk, frame, -1, ENOSYS, NULL);          return 0;  } @@ -3659,7 +3664,7 @@ posix_do_readdir (call_frame_t *frame, xlator_t *this,          }  out: -        STACK_UNWIND_STRICT (readdir, frame, op_ret, op_errno, &entries); +        STACK_UNWIND_STRICT (readdir, frame, op_ret, op_errno, &entries, NULL);          gf_dirent_free (&entries); @@ -3669,9 +3674,9 @@ out:  int32_t  posix_readdir (call_frame_t *frame, xlator_t *this, -               fd_t *fd, size_t size, off_t off) +               fd_t *fd, size_t size, off_t off, dict_t *xdata)  { -        posix_do_readdir (frame, this, fd, size, off, GF_FOP_READDIR, NULL); +        posix_do_readdir (frame, this, fd, size, off, GF_FOP_READDIR, xdata);          return 0;  } @@ -3720,7 +3725,7 @@ posix_inode (xlator_t *this)  int32_t  posix_rchecksum (call_frame_t *frame, xlator_t *this, -                 fd_t *fd, off_t offset, int32_t len) +                 fd_t *fd, off_t offset, int32_t len, dict_t *xdata)  {          char *buf = NULL; @@ -3776,7 +3781,7 @@ posix_rchecksum (call_frame_t *frame, xlator_t *this,          op_ret = 0;  out:          STACK_UNWIND_STRICT (rchecksum, frame, op_ret, op_errno, -                             weak_checksum, strong_checksum); +                             weak_checksum, strong_checksum, NULL);          return 0;  } diff --git a/xlators/system/posix-acl/src/posix-acl.c b/xlators/system/posix-acl/src/posix-acl.c index 0fe47c71d..f2fe7d9c4 100644 --- a/xlators/system/posix-acl/src/posix-acl.c +++ b/xlators/system/posix-acl/src/posix-acl.c @@ -808,7 +808,8 @@ red:  int -posix_acl_access (call_frame_t *frame, xlator_t *this, loc_t *loc, int mask) +posix_acl_access (call_frame_t *frame, xlator_t *this, loc_t *loc, int mask, +                  dict_t *xdata)  {          int  op_ret = 0;          int  op_errno = 0; @@ -861,9 +862,9 @@ posix_acl_access (call_frame_t *frame, xlator_t *this, loc_t *loc, int mask)  unwind:          if (is_fuse_call) -                STACK_UNWIND_STRICT (access, frame, op_ret, op_errno); +                STACK_UNWIND_STRICT (access, frame, op_ret, op_errno, NULL);          else -                STACK_UNWIND_STRICT (access, frame, 0, mode); +                STACK_UNWIND_STRICT (access, frame, 0, mode, NULL);          return 0;  } @@ -871,16 +872,18 @@ unwind:  int  posix_acl_truncate_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          int op_ret, int 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); +        STACK_UNWIND_STRICT (truncate, frame, op_ret, op_errno, prebuf, +                             postbuf, xdata);          return 0;  }  int -posix_acl_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, off_t off) +posix_acl_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, off_t off, +                    dict_t *xdata)  {          if (acl_permits (frame, loc->inode, POSIX_ACL_WRITE))                  goto green; @@ -889,19 +892,19 @@ posix_acl_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, off_t off)  green:          STACK_WIND (frame, posix_acl_truncate_cbk,                      FIRST_CHILD(this), FIRST_CHILD(this)->fops->truncate, -                    loc, off); +                    loc, off, xdata);          return 0;  red: -        STACK_UNWIND_STRICT (truncate, frame, -1, EACCES, NULL, NULL); +        STACK_UNWIND_STRICT (truncate, frame, -1, EACCES, NULL, NULL, NULL);          return 0;  }  int  posix_acl_open_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                    int op_ret, int op_errno, fd_t *fd) +                    int op_ret, int 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;  } @@ -909,7 +912,7 @@ posix_acl_open_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  posix_acl_open (call_frame_t *frame, xlator_t *this, loc_t *loc, int flags, -                fd_t *fd, int wbflags) +                fd_t *fd, dict_t *xdata)  {          int perm = 0; @@ -934,10 +937,10 @@ posix_acl_open (call_frame_t *frame, xlator_t *this, loc_t *loc, int flags,  green:          STACK_WIND (frame, posix_acl_open_cbk,                      FIRST_CHILD(this), FIRST_CHILD(this)->fops->open, -                    loc, flags, fd, wbflags); +                    loc, flags, fd, xdata);          return 0;  red: -        STACK_UNWIND_STRICT (open, frame, -1, EACCES, NULL); +        STACK_UNWIND_STRICT (open, frame, -1, EACCES, NULL, xdata);          return 0;  } @@ -945,17 +948,18 @@ red:  int  posix_acl_readv_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                       int op_ret, int op_errno, struct iovec *vector, -                     int count, struct iatt *stbuf, struct iobref *iobref) +                     int 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;  }  int  posix_acl_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)  {          if (__is_fuse_call (frame))                  goto green; @@ -968,10 +972,10 @@ posix_acl_readv (call_frame_t *frame, xlator_t *this, fd_t *fd,  green:          STACK_WIND (frame, posix_acl_readv_cbk,                      FIRST_CHILD(this), FIRST_CHILD(this)->fops->readv, -                    fd, size, offset, flags); +                    fd, size, offset, flags, xdata);          return 0;  red: -        STACK_UNWIND_STRICT (readv, frame, -1, EACCES, NULL, 0, NULL, NULL); +        STACK_UNWIND_STRICT (readv, frame, -1, EACCES, NULL, 0, NULL, NULL, xdata);          return 0;  } @@ -979,10 +983,10 @@ red:  int  posix_acl_writev_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                        int op_ret, int op_errno, -                      struct iatt *prebuf, struct iatt *postbuf) +                      struct iatt *prebuf, struct iatt *postbuf, dict_t *xdata)  {          STACK_UNWIND_STRICT (writev, frame, op_ret, op_errno, -                             prebuf, postbuf); +                             prebuf, postbuf, xdata);          return 0;  } @@ -990,7 +994,7 @@ posix_acl_writev_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  posix_acl_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) +                  uint32_t flags, struct iobref *iobref, dict_t *xdata)  {          if (__is_fuse_call (frame))                  goto green; @@ -1003,10 +1007,10 @@ posix_acl_writev (call_frame_t *frame, xlator_t *this, fd_t *fd,  green:          STACK_WIND (frame, posix_acl_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;  red: -        STACK_UNWIND_STRICT (writev, frame, -1, EACCES, NULL, NULL); +        STACK_UNWIND_STRICT (writev, frame, -1, EACCES, NULL, NULL, xdata);          return 0;  } @@ -1014,18 +1018,18 @@ red:  int  posix_acl_ftruncate_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                         int op_ret, int op_errno, -                         struct iatt *prebuf, struct iatt *postbuf) +                         int op_ret, int op_errno, struct iatt *prebuf, +                         struct iatt *postbuf, dict_t *xdata)  {          STACK_UNWIND_STRICT (ftruncate, frame, op_ret, op_errno, -                             prebuf, postbuf); +                             prebuf, postbuf, xdata);          return 0;  }  int  posix_acl_ftruncate (call_frame_t *frame, xlator_t *this, fd_t *fd, -                     off_t offset) +                     off_t offset, dict_t *xdata)  {          if (__is_fuse_call (frame))                  goto green; @@ -1038,26 +1042,26 @@ posix_acl_ftruncate (call_frame_t *frame, xlator_t *this, fd_t *fd,  green:          STACK_WIND (frame, posix_acl_ftruncate_cbk,                      FIRST_CHILD(this), FIRST_CHILD(this)->fops->ftruncate, -                    fd, offset); +                    fd, offset, xdata);          return 0;  red: -        STACK_UNWIND_STRICT (ftruncate, frame, -1, EACCES, NULL, NULL); +        STACK_UNWIND_STRICT (ftruncate, frame, -1, EACCES, NULL, NULL, xdata);          return 0;  }  int  posix_acl_opendir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                       int op_ret, int op_errno, fd_t *fd) +                       int op_ret, int 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 -posix_acl_opendir (call_frame_t *frame, xlator_t *this, loc_t *loc, fd_t *fd) +posix_acl_opendir (call_frame_t *frame, xlator_t *this, loc_t *loc, fd_t *fd, dict_t *xdata)  {          if (acl_permits (frame, loc->inode, POSIX_ACL_READ))                  goto green; @@ -1066,10 +1070,10 @@ posix_acl_opendir (call_frame_t *frame, xlator_t *this, loc_t *loc, fd_t *fd)  green:          STACK_WIND (frame, posix_acl_opendir_cbk,                      FIRST_CHILD(this), FIRST_CHILD(this)->fops->opendir, -                    loc, fd); +                    loc, fd, xdata);          return 0;  red: -        STACK_UNWIND_STRICT (opendir, frame, -1, EACCES, NULL); +        STACK_UNWIND_STRICT (opendir, frame, -1, EACCES, NULL, xdata);          return 0;  } @@ -1077,7 +1081,8 @@ red:  int  posix_acl_mkdir_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 *preparent, struct iatt *postparent, +                     dict_t *xdata)  {          if (op_ret != 0)                  goto unwind; @@ -1086,14 +1091,14 @@ posix_acl_mkdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  unwind:          STACK_UNWIND_STRICT (mkdir, frame, op_ret, op_errno, inode, buf, -                             preparent, postparent); +                             preparent, postparent, xdata);          return 0;  }  int  posix_acl_mkdir (call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode, -                 dict_t *params) +                 mode_t umask, dict_t *xdata)  {          mode_t   newmode = 0; @@ -1103,14 +1108,15 @@ posix_acl_mkdir (call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode,          else                  goto red;  green: -        newmode = posix_acl_inherit_dir (this, loc, params, mode); +        newmode = posix_acl_inherit_dir (this, loc, xdata, mode);          STACK_WIND (frame, posix_acl_mkdir_cbk,                      FIRST_CHILD(this), FIRST_CHILD(this)->fops->mkdir, -                    loc, newmode, params); +                    loc, newmode, umask, xdata);          return 0;  red: -        STACK_UNWIND_STRICT (mkdir, frame, -1, EACCES, NULL, NULL, NULL, NULL); +        STACK_UNWIND_STRICT (mkdir, frame, -1, EACCES, NULL, NULL, NULL, NULL, +                             NULL);          return 0;  } @@ -1118,7 +1124,8 @@ red:  int  posix_acl_mknod_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 *preparent, struct iatt *postparent, +                     dict_t *xdata)  {          if (op_ret != 0)                  goto unwind; @@ -1127,14 +1134,14 @@ posix_acl_mknod_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  unwind:          STACK_UNWIND_STRICT (mknod, frame, op_ret, op_errno, inode, buf, -                             preparent, postparent); +                             preparent, postparent, xdata);          return 0;  }  int  posix_acl_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)  {          mode_t  newmode = 0; @@ -1144,14 +1151,15 @@ posix_acl_mknod (call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode,          else                  goto red;  green: -        newmode = posix_acl_inherit_file (this, loc, params, mode); +        newmode = posix_acl_inherit_file (this, loc, xdata, mode);          STACK_WIND (frame, posix_acl_mknod_cbk,                      FIRST_CHILD(this), FIRST_CHILD(this)->fops->mknod, -                    loc, newmode, rdev, params); +                    loc, newmode, rdev, umask, xdata);          return 0;  red: -        STACK_UNWIND_STRICT (mknod, frame, -1, EACCES, NULL, NULL, NULL, NULL); +        STACK_UNWIND_STRICT (mknod, frame, -1, EACCES, NULL, NULL, NULL, NULL, +                             NULL);          return 0;  } @@ -1160,7 +1168,7 @@ int  posix_acl_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                        int op_ret, int op_errno, fd_t *fd, inode_t *inode,                        struct iatt *buf, struct iatt *preparent, -                      struct iatt *postparent) +                      struct iatt *postparent, dict_t *xdata)  {          if (op_ret != 0)                  goto unwind; @@ -1169,14 +1177,14 @@ posix_acl_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;  }  int  posix_acl_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)  {          mode_t  newmode = 0; @@ -1186,14 +1194,15 @@ posix_acl_create (call_frame_t *frame, xlator_t *this, loc_t *loc, int flags,          else                  goto red;  green: -        newmode = posix_acl_inherit_file (this, loc, params, mode); +        newmode = posix_acl_inherit_file (this, loc, xdata, mode);          STACK_WIND (frame, posix_acl_create_cbk,                      FIRST_CHILD(this), FIRST_CHILD(this)->fops->create, -                    loc, flags, newmode, fd, params); +                    loc, flags, newmode, umask, fd, xdata);          return 0;  red: -        STACK_UNWIND_STRICT (create, frame, -1, EACCES, NULL, NULL, NULL, NULL, NULL); +        STACK_UNWIND_STRICT (create, frame, -1, EACCES, NULL, NULL, NULL, +                             NULL, NULL, NULL);          return 0;  } @@ -1202,7 +1211,7 @@ int  posix_acl_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)                  goto unwind; @@ -1211,14 +1220,14 @@ posix_acl_symlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  unwind:          STACK_UNWIND_STRICT (symlink, frame, op_ret, op_errno, inode, buf, -                             preparent, postparent); +                             preparent, postparent, xdata);          return 0;  }  int  posix_acl_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)  {          if (acl_permits (frame, loc->parent, POSIX_ACL_WRITE|POSIX_ACL_EXECUTE))                  goto green; @@ -1227,30 +1236,32 @@ posix_acl_symlink (call_frame_t *frame, xlator_t *this, const char *linkname,  green:          STACK_WIND (frame, posix_acl_symlink_cbk,                      FIRST_CHILD(this), FIRST_CHILD(this)->fops->symlink, -                    linkname, loc, params); +                    linkname, loc, umask, xdata);          return 0;  red: -        STACK_UNWIND_STRICT (symlink, frame, -1, EACCES, NULL, NULL, NULL, NULL); +        STACK_UNWIND_STRICT (symlink, frame, -1, EACCES, NULL, NULL, NULL, +                             NULL, xdata);          return 0;  }  int  posix_acl_unlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                      int op_ret, int op_errno, -                      struct iatt *preparent, struct iatt *postparent) +                      int op_ret, int op_errno, struct iatt *preparent, +                      struct iatt *postparent, dict_t *xdata)  {          if (op_ret != 0)                  goto unwind;  unwind:          STACK_UNWIND_STRICT (unlink, frame, op_ret, op_errno, -                             preparent, postparent); +                             preparent, postparent, xdata);          return 0;  }  int -posix_acl_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc) +posix_acl_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc, int xflag, +                  dict_t *xdata)  {          if (!sticky_permits (frame, loc->parent, loc->inode))                  goto red; @@ -1262,10 +1273,10 @@ posix_acl_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc)  green:          STACK_WIND (frame, posix_acl_unlink_cbk,                      FIRST_CHILD(this), FIRST_CHILD(this)->fops->unlink, -                    loc); +                    loc, xflag, xdata);          return 0;  red: -        STACK_UNWIND_STRICT (unlink, frame, -1, EACCES, NULL, NULL); +        STACK_UNWIND_STRICT (unlink, frame, -1, EACCES, NULL, NULL, xdata);          return 0;  } @@ -1273,19 +1284,19 @@ red:  int  posix_acl_rmdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                       int op_ret, int op_errno, -                     struct iatt *preparent, struct iatt *postparent) +                     struct iatt *preparent, struct iatt *postparent, dict_t *xdata)  {          if (op_ret != 0)                  goto unwind;  unwind:          STACK_UNWIND_STRICT (rmdir, frame, op_ret, op_errno, -                             preparent, postparent); +                             preparent, postparent, xdata);          return 0;  }  int -posix_acl_rmdir (call_frame_t *frame, xlator_t *this, loc_t *loc, int flags) +posix_acl_rmdir (call_frame_t *frame, xlator_t *this, loc_t *loc, int flags, dict_t *xdata)  {          if (!sticky_permits (frame, loc->parent, loc->inode))                  goto red; @@ -1297,10 +1308,10 @@ posix_acl_rmdir (call_frame_t *frame, xlator_t *this, loc_t *loc, int flags)  green:          STACK_WIND (frame, posix_acl_rmdir_cbk,                      FIRST_CHILD(this), FIRST_CHILD(this)->fops->rmdir, -                    loc, flags); +                    loc, flags, xdata);          return 0;  red: -        STACK_UNWIND_STRICT (rmdir, frame, -1, EACCES, NULL, NULL); +        STACK_UNWIND_STRICT (rmdir, frame, -1, EACCES, NULL, NULL, xdata);          return 0;  } @@ -1309,20 +1320,21 @@ int  posix_acl_rename_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                        int op_ret, int 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)  {          if (op_ret != 0)                  goto unwind;  unwind:          STACK_UNWIND_STRICT (rename, frame, op_ret, op_errno, buf,                               preoldparent, postoldparent, -                             prenewparent, postnewparent); +                             prenewparent, postnewparent, xdata);          return 0;  }  int -posix_acl_rename (call_frame_t *frame, xlator_t *this, loc_t *old, loc_t *new) +posix_acl_rename (call_frame_t *frame, xlator_t *this, loc_t *old, loc_t *new, dict_t *xdata)  {          if (!acl_permits (frame, old->parent, POSIX_ACL_WRITE))                  goto red; @@ -1340,11 +1352,11 @@ posix_acl_rename (call_frame_t *frame, xlator_t *this, loc_t *old, loc_t *new)          STACK_WIND (frame, posix_acl_rename_cbk,                      FIRST_CHILD(this), FIRST_CHILD(this)->fops->rename, -                    old, new); +                    old, new, xdata);          return 0;  red:          STACK_UNWIND_STRICT (rename, frame, -1, EACCES, NULL, NULL, NULL, NULL, -                             NULL); +                             NULL, NULL);          return 0;  } @@ -1352,19 +1364,19 @@ red:  int  posix_acl_link_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 *preparent, struct iatt *postparent, dict_t *xdata)  {          if (op_ret != 0)                  goto unwind;  unwind:          STACK_UNWIND_STRICT (link, frame, op_ret, op_errno, inode, buf, -                             preparent, postparent); +                             preparent, postparent, xdata);          return 0;  }  int -posix_acl_link (call_frame_t *frame, xlator_t *this, loc_t *old, loc_t *new) +posix_acl_link (call_frame_t *frame, xlator_t *this, loc_t *old, loc_t *new, dict_t *xdata)  {          struct posix_acl_ctx *ctx = NULL;          int                   op_errno = 0; @@ -1382,10 +1394,10 @@ posix_acl_link (call_frame_t *frame, xlator_t *this, loc_t *old, loc_t *new)          STACK_WIND (frame, posix_acl_link_cbk,                      FIRST_CHILD(this), FIRST_CHILD(this)->fops->link, -                    old, new); +                    old, new, xdata);          return 0;  red: -        STACK_UNWIND_STRICT (link, frame, -1, op_errno, NULL, NULL, NULL, NULL); +        STACK_UNWIND_STRICT (link, frame, -1, op_errno, NULL, NULL, NULL, NULL, xdata);          return 0;  } @@ -1393,19 +1405,20 @@ red:  int  posix_acl_readdir_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)  {          if (op_ret != 0)                  goto unwind;  unwind: -        STACK_UNWIND_STRICT (readdir, frame, op_ret, op_errno, entries); +        STACK_UNWIND_STRICT (readdir, frame, op_ret, op_errno, entries, xdata);          return 0;  }  int  posix_acl_readdir (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size, -                   off_t offset) +                   off_t offset, dict_t *xdata)  {          if (acl_permits (frame, fd->inode, POSIX_ACL_READ))                  goto green; @@ -1414,10 +1427,10 @@ posix_acl_readdir (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size,  green:          STACK_WIND (frame, posix_acl_readdir_cbk,                      FIRST_CHILD(this), FIRST_CHILD(this)->fops->readdir, -                    fd, size, offset); +                    fd, size, offset, xdata);          return 0;  red: -        STACK_UNWIND_STRICT (readdir, frame, -1, EACCES, NULL); +        STACK_UNWIND_STRICT (readdir, frame, -1, EACCES, NULL, xdata);          return 0;  } @@ -1425,7 +1438,8 @@ red:  int  posix_acl_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;          struct posix_acl *acl_access  = NULL; @@ -1491,7 +1505,7 @@ posix_acl_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;  } @@ -1527,7 +1541,7 @@ green:          return 0;  red: -        STACK_UNWIND_STRICT (readdirp, frame, -1, EACCES, NULL); +        STACK_UNWIND_STRICT (readdirp, frame, -1, EACCES, NULL, NULL);          return 0;  } @@ -1597,7 +1611,7 @@ setattr_scrutiny (call_frame_t *frame, inode_t *inode, struct iatt *buf,  int  posix_acl_setattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                         int op_ret, int op_errno, -                       struct iatt *prebuf, struct iatt *postbuf) +                       struct iatt *prebuf, struct iatt *postbuf, dict_t *xdata)  {          inode_t   *inode = NULL; @@ -1610,14 +1624,15 @@ posix_acl_setattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          posix_acl_ctx_update (inode, this, postbuf);  unwind: -        STACK_UNWIND_STRICT (setattr, frame, op_ret, op_errno, prebuf, postbuf); +        STACK_UNWIND_STRICT (setattr, frame, op_ret, op_errno, prebuf, +                             postbuf, xdata);          return 0;  }  int  posix_acl_setattr (call_frame_t *frame, xlator_t *this, loc_t *loc, -                   struct iatt *buf, int valid) +                   struct iatt *buf, int valid, dict_t *xdata)  {          int  op_errno = 0; @@ -1630,10 +1645,10 @@ posix_acl_setattr (call_frame_t *frame, xlator_t *this, loc_t *loc,          STACK_WIND (frame, posix_acl_setattr_cbk,                      FIRST_CHILD(this), FIRST_CHILD(this)->fops->setattr, -                    loc, buf, valid); +                    loc, buf, valid, xdata);          return 0;  red: -        STACK_UNWIND_STRICT (setattr, frame, -1, op_errno, NULL, NULL); +        STACK_UNWIND_STRICT (setattr, frame, -1, op_errno, NULL, NULL, xdata);          return 0;  } @@ -1642,7 +1657,7 @@ red:  int  posix_acl_fsetattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          int op_ret, int op_errno, -                        struct iatt *prebuf, struct iatt *postbuf) +                        struct iatt *prebuf, struct iatt *postbuf, dict_t *xdata)  {          inode_t   *inode = NULL; @@ -1655,14 +1670,15 @@ posix_acl_fsetattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          posix_acl_ctx_update (inode, this, postbuf);  unwind: -        STACK_UNWIND_STRICT (fsetattr, frame, op_ret, op_errno, prebuf, postbuf); +        STACK_UNWIND_STRICT (fsetattr, frame, op_ret, op_errno, prebuf, +                             postbuf, xdata);          return 0;  }  int  posix_acl_fsetattr (call_frame_t *frame, xlator_t *this, fd_t *fd, -                    struct iatt *buf, int valid) +                    struct iatt *buf, int valid, dict_t *xdata)  {          int  op_errno = 0; @@ -1675,10 +1691,10 @@ posix_acl_fsetattr (call_frame_t *frame, xlator_t *this, fd_t *fd,          STACK_WIND (frame, posix_acl_fsetattr_cbk,                      FIRST_CHILD(this), FIRST_CHILD(this)->fops->fsetattr, -                    fd, buf, valid); +                    fd, buf, valid, xdata);          return 0;  red: -        STACK_UNWIND_STRICT (fsetattr, frame, -1, EACCES, NULL, NULL); +        STACK_UNWIND_STRICT (fsetattr, frame, -1, EACCES, NULL, NULL, xdata);          return 0;  } @@ -1781,9 +1797,9 @@ posix_acl_setxattr_update (xlator_t *this, inode_t *inode, dict_t *xattr)  int  posix_acl_setxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                        int op_ret, int op_errno) +                        int op_ret, int 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;  } @@ -1791,7 +1807,7 @@ posix_acl_setxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  posix_acl_setxattr (call_frame_t *frame, xlator_t *this, loc_t *loc, -                    dict_t *xattr, int flags) +                    dict_t *xattr, int flags, dict_t *xdata)  {          int  op_errno = 0; @@ -1804,10 +1820,10 @@ posix_acl_setxattr (call_frame_t *frame, xlator_t *this, loc_t *loc,          STACK_WIND (frame, posix_acl_setxattr_cbk,                      FIRST_CHILD(this), FIRST_CHILD(this)->fops->setxattr, -                    loc, xattr, flags); +                    loc, xattr, flags, xdata);          return 0;  red: -        STACK_UNWIND_STRICT (setxattr, frame, -1, op_errno); +        STACK_UNWIND_STRICT (setxattr, frame, -1, op_errno, xdata);          return 0;  } @@ -1815,9 +1831,9 @@ red:  int  posix_acl_fsetxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                         int op_ret, int op_errno) +                         int op_ret, int 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;  } @@ -1825,7 +1841,7 @@ posix_acl_fsetxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  posix_acl_fsetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd, -                     dict_t *xattr, int flags) +                     dict_t *xattr, int flags, dict_t *xdata)  {          int  op_errno = 0; @@ -1838,10 +1854,10 @@ posix_acl_fsetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd,          STACK_WIND (frame, posix_acl_fsetxattr_cbk,                      FIRST_CHILD(this), FIRST_CHILD(this)->fops->fsetxattr, -                    fd, xattr, flags); +                    fd, xattr, flags, xdata);          return 0;  red: -        STACK_UNWIND_STRICT (fsetxattr, frame, -1, op_errno); +        STACK_UNWIND_STRICT (fsetxattr, frame, -1, op_errno, xdata);          return 0;  } @@ -1849,9 +1865,9 @@ red:  int  posix_acl_getxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                        int op_ret, int op_errno, dict_t *xattr) +                        int op_ret, int op_errno, dict_t *xattr, dict_t *xdata)  { -        STACK_UNWIND_STRICT (getxattr, frame, op_ret, op_errno, xattr); +        STACK_UNWIND_STRICT (getxattr, frame, op_ret, op_errno, xattr, xdata);          return 0;  } @@ -1859,7 +1875,7 @@ posix_acl_getxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  posix_acl_getxattr (call_frame_t *frame, xlator_t *this, loc_t *loc, -                    const char *name) +                    const char *name, dict_t *xdata)  {          if (whitelisted_xattr (name))                  goto green; @@ -1871,10 +1887,10 @@ posix_acl_getxattr (call_frame_t *frame, xlator_t *this, loc_t *loc,  green:          STACK_WIND (frame, posix_acl_getxattr_cbk,                      FIRST_CHILD(this), FIRST_CHILD(this)->fops->getxattr, -                    loc, name); +                    loc, name, xdata);          return 0;  red: -        STACK_UNWIND_STRICT (getxattr, frame, -1, EACCES, NULL); +        STACK_UNWIND_STRICT (getxattr, frame, -1, EACCES, NULL, xdata);          return 0;  } @@ -1882,9 +1898,9 @@ red:  int  posix_acl_fgetxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                         int op_ret, int op_errno, dict_t *xattr) +                         int op_ret, int op_errno, dict_t *xattr, dict_t *xdata)  { -        STACK_UNWIND_STRICT (fgetxattr, frame, op_ret, op_errno, xattr); +        STACK_UNWIND_STRICT (fgetxattr, frame, op_ret, op_errno, xattr, xdata);          return 0;  } @@ -1892,7 +1908,7 @@ posix_acl_fgetxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  posix_acl_fgetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd, -                     const char *name) +                     const char *name, dict_t *xdata)  {          if (whitelisted_xattr (name))                  goto green; @@ -1904,10 +1920,10 @@ posix_acl_fgetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd,  green:          STACK_WIND (frame, posix_acl_fgetxattr_cbk,                      FIRST_CHILD(this), FIRST_CHILD(this)->fops->fgetxattr, -                    fd, name); +                    fd, name, xdata);          return 0;  red: -        STACK_UNWIND_STRICT (fgetxattr, frame, -1, EACCES, NULL); +        STACK_UNWIND_STRICT (fgetxattr, frame, -1, EACCES, NULL, xdata);          return 0;  } @@ -1915,9 +1931,9 @@ red:  int  posix_acl_removexattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                           int op_ret, int op_errno) +                           int op_ret, int 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;  } @@ -1925,7 +1941,7 @@ posix_acl_removexattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  posix_acl_removexattr (call_frame_t *frame, xlator_t *this, loc_t *loc, -                       const char *name) +                       const char *name, dict_t *xdata)  {          struct  posix_acl_ctx  *ctx = NULL;          int                     op_errno = EACCES; @@ -1953,10 +1969,10 @@ posix_acl_removexattr (call_frame_t *frame, xlator_t *this, loc_t *loc,  green:          STACK_WIND (frame, posix_acl_removexattr_cbk,                      FIRST_CHILD(this), FIRST_CHILD(this)->fops->removexattr, -                    loc, name); +                    loc, name, xdata);          return 0;  red: -        STACK_UNWIND_STRICT (removexattr, frame, -1, op_errno); +        STACK_UNWIND_STRICT (removexattr, frame, -1, op_errno, xdata);          return 0;  }  | 
