diff options
Diffstat (limited to 'xlators/cluster/dht')
| -rw-r--r-- | xlators/cluster/dht/src/dht-common.c | 329 | ||||
| -rw-r--r-- | xlators/cluster/dht/src/dht-common.h | 100 | ||||
| -rw-r--r-- | xlators/cluster/dht/src/dht-diskusage.c | 7 | ||||
| -rw-r--r-- | xlators/cluster/dht/src/dht-inode-read.c | 174 | ||||
| -rw-r--r-- | xlators/cluster/dht/src/dht-inode-write.c | 65 | ||||
| -rw-r--r-- | xlators/cluster/dht/src/dht-linkfile.c | 14 | ||||
| -rw-r--r-- | xlators/cluster/dht/src/dht-rebalance.c | 2 | ||||
| -rw-r--r-- | xlators/cluster/dht/src/dht-rename.c | 72 | ||||
| -rw-r--r-- | xlators/cluster/dht/src/dht-selfheal.c | 17 | ||||
| -rw-r--r-- | xlators/cluster/dht/src/nufa.c | 35 | ||||
| -rw-r--r-- | xlators/cluster/dht/src/switch.c | 34 | 
11 files changed, 452 insertions, 397 deletions
diff --git a/xlators/cluster/dht/src/dht-common.c b/xlators/cluster/dht/src/dht-common.c index 059246d972c..f16ecb1b6e3 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 d7689cc7f35..61687aacca0 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 0200695d2c7..767510fac89 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 3ec6f4ba243..6732f23974a 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 2f59e7c94f6..5561ad0f6bc 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 d8ce49ddff1..acdd24913f1 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 eaf5e89ce05..783d153d0cc 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 fa06de71175..af8f5077469 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 6f6d0267122..2ca340295d8 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 951fe4e0410..56ee12908c8 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 1451e011e61..e129bf01b46 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;  }  | 
