diff options
| author | Amar Tumballi <amarts@redhat.com> | 2012-03-20 17:22:24 +0530 | 
|---|---|---|
| committer | Anand Avati <avati@redhat.com> | 2012-03-22 16:40:27 -0700 | 
| commit | 9d3af972f516b6ba38d2736ce2016e34a452d569 (patch) | |
| tree | 1dcdc620748a42cdfb5464c3adaae5a4a3a6f869 /libglusterfs | |
| parent | afe542eca18888463798747d2a95e5a9d239a4a0 (diff) | |
core: adding extra data for fops
with this change, the xlator APIs will have a dictionary as extra
argument, which is passed between all the layers. This can be
utilized for overloading in some of the operations.
Change-Id: I58a8186b3ef647650280e63f3e5e9b9de7827b40
Signed-off-by: Amar Tumballi <amarts@redhat.com>
BUG: 782265
Reviewed-on: http://review.gluster.com/2960
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Anand Avati <avati@redhat.com>
Diffstat (limited to 'libglusterfs')
| -rw-r--r-- | libglusterfs/src/call-stub.c | 720 | ||||
| -rw-r--r-- | libglusterfs/src/call-stub.h | 187 | ||||
| -rw-r--r-- | libglusterfs/src/defaults.c | 563 | ||||
| -rw-r--r-- | libglusterfs/src/defaults.h | 320 | ||||
| -rw-r--r-- | libglusterfs/src/syncop.c | 122 | ||||
| -rw-r--r-- | libglusterfs/src/syncop.h | 1 | ||||
| -rw-r--r-- | libglusterfs/src/xlator.h | 177 | 
7 files changed, 1178 insertions, 912 deletions
diff --git a/libglusterfs/src/call-stub.c b/libglusterfs/src/call-stub.c index 9b3a9c34849..01e919d6943 100644 --- a/libglusterfs/src/call-stub.c +++ b/libglusterfs/src/call-stub.c @@ -55,7 +55,7 @@ call_stub_t *  fop_lookup_stub (call_frame_t *frame,                   fop_lookup_t fn,                   loc_t *loc, -                 dict_t *xattr_req) +                 dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -67,10 +67,10 @@ fop_lookup_stub (call_frame_t *frame,          stub->args.lookup.fn = fn; -        if (xattr_req) -                stub->args.lookup.xattr_req = dict_ref (xattr_req); -          loc_copy (&stub->args.lookup.loc, loc); +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -83,7 +83,7 @@ fop_lookup_cbk_stub (call_frame_t *frame,                       int32_t op_errno,                       inode_t *inode,                       struct iatt *buf, -                     dict_t *dict, +                     dict_t *xdata,                       struct iatt *postparent)  {          call_stub_t *stub = NULL; @@ -100,10 +100,11 @@ fop_lookup_cbk_stub (call_frame_t *frame,                  stub->args.lookup_cbk.inode = inode_ref (inode);          if (buf)                  stub->args.lookup_cbk.buf = *buf; -        if (dict) -                stub->args.lookup_cbk.dict = dict_ref (dict);          if (postparent)                  stub->args.lookup_cbk.postparent = *postparent; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -113,7 +114,7 @@ out:  call_stub_t *  fop_stat_stub (call_frame_t *frame,                 fop_stat_t fn, -               loc_t *loc) +               loc_t *loc, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -125,6 +126,9 @@ fop_stat_stub (call_frame_t *frame,          stub->args.stat.fn = fn;          loc_copy (&stub->args.stat.loc, loc); +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -135,7 +139,7 @@ fop_stat_cbk_stub (call_frame_t *frame,                     fop_stat_cbk_t fn,                     int32_t op_ret,                     int32_t op_errno, -                   struct iatt *buf) +                   struct iatt *buf, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -149,6 +153,9 @@ fop_stat_cbk_stub (call_frame_t *frame,          stub->args.stat_cbk.op_errno = op_errno;          if (op_ret == 0)                  stub->args.stat_cbk.buf = *buf; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -157,7 +164,7 @@ out:  call_stub_t *  fop_fstat_stub (call_frame_t *frame,                  fop_fstat_t fn, -                fd_t *fd) +                fd_t *fd, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -170,6 +177,9 @@ fop_fstat_stub (call_frame_t *frame,          if (fd)                  stub->args.fstat.fd = fd_ref (fd); +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -180,7 +190,7 @@ fop_fstat_cbk_stub (call_frame_t *frame,                      fop_fstat_cbk_t fn,                      int32_t op_ret,                      int32_t op_errno, -                    struct iatt *buf) +                    struct iatt *buf, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -194,6 +204,9 @@ fop_fstat_cbk_stub (call_frame_t *frame,          stub->args.fstat_cbk.op_errno = op_errno;          if (buf)                  stub->args.fstat_cbk.buf = *buf; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -205,7 +218,7 @@ call_stub_t *  fop_truncate_stub (call_frame_t *frame,                     fop_truncate_t fn,                     loc_t *loc, -                   off_t off) +                   off_t off, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -218,6 +231,9 @@ fop_truncate_stub (call_frame_t *frame,          stub->args.truncate.fn = fn;          loc_copy (&stub->args.truncate.loc, loc);          stub->args.truncate.off = off; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -229,7 +245,7 @@ fop_truncate_cbk_stub (call_frame_t *frame,                         int32_t op_ret,                         int32_t op_errno,                         struct iatt *prebuf, -                       struct iatt *postbuf) +                       struct iatt *postbuf, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -245,6 +261,9 @@ fop_truncate_cbk_stub (call_frame_t *frame,                  stub->args.truncate_cbk.prebuf = *prebuf;          if (postbuf)                  stub->args.truncate_cbk.postbuf = *postbuf; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -254,7 +273,7 @@ call_stub_t *  fop_ftruncate_stub (call_frame_t *frame,                      fop_ftruncate_t fn,                      fd_t *fd, -                    off_t off) +                    off_t off, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -268,6 +287,9 @@ fop_ftruncate_stub (call_frame_t *frame,                  stub->args.ftruncate.fd = fd_ref (fd);          stub->args.ftruncate.off = off; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -279,7 +301,7 @@ fop_ftruncate_cbk_stub (call_frame_t *frame,                          int32_t op_ret,                          int32_t op_errno,                          struct iatt *prebuf, -                        struct iatt *postbuf) +                        struct iatt *postbuf, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -295,6 +317,9 @@ fop_ftruncate_cbk_stub (call_frame_t *frame,                  stub->args.ftruncate_cbk.prebuf = *prebuf;          if (postbuf)                  stub->args.ftruncate_cbk.postbuf = *postbuf; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -304,7 +329,7 @@ call_stub_t *  fop_access_stub (call_frame_t *frame,                   fop_access_t fn,                   loc_t *loc, -                 int32_t mask) +                 int32_t mask, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -317,6 +342,9 @@ fop_access_stub (call_frame_t *frame,          stub->args.access.fn = fn;          loc_copy (&stub->args.access.loc, loc);          stub->args.access.mask = mask; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -326,7 +354,7 @@ call_stub_t *  fop_access_cbk_stub (call_frame_t *frame,                       fop_access_cbk_t fn,                       int32_t op_ret, -                     int32_t op_errno) +                     int32_t op_errno, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -338,6 +366,9 @@ fop_access_cbk_stub (call_frame_t *frame,          stub->args.access_cbk.fn = fn;          stub->args.access_cbk.op_ret = op_ret;          stub->args.access_cbk.op_errno = op_errno; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -347,7 +378,7 @@ call_stub_t *  fop_readlink_stub (call_frame_t *frame,                     fop_readlink_t fn,                     loc_t *loc, -                   size_t size) +                   size_t size, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -360,6 +391,9 @@ fop_readlink_stub (call_frame_t *frame,          stub->args.readlink.fn = fn;          loc_copy (&stub->args.readlink.loc, loc);          stub->args.readlink.size = size; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -371,7 +405,7 @@ fop_readlink_cbk_stub (call_frame_t *frame,                         int32_t op_ret,                         int32_t op_errno,                         const char *path, -                       struct iatt *sbuf) +                       struct iatt *sbuf, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -387,14 +421,17 @@ fop_readlink_cbk_stub (call_frame_t *frame,                  stub->args.readlink_cbk.buf = gf_strdup (path);          if (sbuf)                  stub->args.readlink_cbk.sbuf = *sbuf; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  }  call_stub_t * -fop_mknod_stub (call_frame_t *frame, fop_mknod_t fn, -                loc_t *loc, mode_t mode, dev_t rdev, dict_t *params) +fop_mknod_stub (call_frame_t *frame, fop_mknod_t fn, loc_t *loc, mode_t mode, +                dev_t rdev, mode_t umask, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -408,8 +445,10 @@ fop_mknod_stub (call_frame_t *frame, fop_mknod_t fn,          loc_copy (&stub->args.mknod.loc, loc);          stub->args.mknod.mode = mode;          stub->args.mknod.rdev = rdev; -        if (params) -                stub->args.mknod.params = dict_ref (params); +        stub->args.mknod.umask = umask; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -423,7 +462,7 @@ fop_mknod_cbk_stub (call_frame_t *frame,                      inode_t *inode,                      struct iatt *buf,                      struct iatt *preparent, -                    struct iatt *postparent) +                    struct iatt *postparent, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -443,6 +482,9 @@ fop_mknod_cbk_stub (call_frame_t *frame,                  stub->args.mknod_cbk.preparent = *preparent;          if (postparent)                  stub->args.mknod_cbk.postparent = *postparent; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -450,7 +492,7 @@ out:  call_stub_t *  fop_mkdir_stub (call_frame_t *frame, fop_mkdir_t fn, -                loc_t *loc, mode_t mode, dict_t *params) +                loc_t *loc, mode_t mode, mode_t umask, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -462,9 +504,12 @@ fop_mkdir_stub (call_frame_t *frame, fop_mkdir_t fn,          stub->args.mkdir.fn = fn;          loc_copy (&stub->args.mkdir.loc, loc); -        stub->args.mkdir.mode = mode; -        if (params) -                stub->args.mkdir.params = dict_ref (params); +        stub->args.mkdir.mode  = mode; +        stub->args.mkdir.umask = umask; + +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -478,7 +523,7 @@ fop_mkdir_cbk_stub (call_frame_t *frame,                      inode_t *inode,                      struct iatt *buf,                      struct iatt *preparent, -                    struct iatt *postparent) +                    struct iatt *postparent, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -498,6 +543,9 @@ fop_mkdir_cbk_stub (call_frame_t *frame,                  stub->args.mkdir_cbk.preparent = *preparent;          if (postparent)                  stub->args.mkdir_cbk.postparent = *postparent; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -506,7 +554,7 @@ out:  call_stub_t *  fop_unlink_stub (call_frame_t *frame,                   fop_unlink_t fn, -                 loc_t *loc) +                 loc_t *loc, int xflag, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -518,6 +566,10 @@ fop_unlink_stub (call_frame_t *frame,          stub->args.unlink.fn = fn;          loc_copy (&stub->args.unlink.loc, loc); +        stub->args.unlink.xflag = xflag; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -529,7 +581,7 @@ fop_unlink_cbk_stub (call_frame_t *frame,                       int32_t op_ret,                       int32_t op_errno,                       struct iatt *preparent, -                     struct iatt *postparent) +                     struct iatt *postparent, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -545,6 +597,9 @@ fop_unlink_cbk_stub (call_frame_t *frame,                  stub->args.unlink_cbk.preparent = *preparent;          if (postparent)                  stub->args.unlink_cbk.postparent = *postparent; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -553,7 +608,7 @@ out:  call_stub_t *  fop_rmdir_stub (call_frame_t *frame, fop_rmdir_t fn, -                loc_t *loc, int flags) +                loc_t *loc, int flags, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -566,6 +621,9 @@ fop_rmdir_stub (call_frame_t *frame, fop_rmdir_t fn,          stub->args.rmdir.fn = fn;          loc_copy (&stub->args.rmdir.loc, loc);          stub->args.rmdir.flags = flags; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -577,7 +635,7 @@ fop_rmdir_cbk_stub (call_frame_t *frame,                      int32_t op_ret,                      int32_t op_errno,                      struct iatt *preparent, -                    struct iatt *postparent) +                    struct iatt *postparent, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -593,6 +651,9 @@ fop_rmdir_cbk_stub (call_frame_t *frame,                  stub->args.rmdir_cbk.preparent = *preparent;          if (postparent)                  stub->args.rmdir_cbk.postparent = *postparent; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -600,7 +661,7 @@ out:  call_stub_t *  fop_symlink_stub (call_frame_t *frame, fop_symlink_t fn, -                  const char *linkname, loc_t *loc, dict_t *params) +                  const char *linkname, loc_t *loc, mode_t umask, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -613,9 +674,11 @@ fop_symlink_stub (call_frame_t *frame, fop_symlink_t fn,          stub->args.symlink.fn = fn;          stub->args.symlink.linkname = gf_strdup (linkname); +        stub->args.symlink.umask = umask;          loc_copy (&stub->args.symlink.loc, loc); -        if (params) -                stub->args.symlink.params = dict_ref (params); +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -629,7 +692,7 @@ fop_symlink_cbk_stub (call_frame_t *frame,                        inode_t *inode,                        struct iatt *buf,                        struct iatt *preparent, -                      struct iatt *postparent) +                      struct iatt *postparent, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -649,6 +712,9 @@ fop_symlink_cbk_stub (call_frame_t *frame,                  stub->args.symlink_cbk.preparent = *preparent;          if (postparent)                  stub->args.symlink_cbk.postparent = *postparent; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -658,7 +724,7 @@ call_stub_t *  fop_rename_stub (call_frame_t *frame,                   fop_rename_t fn,                   loc_t *oldloc, -                 loc_t *newloc) +                 loc_t *newloc, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -672,6 +738,9 @@ fop_rename_stub (call_frame_t *frame,          stub->args.rename.fn = fn;          loc_copy (&stub->args.rename.old, oldloc);          loc_copy (&stub->args.rename.new, newloc); +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -686,7 +755,7 @@ fop_rename_cbk_stub (call_frame_t *frame,                       struct iatt *preoldparent,                       struct iatt *postoldparent,                       struct iatt *prenewparent, -                     struct iatt *postnewparent) +                     struct iatt *postnewparent, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -708,6 +777,9 @@ fop_rename_cbk_stub (call_frame_t *frame,                  stub->args.rename_cbk.prenewparent = *prenewparent;          if (postnewparent)                  stub->args.rename_cbk.postnewparent = *postnewparent; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -717,7 +789,7 @@ call_stub_t *  fop_link_stub (call_frame_t *frame,                 fop_link_t fn,                 loc_t *oldloc, -               loc_t *newloc) +               loc_t *newloc, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -732,6 +804,9 @@ fop_link_stub (call_frame_t *frame,          loc_copy (&stub->args.link.oldloc, oldloc);          loc_copy (&stub->args.link.newloc, newloc); +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -745,7 +820,7 @@ fop_link_cbk_stub (call_frame_t *frame,                     inode_t *inode,                     struct iatt *buf,                     struct iatt *preparent, -                   struct iatt *postparent) +                   struct iatt *postparent, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -765,6 +840,9 @@ fop_link_cbk_stub (call_frame_t *frame,                  stub->args.link_cbk.preparent = *preparent;          if (postparent)                  stub->args.link_cbk.postparent = *postparent; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -773,7 +851,7 @@ out:  call_stub_t *  fop_create_stub (call_frame_t *frame, fop_create_t fn,                   loc_t *loc, int32_t flags, mode_t mode, -                 fd_t *fd, dict_t *params) +                 mode_t umask, fd_t *fd, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -787,10 +865,12 @@ fop_create_stub (call_frame_t *frame, fop_create_t fn,          loc_copy (&stub->args.create.loc, loc);          stub->args.create.flags = flags;          stub->args.create.mode = mode; +        stub->args.create.umask = umask;          if (fd)                  stub->args.create.fd = fd_ref (fd); -        if (params) -                stub->args.create.params = dict_ref (params); +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -805,7 +885,7 @@ fop_create_cbk_stub (call_frame_t *frame,                       inode_t *inode,                       struct iatt *buf,                       struct iatt *preparent, -                     struct iatt *postparent) +                     struct iatt *postparent, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -827,6 +907,9 @@ fop_create_cbk_stub (call_frame_t *frame,                  stub->args.create_cbk.preparent = *preparent;          if (postparent)                  stub->args.create_cbk.postparent = *postparent; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -837,7 +920,7 @@ fop_open_stub (call_frame_t *frame,                 fop_open_t fn,                 loc_t *loc,                 int32_t flags, fd_t *fd, -               int32_t wbflags) +               dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -850,9 +933,11 @@ fop_open_stub (call_frame_t *frame,          stub->args.open.fn = fn;          loc_copy (&stub->args.open.loc, loc);          stub->args.open.flags = flags; -        stub->args.open.wbflags = wbflags;          if (fd)                  stub->args.open.fd = fd_ref (fd); +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -863,8 +948,7 @@ fop_open_cbk_stub (call_frame_t *frame,                     fop_open_cbk_t fn,                     int32_t op_ret,                     int32_t op_errno, -                   fd_t *fd) - +                   fd_t *fd, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -878,6 +962,9 @@ fop_open_cbk_stub (call_frame_t *frame,          stub->args.open_cbk.op_errno = op_errno;          if (fd)                  stub->args.open_cbk.fd = fd_ref (fd); +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -888,7 +975,7 @@ fop_readv_stub (call_frame_t *frame,                  fop_readv_t fn,                  fd_t *fd,                  size_t size, -                off_t off, uint32_t flags) +                off_t off, uint32_t flags, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -904,6 +991,9 @@ fop_readv_stub (call_frame_t *frame,          stub->args.readv.off   = off;          stub->args.readv.flags = flags; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -917,8 +1007,7 @@ fop_readv_cbk_stub (call_frame_t *frame,                      struct iovec *vector,                      int32_t count,                      struct iatt *stbuf, -                    struct iobref *iobref) - +                    struct iobref *iobref, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -936,6 +1025,9 @@ fop_readv_cbk_stub (call_frame_t *frame,                  stub->args.readv_cbk.stbuf = *stbuf;                  stub->args.readv_cbk.iobref = iobref_ref (iobref);          } +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -948,7 +1040,7 @@ fop_writev_stub (call_frame_t *frame,                   struct iovec *vector,                   int32_t count,                   off_t off, uint32_t flags, -                 struct iobref *iobref) +                 struct iobref *iobref, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -966,6 +1058,8 @@ fop_writev_stub (call_frame_t *frame,          stub->args.writev.off    = off;          stub->args.writev.flags  = flags;          stub->args.writev.iobref = iobref_ref (iobref); +        if (xdata) +                stub->xdata = dict_ref (xdata);  out:          return stub; @@ -978,8 +1072,7 @@ fop_writev_cbk_stub (call_frame_t *frame,                       int32_t op_ret,                       int32_t op_errno,                       struct iatt *prebuf, -                     struct iatt *postbuf) - +                     struct iatt *postbuf, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -995,6 +1088,9 @@ fop_writev_cbk_stub (call_frame_t *frame,                  stub->args.writev_cbk.postbuf = *postbuf;          if (prebuf)                  stub->args.writev_cbk.prebuf = *prebuf; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -1004,7 +1100,7 @@ out:  call_stub_t *  fop_flush_stub (call_frame_t *frame,                  fop_flush_t fn, -                fd_t *fd) +                fd_t *fd, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -1016,6 +1112,9 @@ fop_flush_stub (call_frame_t *frame,          stub->args.flush.fn = fn;          if (fd)                  stub->args.flush.fd = fd_ref (fd); +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -1025,8 +1124,7 @@ call_stub_t *  fop_flush_cbk_stub (call_frame_t *frame,                      fop_flush_cbk_t fn,                      int32_t op_ret, -                    int32_t op_errno) - +                    int32_t op_errno, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -1038,6 +1136,9 @@ fop_flush_cbk_stub (call_frame_t *frame,          stub->args.flush_cbk.fn = fn;          stub->args.flush_cbk.op_ret = op_ret;          stub->args.flush_cbk.op_errno = op_errno; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -1049,7 +1150,7 @@ call_stub_t *  fop_fsync_stub (call_frame_t *frame,                  fop_fsync_t fn,                  fd_t *fd, -                int32_t datasync) +                int32_t datasync, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -1062,6 +1163,9 @@ fop_fsync_stub (call_frame_t *frame,          if (fd)                  stub->args.fsync.fd = fd_ref (fd);          stub->args.fsync.datasync = datasync; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -1073,7 +1177,7 @@ fop_fsync_cbk_stub (call_frame_t *frame,                      int32_t op_ret,                      int32_t op_errno,                      struct iatt *prebuf, -                    struct iatt *postbuf) +                    struct iatt *postbuf, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -1089,6 +1193,9 @@ fop_fsync_cbk_stub (call_frame_t *frame,                  stub->args.fsync_cbk.prebuf = *prebuf;          if (postbuf)                  stub->args.fsync_cbk.postbuf = *postbuf; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -1097,7 +1204,7 @@ out:  call_stub_t *  fop_opendir_stub (call_frame_t *frame,                    fop_opendir_t fn, -                  loc_t *loc, fd_t *fd) +                  loc_t *loc, fd_t *fd, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -1111,6 +1218,9 @@ fop_opendir_stub (call_frame_t *frame,          loc_copy (&stub->args.opendir.loc, loc);          if (fd)                  stub->args.opendir.fd = fd_ref (fd); +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -1121,8 +1231,7 @@ fop_opendir_cbk_stub (call_frame_t *frame,                        fop_opendir_cbk_t fn,                        int32_t op_ret,                        int32_t op_errno, -                      fd_t *fd) - +                      fd_t *fd, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -1137,6 +1246,9 @@ fop_opendir_cbk_stub (call_frame_t *frame,          if (fd)                  stub->args.opendir_cbk.fd = fd_ref (fd); +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -1146,7 +1258,7 @@ call_stub_t *  fop_fsyncdir_stub (call_frame_t *frame,                     fop_fsyncdir_t fn,                     fd_t *fd, -                   int32_t datasync) +                   int32_t datasync, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -1159,6 +1271,9 @@ fop_fsyncdir_stub (call_frame_t *frame,          if (fd)                  stub->args.fsyncdir.fd = fd_ref (fd);          stub->args.fsyncdir.datasync = datasync; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -1168,8 +1283,7 @@ call_stub_t *  fop_fsyncdir_cbk_stub (call_frame_t *frame,                         fop_fsyncdir_cbk_t fn,                         int32_t op_ret, -                       int32_t op_errno) - +                       int32_t op_errno, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -1181,6 +1295,9 @@ fop_fsyncdir_cbk_stub (call_frame_t *frame,          stub->args.fsyncdir_cbk.fn = fn;          stub->args.fsyncdir_cbk.op_ret = op_ret;          stub->args.fsyncdir_cbk.op_errno = op_errno; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -1189,7 +1306,7 @@ out:  call_stub_t *  fop_statfs_stub (call_frame_t *frame,                   fop_statfs_t fn, -                 loc_t *loc) +                 loc_t *loc, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -1201,6 +1318,9 @@ fop_statfs_stub (call_frame_t *frame,          stub->args.statfs.fn = fn;          loc_copy (&stub->args.statfs.loc, loc); +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -1211,8 +1331,7 @@ fop_statfs_cbk_stub (call_frame_t *frame,                       fop_statfs_cbk_t fn,                       int32_t op_ret,                       int32_t op_errno, -                     struct statvfs *buf) - +                     struct statvfs *buf, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -1226,6 +1345,9 @@ fop_statfs_cbk_stub (call_frame_t *frame,          stub->args.statfs_cbk.op_errno = op_errno;          if (op_ret == 0)                  stub->args.statfs_cbk.buf = *buf; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -1236,7 +1358,7 @@ fop_setxattr_stub (call_frame_t *frame,                     fop_setxattr_t fn,                     loc_t *loc,                     dict_t *dict, -                   int32_t flags) +                   int32_t flags, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -1252,6 +1374,9 @@ fop_setxattr_stub (call_frame_t *frame,          if (dict)                  stub->args.setxattr.dict = dict_ref (dict);          stub->args.setxattr.flags = flags; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -1261,7 +1386,7 @@ call_stub_t *  fop_setxattr_cbk_stub (call_frame_t *frame,                         fop_setxattr_cbk_t fn,                         int32_t op_ret, -                       int32_t op_errno) +                       int32_t op_errno, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -1273,6 +1398,9 @@ fop_setxattr_cbk_stub (call_frame_t *frame,          stub->args.setxattr_cbk.fn = fn;          stub->args.setxattr_cbk.op_ret = op_ret;          stub->args.setxattr_cbk.op_errno = op_errno; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -1281,7 +1409,7 @@ call_stub_t *  fop_getxattr_stub (call_frame_t *frame,                     fop_getxattr_t fn,                     loc_t *loc, -                   const char *name) +                   const char *name, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -1296,6 +1424,9 @@ fop_getxattr_stub (call_frame_t *frame,          if (name)                  stub->args.getxattr.name = gf_strdup (name); +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -1306,7 +1437,7 @@ fop_getxattr_cbk_stub (call_frame_t *frame,                         fop_getxattr_cbk_t fn,                         int32_t op_ret,                         int32_t op_errno, -                       dict_t *dict) +                       dict_t *dict, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -1321,6 +1452,9 @@ fop_getxattr_cbk_stub (call_frame_t *frame,          /* TODO */          if (dict)                  stub->args.getxattr_cbk.dict = dict_ref (dict); +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -1331,7 +1465,7 @@ fop_fsetxattr_stub (call_frame_t *frame,                      fop_fsetxattr_t fn,                      fd_t *fd,                      dict_t *dict, -                    int32_t flags) +                    int32_t flags, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -1348,6 +1482,9 @@ fop_fsetxattr_stub (call_frame_t *frame,          if (dict)                  stub->args.fsetxattr.dict = dict_ref (dict);          stub->args.fsetxattr.flags = flags; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -1357,7 +1494,7 @@ call_stub_t *  fop_fsetxattr_cbk_stub (call_frame_t *frame,                          fop_fsetxattr_cbk_t fn,                          int32_t op_ret, -                        int32_t op_errno) +                        int32_t op_errno, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -1369,6 +1506,9 @@ fop_fsetxattr_cbk_stub (call_frame_t *frame,          stub->args.fsetxattr_cbk.fn = fn;          stub->args.fsetxattr_cbk.op_ret = op_ret;          stub->args.fsetxattr_cbk.op_errno = op_errno; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -1378,7 +1518,7 @@ call_stub_t *  fop_fgetxattr_stub (call_frame_t *frame,                      fop_fgetxattr_t fn,                      fd_t *fd, -                    const char *name) +                    const char *name, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -1393,6 +1533,9 @@ fop_fgetxattr_stub (call_frame_t *frame,          if (name)                  stub->args.fgetxattr.name = gf_strdup (name); +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -1403,7 +1546,7 @@ fop_fgetxattr_cbk_stub (call_frame_t *frame,                          fop_fgetxattr_cbk_t fn,                          int32_t op_ret,                          int32_t op_errno, -                        dict_t *dict) +                        dict_t *dict, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -1419,6 +1562,9 @@ fop_fgetxattr_cbk_stub (call_frame_t *frame,          /* TODO */          if (dict)                  stub->args.fgetxattr_cbk.dict = dict_ref (dict); +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -1428,7 +1574,7 @@ call_stub_t *  fop_removexattr_stub (call_frame_t *frame,                        fop_removexattr_t fn,                        loc_t *loc, -                      const char *name) +                      const char *name, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -1442,6 +1588,9 @@ fop_removexattr_stub (call_frame_t *frame,          stub->args.removexattr.fn = fn;          loc_copy (&stub->args.removexattr.loc, loc);          stub->args.removexattr.name = gf_strdup (name); +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -1451,7 +1600,7 @@ call_stub_t *  fop_removexattr_cbk_stub (call_frame_t *frame,                            fop_removexattr_cbk_t fn,                            int32_t op_ret, -                          int32_t op_errno) +                          int32_t op_errno, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -1463,6 +1612,9 @@ fop_removexattr_cbk_stub (call_frame_t *frame,          stub->args.removexattr_cbk.fn = fn;          stub->args.removexattr_cbk.op_ret = op_ret;          stub->args.removexattr_cbk.op_errno = op_errno; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -1471,7 +1623,7 @@ call_stub_t *  fop_fremovexattr_stub (call_frame_t *frame,                         fop_fremovexattr_t fn,                         fd_t *fd, -                       const char *name) +                       const char *name, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -1485,6 +1637,9 @@ fop_fremovexattr_stub (call_frame_t *frame,          stub->args.fremovexattr.fn = fn;          stub->args.fremovexattr.fd = fd_ref (fd);          stub->args.fremovexattr.name = gf_strdup (name); +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -1494,7 +1649,7 @@ call_stub_t *  fop_fremovexattr_cbk_stub (call_frame_t *frame,                             fop_fremovexattr_cbk_t fn,                             int32_t op_ret, -                           int32_t op_errno) +                           int32_t op_errno, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -1506,6 +1661,9 @@ fop_fremovexattr_cbk_stub (call_frame_t *frame,          stub->args.fremovexattr_cbk.fn = fn;          stub->args.fremovexattr_cbk.op_ret = op_ret;          stub->args.fremovexattr_cbk.op_errno = op_errno; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -1515,7 +1673,7 @@ fop_lk_stub (call_frame_t *frame,               fop_lk_t fn,               fd_t *fd,               int32_t cmd, -             struct gf_flock *lock) +             struct gf_flock *lock, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -1530,6 +1688,9 @@ fop_lk_stub (call_frame_t *frame,                  stub->args.lk.fd = fd_ref (fd);          stub->args.lk.cmd = cmd;          stub->args.lk.lock = *lock; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -1540,8 +1701,7 @@ fop_lk_cbk_stub (call_frame_t *frame,                   fop_lk_cbk_t fn,                   int32_t op_ret,                   int32_t op_errno, -                 struct gf_flock *lock) - +                 struct gf_flock *lock, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -1555,13 +1715,17 @@ fop_lk_cbk_stub (call_frame_t *frame,          stub->args.lk_cbk.op_errno = op_errno;          if (op_ret == 0)                  stub->args.lk_cbk.lock = *lock; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  }  call_stub_t *  fop_inodelk_stub (call_frame_t *frame, fop_inodelk_t fn, -                  const char *volume, loc_t *loc, int32_t cmd, struct gf_flock *lock) +                  const char *volume, loc_t *loc, int32_t cmd, +                  struct gf_flock *lock, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -1579,13 +1743,16 @@ fop_inodelk_stub (call_frame_t *frame, fop_inodelk_t fn,          loc_copy (&stub->args.inodelk.loc, loc);          stub->args.inodelk.cmd  = cmd;          stub->args.inodelk.lock = *lock; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  }  call_stub_t *  fop_inodelk_cbk_stub (call_frame_t *frame, fop_inodelk_cbk_t fn, -                      int32_t op_ret, int32_t op_errno) +                      int32_t op_ret, int32_t op_errno, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -1598,6 +1765,9 @@ fop_inodelk_cbk_stub (call_frame_t *frame, fop_inodelk_cbk_t fn,          stub->args.inodelk_cbk.op_ret   = op_ret;          stub->args.inodelk_cbk.op_errno = op_errno; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -1605,7 +1775,8 @@ out:  call_stub_t *  fop_finodelk_stub (call_frame_t *frame, fop_finodelk_t fn, -                   const char *volume, fd_t *fd, int32_t cmd, struct gf_flock *lock) +                   const char *volume, fd_t *fd, int32_t cmd, +                   struct gf_flock *lock, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -1626,6 +1797,9 @@ fop_finodelk_stub (call_frame_t *frame, fop_finodelk_t fn,          stub->args.finodelk.cmd  = cmd;          stub->args.finodelk.lock = *lock; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -1633,7 +1807,7 @@ out:  call_stub_t *  fop_finodelk_cbk_stub (call_frame_t *frame, fop_inodelk_cbk_t fn, -                       int32_t op_ret, int32_t op_errno) +                       int32_t op_ret, int32_t op_errno, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -1646,6 +1820,9 @@ fop_finodelk_cbk_stub (call_frame_t *frame, fop_inodelk_cbk_t fn,          stub->args.finodelk_cbk.op_ret   = op_ret;          stub->args.finodelk_cbk.op_errno = op_errno; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -1654,7 +1831,7 @@ out:  call_stub_t *  fop_entrylk_stub (call_frame_t *frame, fop_entrylk_t fn,                    const char *volume, loc_t *loc, const char *name, -                  entrylk_cmd cmd, entrylk_type type) +                  entrylk_cmd cmd, entrylk_type type, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -1675,13 +1852,16 @@ fop_entrylk_stub (call_frame_t *frame, fop_entrylk_t fn,          if (name)                  stub->args.entrylk.name = gf_strdup (name); +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  }  call_stub_t *  fop_entrylk_cbk_stub (call_frame_t *frame, fop_entrylk_cbk_t fn, -                      int32_t op_ret, int32_t op_errno) +                      int32_t op_ret, int32_t op_errno, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -1694,6 +1874,9 @@ fop_entrylk_cbk_stub (call_frame_t *frame, fop_entrylk_cbk_t fn,          stub->args.entrylk_cbk.op_ret   = op_ret;          stub->args.entrylk_cbk.op_errno = op_errno; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -1702,7 +1885,7 @@ out:  call_stub_t *  fop_fentrylk_stub (call_frame_t *frame, fop_fentrylk_t fn,                     const char *volume, fd_t *fd, const char *name, -                   entrylk_cmd cmd, entrylk_type type) +                   entrylk_cmd cmd, entrylk_type type, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -1723,13 +1906,16 @@ fop_fentrylk_stub (call_frame_t *frame, fop_fentrylk_t fn,          if (name)                  stub->args.fentrylk.name = gf_strdup (name); +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  }  call_stub_t *  fop_fentrylk_cbk_stub (call_frame_t *frame, fop_fentrylk_cbk_t fn, -                       int32_t op_ret, int32_t op_errno) +                       int32_t op_ret, int32_t op_errno, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -1742,6 +1928,9 @@ fop_fentrylk_cbk_stub (call_frame_t *frame, fop_fentrylk_cbk_t fn,          stub->args.fentrylk_cbk.op_ret   = op_ret;          stub->args.fentrylk_cbk.op_errno = op_errno; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -1752,7 +1941,7 @@ fop_readdirp_cbk_stub (call_frame_t *frame,                         fop_readdirp_cbk_t fn,                         int32_t op_ret,                         int32_t op_errno, -                       gf_dirent_t *entries) +                       gf_dirent_t *entries, dict_t *xdata)  {          call_stub_t *stub = NULL;          gf_dirent_t *stub_entry = NULL, *entry = NULL; @@ -1784,6 +1973,9 @@ fop_readdirp_cbk_stub (call_frame_t *frame,                                         &stub->args.readdirp_cbk.entries.list);                  }          } +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -1794,7 +1986,7 @@ fop_readdir_cbk_stub (call_frame_t *frame,                        fop_readdir_cbk_t fn,                        int32_t op_ret,                        int32_t op_errno, -                      gf_dirent_t *entries) +                      gf_dirent_t *entries, dict_t *xdata)  {          call_stub_t *stub = NULL;          gf_dirent_t *stub_entry = NULL, *entry = NULL; @@ -1826,6 +2018,9 @@ fop_readdir_cbk_stub (call_frame_t *frame,                                         &stub->args.readdir_cbk.entries.list);                  }          } +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -1835,7 +2030,7 @@ fop_readdir_stub (call_frame_t *frame,                    fop_readdir_t fn,                    fd_t *fd,                    size_t size, -                  off_t off) +                  off_t off, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -1847,6 +2042,9 @@ fop_readdir_stub (call_frame_t *frame,          stub->args.readdir.size = size;          stub->args.readdir.off = off; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -1857,7 +2055,7 @@ fop_readdirp_stub (call_frame_t *frame,                     fd_t *fd,                     size_t size,                     off_t off, -                   dict_t *dict) +                   dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -1868,9 +2066,8 @@ fop_readdirp_stub (call_frame_t *frame,          stub->args.readdirp.fd = fd_ref (fd);          stub->args.readdirp.size = size;          stub->args.readdirp.off = off; -        if (dict != NULL) { -                stub->args.readdirp.dict = dict_ref (dict); -        } +        if (xdata) +                stub->xdata = dict_ref (xdata);  out:          return stub; @@ -1880,7 +2077,7 @@ call_stub_t *  fop_rchecksum_stub (call_frame_t *frame,                      fop_rchecksum_t fn,                      fd_t *fd, off_t offset, -                    int32_t len) +                    int32_t len, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -1894,6 +2091,9 @@ fop_rchecksum_stub (call_frame_t *frame,          stub->args.rchecksum.fd = fd_ref (fd);          stub->args.rchecksum.offset = offset;          stub->args.rchecksum.len    = len; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -1905,7 +2105,7 @@ fop_rchecksum_cbk_stub (call_frame_t *frame,                          int32_t op_ret,                          int32_t op_errno,                          uint32_t weak_checksum, -                        uint8_t *strong_checksum) +                        uint8_t *strong_checksum, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -1926,6 +2126,9 @@ fop_rchecksum_cbk_stub (call_frame_t *frame,                  stub->args.rchecksum_cbk.strong_checksum =                          memdup (strong_checksum, MD5_DIGEST_LEN);          } +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -1935,7 +2138,7 @@ call_stub_t *  fop_xattrop_cbk_stub (call_frame_t *frame,                        fop_xattrop_cbk_t fn,                        int32_t op_ret, -                      int32_t op_errno) +                      int32_t op_errno, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -1948,6 +2151,9 @@ fop_xattrop_cbk_stub (call_frame_t *frame,          stub->args.xattrop_cbk.op_ret   = op_ret;          stub->args.xattrop_cbk.op_errno = op_errno; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -1958,7 +2164,7 @@ fop_fxattrop_cbk_stub (call_frame_t *frame,                         fop_fxattrop_cbk_t fn,                         int32_t op_ret,                         int32_t op_errno, -                       dict_t *xattr) +                       dict_t *xattr, dict_t *xdata)  {          call_stub_t *stub = NULL;          GF_VALIDATE_OR_GOTO ("call-stub", frame, out); @@ -1972,6 +2178,9 @@ fop_fxattrop_cbk_stub (call_frame_t *frame,          if (xattr)                  stub->args.fxattrop_cbk.xattr = dict_ref (xattr); +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -1982,7 +2191,7 @@ fop_xattrop_stub (call_frame_t *frame,                    fop_xattrop_t fn,                    loc_t *loc,                    gf_xattrop_flags_t optype, -                  dict_t *xattr) +                  dict_t *xattr, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -1999,6 +2208,9 @@ fop_xattrop_stub (call_frame_t *frame,          stub->args.xattrop.optype = optype;          stub->args.xattrop.xattr = dict_ref (xattr); +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -2008,7 +2220,7 @@ fop_fxattrop_stub (call_frame_t *frame,                     fop_fxattrop_t fn,                     fd_t *fd,                     gf_xattrop_flags_t optype, -                   dict_t *xattr) +                   dict_t *xattr, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -2025,6 +2237,9 @@ fop_fxattrop_stub (call_frame_t *frame,          stub->args.fxattrop.optype = optype;          stub->args.fxattrop.xattr = dict_ref (xattr); +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -2036,7 +2251,7 @@ fop_setattr_cbk_stub (call_frame_t *frame,                        int32_t op_ret,                        int32_t op_errno,                        struct iatt *statpre, -                      struct iatt *statpost) +                      struct iatt *statpost, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -2055,6 +2270,9 @@ fop_setattr_cbk_stub (call_frame_t *frame,          if (statpost)                  stub->args.setattr_cbk.statpost = *statpost; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -2065,7 +2283,7 @@ fop_fsetattr_cbk_stub (call_frame_t *frame,                         int32_t op_ret,                         int32_t op_errno,                         struct iatt *statpre, -                       struct iatt *statpost) +                       struct iatt *statpost, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -2083,6 +2301,9 @@ fop_fsetattr_cbk_stub (call_frame_t *frame,                  stub->args.setattr_cbk.statpre = *statpre;          if (statpost)                  stub->args.fsetattr_cbk.statpost = *statpost; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -2092,7 +2313,7 @@ fop_setattr_stub (call_frame_t *frame,                    fop_setattr_t fn,                    loc_t *loc,                    struct iatt *stbuf, -                  int32_t valid) +                  int32_t valid, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -2111,6 +2332,9 @@ fop_setattr_stub (call_frame_t *frame,          stub->args.setattr.valid = valid; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -2120,7 +2344,7 @@ fop_fsetattr_stub (call_frame_t *frame,                     fop_fsetattr_t fn,                     fd_t *fd,                     struct iatt *stbuf, -                   int32_t valid) +                   int32_t valid, dict_t *xdata)  {          call_stub_t *stub = NULL; @@ -2140,6 +2364,9 @@ fop_fsetattr_stub (call_frame_t *frame,          stub->args.fsetattr.valid = valid; +        if (xdata) +                stub->xdata = dict_ref (xdata); +  out:          return stub;  } @@ -2156,7 +2383,7 @@ call_resume_wind (call_stub_t *stub)                                      stub->frame->this,                                      &stub->args.open.loc,                                      stub->args.open.flags, stub->args.open.fd, -                                    stub->args.open.wbflags); +                                    stub->xdata);                  break;          }          case GF_FOP_CREATE: @@ -2166,15 +2393,16 @@ call_resume_wind (call_stub_t *stub)                                        &stub->args.create.loc,                                        stub->args.create.flags,                                        stub->args.create.mode, +                                      stub->args.create.umask,                                        stub->args.create.fd, -                                      stub->args.create.params); +                                      stub->xdata);                  break;          }          case GF_FOP_STAT:          {                  stub->args.stat.fn (stub->frame,                                      stub->frame->this, -                                    &stub->args.stat.loc); +                                    &stub->args.stat.loc, stub->xdata);                  break;          }          case GF_FOP_READLINK: @@ -2182,7 +2410,7 @@ call_resume_wind (call_stub_t *stub)                  stub->args.readlink.fn (stub->frame,                                          stub->frame->this,                                          &stub->args.readlink.loc, -                                        stub->args.readlink.size); +                                        stub->args.readlink.size, stub->xdata);                  break;          } @@ -2192,7 +2420,7 @@ call_resume_wind (call_stub_t *stub)                                       &stub->args.mknod.loc,                                       stub->args.mknod.mode,                                       stub->args.mknod.rdev, -                                     stub->args.mknod.params); +                                     stub->args.mknod.umask, stub->xdata);          }          break; @@ -2201,7 +2429,7 @@ call_resume_wind (call_stub_t *stub)                  stub->args.mkdir.fn (stub->frame, stub->frame->this,                                       &stub->args.mkdir.loc,                                       stub->args.mkdir.mode, -                                     stub->args.mkdir.params); +                                     stub->args.mkdir.umask, stub->xdata);          }          break; @@ -2209,7 +2437,8 @@ call_resume_wind (call_stub_t *stub)          {                  stub->args.unlink.fn (stub->frame,                                        stub->frame->this, -                                      &stub->args.unlink.loc); +                                      &stub->args.unlink.loc, +                                      stub->args.unlink.xflag, stub->xdata);          }          break; @@ -2217,7 +2446,7 @@ call_resume_wind (call_stub_t *stub)          {                  stub->args.rmdir.fn (stub->frame, stub->frame->this,                                       &stub->args.rmdir.loc, -                                     stub->args.rmdir.flags); +                                     stub->args.rmdir.flags, stub->xdata);          }          break; @@ -2227,7 +2456,7 @@ call_resume_wind (call_stub_t *stub)                                         stub->frame->this,                                         stub->args.symlink.linkname,                                         &stub->args.symlink.loc, -                                       stub->args.symlink.params); +                                       stub->args.symlink.umask, stub->xdata);          }          break; @@ -2236,7 +2465,7 @@ call_resume_wind (call_stub_t *stub)                  stub->args.rename.fn (stub->frame,                                        stub->frame->this,                                        &stub->args.rename.old, -                                      &stub->args.rename.new); +                                      &stub->args.rename.new, stub->xdata);          }          break; @@ -2245,7 +2474,7 @@ call_resume_wind (call_stub_t *stub)                  stub->args.link.fn (stub->frame,                                      stub->frame->this,                                      &stub->args.link.oldloc, -                                    &stub->args.link.newloc); +                                    &stub->args.link.newloc, stub->xdata);          }          break; @@ -2254,7 +2483,7 @@ call_resume_wind (call_stub_t *stub)                  stub->args.truncate.fn (stub->frame,                                          stub->frame->this,                                          &stub->args.truncate.loc, -                                        stub->args.truncate.off); +                                        stub->args.truncate.off, stub->xdata);                  break;          } @@ -2265,7 +2494,7 @@ call_resume_wind (call_stub_t *stub)                                       stub->args.readv.fd,                                       stub->args.readv.size,                                       stub->args.readv.off, -                                     stub->args.readv.flags); +                                     stub->args.readv.flags, stub->xdata);                  break;          } @@ -2278,7 +2507,7 @@ call_resume_wind (call_stub_t *stub)                                        stub->args.writev.count,                                        stub->args.writev.off,                                        stub->args.writev.flags, -                                      stub->args.writev.iobref); +                                      stub->args.writev.iobref, stub->xdata);                  break;          } @@ -2286,14 +2515,14 @@ call_resume_wind (call_stub_t *stub)          {                  stub->args.statfs.fn (stub->frame,                                        stub->frame->this, -                                      &stub->args.statfs.loc); +                                      &stub->args.statfs.loc, stub->xdata);                  break;          }          case GF_FOP_FLUSH:          {                  stub->args.flush.fn (stub->frame,                                       stub->frame->this, -                                     stub->args.flush.fd); +                                     stub->args.flush.fd, stub->xdata);                  break;          } @@ -2302,7 +2531,7 @@ call_resume_wind (call_stub_t *stub)                  stub->args.fsync.fn (stub->frame,                                       stub->frame->this,                                       stub->args.fsync.fd, -                                     stub->args.fsync.datasync); +                                     stub->args.fsync.datasync, stub->xdata);                  break;          } @@ -2312,7 +2541,7 @@ call_resume_wind (call_stub_t *stub)                                          stub->frame->this,                                          &stub->args.setxattr.loc,                                          stub->args.setxattr.dict, -                                        stub->args.setxattr.flags); +                                        stub->args.setxattr.flags, stub->xdata);                  break;          } @@ -2321,7 +2550,7 @@ call_resume_wind (call_stub_t *stub)                  stub->args.getxattr.fn (stub->frame,                                          stub->frame->this,                                          &stub->args.getxattr.loc, -                                        stub->args.getxattr.name); +                                        stub->args.getxattr.name, stub->xdata);                  break;          } @@ -2331,7 +2560,7 @@ call_resume_wind (call_stub_t *stub)                                           stub->frame->this,                                           stub->args.fsetxattr.fd,                                           stub->args.fsetxattr.dict, -                                         stub->args.fsetxattr.flags); +                                         stub->args.fsetxattr.flags, stub->xdata);                  break;          } @@ -2340,7 +2569,7 @@ call_resume_wind (call_stub_t *stub)                  stub->args.fgetxattr.fn (stub->frame,                                           stub->frame->this,                                           stub->args.fgetxattr.fd, -                                         stub->args.fgetxattr.name); +                                         stub->args.fgetxattr.name, stub->xdata);                  break;          } @@ -2349,7 +2578,7 @@ call_resume_wind (call_stub_t *stub)                  stub->args.removexattr.fn (stub->frame,                                             stub->frame->this,                                             &stub->args.removexattr.loc, -                                           stub->args.removexattr.name); +                                           stub->args.removexattr.name, stub->xdata);                  break;          } @@ -2358,7 +2587,7 @@ call_resume_wind (call_stub_t *stub)                  stub->args.fremovexattr.fn (stub->frame,                                              stub->frame->this,                                              stub->args.fremovexattr.fd, -                                            stub->args.fremovexattr.name); +                                            stub->args.fremovexattr.name, stub->xdata);                  break;          } @@ -2367,7 +2596,7 @@ call_resume_wind (call_stub_t *stub)                  stub->args.opendir.fn (stub->frame,                                         stub->frame->this,                                         &stub->args.opendir.loc, -                                       stub->args.opendir.fd); +                                       stub->args.opendir.fd, stub->xdata);                  break;          } @@ -2376,7 +2605,7 @@ call_resume_wind (call_stub_t *stub)                  stub->args.fsyncdir.fn (stub->frame,                                          stub->frame->this,                                          stub->args.fsyncdir.fd, -                                        stub->args.fsyncdir.datasync); +                                        stub->args.fsyncdir.datasync, stub->xdata);                  break;          } @@ -2385,7 +2614,7 @@ call_resume_wind (call_stub_t *stub)                  stub->args.access.fn (stub->frame,                                        stub->frame->this,                                        &stub->args.access.loc, -                                      stub->args.access.mask); +                                      stub->args.access.mask, stub->xdata);                  break;          } @@ -2394,7 +2623,7 @@ call_resume_wind (call_stub_t *stub)                  stub->args.ftruncate.fn (stub->frame,                                           stub->frame->this,                                           stub->args.ftruncate.fd, -                                         stub->args.ftruncate.off); +                                         stub->args.ftruncate.off, stub->xdata);                  break;          } @@ -2402,7 +2631,7 @@ call_resume_wind (call_stub_t *stub)          {                  stub->args.fstat.fn (stub->frame,                                       stub->frame->this, -                                     stub->args.fstat.fd); +                                     stub->args.fstat.fd, stub->xdata);                  break;          } @@ -2412,7 +2641,7 @@ call_resume_wind (call_stub_t *stub)                                    stub->frame->this,                                    stub->args.lk.fd,                                    stub->args.lk.cmd, -                                  &stub->args.lk.lock); +                                  &stub->args.lk.lock, stub->xdata);                  break;          } @@ -2423,7 +2652,7 @@ call_resume_wind (call_stub_t *stub)                                         stub->args.inodelk.volume,                                         &stub->args.inodelk.loc,                                         stub->args.inodelk.cmd, -                                       &stub->args.inodelk.lock); +                                       &stub->args.inodelk.lock, stub->xdata);                  break;          } @@ -2434,7 +2663,7 @@ call_resume_wind (call_stub_t *stub)                                          stub->args.finodelk.volume,                                          stub->args.finodelk.fd,                                          stub->args.finodelk.cmd, -                                        &stub->args.finodelk.lock); +                                        &stub->args.finodelk.lock, stub->xdata);                  break;          } @@ -2446,7 +2675,7 @@ call_resume_wind (call_stub_t *stub)                                         &stub->args.entrylk.loc,                                         stub->args.entrylk.name,                                         stub->args.entrylk.cmd, -                                       stub->args.entrylk.type); +                                       stub->args.entrylk.type, stub->xdata);                  break;          } @@ -2458,7 +2687,7 @@ call_resume_wind (call_stub_t *stub)                                          stub->args.fentrylk.fd,                                          stub->args.fentrylk.name,                                          stub->args.fentrylk.cmd, -                                        stub->args.fentrylk.type); +                                        stub->args.fentrylk.type, stub->xdata);                  break;          } @@ -2469,7 +2698,7 @@ call_resume_wind (call_stub_t *stub)                  stub->args.lookup.fn (stub->frame,                                        stub->frame->this,                                        &stub->args.lookup.loc, -                                      stub->args.lookup.xattr_req); +                                      stub->xdata);                  break;          } @@ -2479,7 +2708,7 @@ call_resume_wind (call_stub_t *stub)                                           stub->frame->this,                                           stub->args.rchecksum.fd,                                           stub->args.rchecksum.offset, -                                         stub->args.rchecksum.len); +                                         stub->args.rchecksum.len, stub->xdata);                  break;          } @@ -2489,7 +2718,7 @@ call_resume_wind (call_stub_t *stub)                                         stub->frame->this,                                         stub->args.readdir.fd,                                         stub->args.readdir.size, -                                       stub->args.readdir.off); +                                       stub->args.readdir.off, stub->xdata);                  break;          } @@ -2500,7 +2729,7 @@ call_resume_wind (call_stub_t *stub)                                          stub->args.readdirp.fd,                                          stub->args.readdirp.size,                                          stub->args.readdirp.off, -                                        stub->args.readdirp.dict); +                                        stub->xdata);                  break;          } @@ -2510,7 +2739,7 @@ call_resume_wind (call_stub_t *stub)                                         stub->frame->this,                                         &stub->args.xattrop.loc,                                         stub->args.xattrop.optype, -                                       stub->args.xattrop.xattr); +                                       stub->args.xattrop.xattr, stub->xdata);                  break;          } @@ -2520,7 +2749,7 @@ call_resume_wind (call_stub_t *stub)                                          stub->frame->this,                                          stub->args.fxattrop.fd,                                          stub->args.fxattrop.optype, -                                        stub->args.fxattrop.xattr); +                                        stub->args.fxattrop.xattr, stub->xdata);                  break;          } @@ -2530,7 +2759,7 @@ call_resume_wind (call_stub_t *stub)                                         stub->frame->this,                                         &stub->args.setattr.loc,                                         &stub->args.setattr.stbuf, -                                       stub->args.setattr.valid); +                                       stub->args.setattr.valid, stub->xdata);                  break;          }          case GF_FOP_FSETATTR: @@ -2539,7 +2768,7 @@ call_resume_wind (call_stub_t *stub)                                          stub->frame->this,                                          stub->args.fsetattr.fd,                                          &stub->args.fsetattr.stbuf, -                                        stub->args.fsetattr.valid); +                                        stub->args.fsetattr.valid, stub->xdata);                  break;          }          default: @@ -2569,14 +2798,14 @@ call_resume_unwind (call_stub_t *stub)                          STACK_UNWIND (stub->frame,                                        stub->args.open_cbk.op_ret,                                        stub->args.open_cbk.op_errno, -                                      stub->args.open_cbk.fd); +                                      stub->args.open_cbk.fd, stub->xdata);                  else                          stub->args.open_cbk.fn (stub->frame,                                                  stub->frame->cookie,                                                  stub->frame->this,                                                  stub->args.open_cbk.op_ret,                                                  stub->args.open_cbk.op_errno, -                                                stub->args.open_cbk.fd); +                                                stub->args.open_cbk.fd, stub->xdata);                  break;          } @@ -2590,7 +2819,7 @@ call_resume_unwind (call_stub_t *stub)                                        stub->args.create_cbk.inode,                                        &stub->args.create_cbk.buf,                                        &stub->args.create_cbk.preparent, -                                      &stub->args.create_cbk.postparent); +                                      &stub->args.create_cbk.postparent, stub->xdata);                  else                          stub->args.create_cbk.fn (stub->frame,                                                    stub->frame->cookie, @@ -2601,7 +2830,7 @@ call_resume_unwind (call_stub_t *stub)                                                    stub->args.create_cbk.inode,                                                    &stub->args.create_cbk.buf,                                                    &stub->args.create_cbk.preparent, -                                                  &stub->args.create_cbk.postparent); +                                                  &stub->args.create_cbk.postparent, stub->xdata);                  break;          } @@ -2612,14 +2841,14 @@ call_resume_unwind (call_stub_t *stub)                          STACK_UNWIND (stub->frame,                                        stub->args.stat_cbk.op_ret,                                        stub->args.stat_cbk.op_errno, -                                      &stub->args.stat_cbk.buf); +                                      &stub->args.stat_cbk.buf, stub->xdata);                  else                          stub->args.stat_cbk.fn (stub->frame,                                                  stub->frame->cookie,                                                  stub->frame->this,                                                  stub->args.stat_cbk.op_ret,                                                  stub->args.stat_cbk.op_errno, -                                                &stub->args.stat_cbk.buf); +                                                &stub->args.stat_cbk.buf, stub->xdata);                  break;          } @@ -2631,7 +2860,7 @@ call_resume_unwind (call_stub_t *stub)                                        stub->args.readlink_cbk.op_ret,                                        stub->args.readlink_cbk.op_errno,                                        stub->args.readlink_cbk.buf, -                                      &stub->args.readlink_cbk.sbuf); +                                      &stub->args.readlink_cbk.sbuf, stub->xdata);                  else                          stub->args.readlink_cbk.fn (stub->frame,                                                      stub->frame->cookie, @@ -2639,7 +2868,7 @@ call_resume_unwind (call_stub_t *stub)                                                      stub->args.readlink_cbk.op_ret,                                                      stub->args.readlink_cbk.op_errno,                                                      stub->args.readlink_cbk.buf, -                                                    &stub->args.readlink_cbk.sbuf); +                                                    &stub->args.readlink_cbk.sbuf, stub->xdata);                  break;          } @@ -2653,7 +2882,7 @@ call_resume_unwind (call_stub_t *stub)                                        stub->args.mknod_cbk.inode,                                        &stub->args.mknod_cbk.buf,                                        &stub->args.mknod_cbk.preparent, -                                      &stub->args.mknod_cbk.postparent); +                                      &stub->args.mknod_cbk.postparent, stub->xdata);                  else                          stub->args.mknod_cbk.fn (stub->frame,                                                   stub->frame->cookie, @@ -2663,7 +2892,7 @@ call_resume_unwind (call_stub_t *stub)                                                   stub->args.mknod_cbk.inode,                                                   &stub->args.mknod_cbk.buf,                                                   &stub->args.mknod_cbk.preparent, -                                                 &stub->args.mknod_cbk.postparent); +                                                 &stub->args.mknod_cbk.postparent, stub->xdata);                  break;          } @@ -2676,7 +2905,7 @@ call_resume_unwind (call_stub_t *stub)                                        stub->args.mkdir_cbk.inode,                                        &stub->args.mkdir_cbk.buf,                                        &stub->args.mkdir_cbk.preparent, -                                      &stub->args.mkdir_cbk.postparent); +                                      &stub->args.mkdir_cbk.postparent, stub->xdata);                  else                          stub->args.mkdir_cbk.fn (stub->frame,                                                   stub->frame->cookie, @@ -2686,7 +2915,7 @@ call_resume_unwind (call_stub_t *stub)                                                   stub->args.mkdir_cbk.inode,                                                   &stub->args.mkdir_cbk.buf,                                                   &stub->args.mkdir_cbk.preparent, -                                                 &stub->args.mkdir_cbk.postparent); +                                                 &stub->args.mkdir_cbk.postparent, stub->xdata);                  if (stub->args.mkdir_cbk.inode)                          inode_unref (stub->args.mkdir_cbk.inode); @@ -2701,7 +2930,7 @@ call_resume_unwind (call_stub_t *stub)                                        stub->args.unlink_cbk.op_ret,                                        stub->args.unlink_cbk.op_errno,                                        &stub->args.unlink_cbk.preparent, -                                      &stub->args.unlink_cbk.postparent); +                                      &stub->args.unlink_cbk.postparent, stub->xdata);                  else                          stub->args.unlink_cbk.fn (stub->frame,                                                    stub->frame->cookie, @@ -2709,7 +2938,7 @@ call_resume_unwind (call_stub_t *stub)                                                    stub->args.unlink_cbk.op_ret,                                                    stub->args.unlink_cbk.op_errno,                                                    &stub->args.unlink_cbk.preparent, -                                                  &stub->args.unlink_cbk.postparent); +                                                  &stub->args.unlink_cbk.postparent, stub->xdata);                  break;          } @@ -2720,7 +2949,7 @@ call_resume_unwind (call_stub_t *stub)                                        stub->args.rmdir_cbk.op_ret,                                        stub->args.rmdir_cbk.op_errno,                                        &stub->args.rmdir_cbk.preparent, -                                      &stub->args.rmdir_cbk.postparent); +                                      &stub->args.rmdir_cbk.postparent, stub->xdata);                  else                          stub->args.rmdir_cbk.fn (stub->frame,                                                   stub->frame->cookie, @@ -2728,7 +2957,7 @@ call_resume_unwind (call_stub_t *stub)                                                   stub->args.rmdir_cbk.op_ret,                                                   stub->args.rmdir_cbk.op_errno,                                                   &stub->args.rmdir_cbk.preparent, -                                                 &stub->args.rmdir_cbk.postparent); +                                                 &stub->args.rmdir_cbk.postparent, stub->xdata);                  break;          } @@ -2741,7 +2970,7 @@ call_resume_unwind (call_stub_t *stub)                                        stub->args.symlink_cbk.inode,                                        &stub->args.symlink_cbk.buf,                                        &stub->args.symlink_cbk.preparent, -                                      &stub->args.symlink_cbk.postparent); +                                      &stub->args.symlink_cbk.postparent, stub->xdata);                  else                          stub->args.symlink_cbk.fn (stub->frame,                                                     stub->frame->cookie, @@ -2751,7 +2980,7 @@ call_resume_unwind (call_stub_t *stub)                                                     stub->args.symlink_cbk.inode,                                                     &stub->args.symlink_cbk.buf,                                                     &stub->args.symlink_cbk.preparent, -                                                   &stub->args.symlink_cbk.postparent); +                                                   &stub->args.symlink_cbk.postparent, stub->xdata);          }          break; @@ -2765,7 +2994,7 @@ call_resume_unwind (call_stub_t *stub)                                        &stub->args.rename_cbk.preoldparent,                                        &stub->args.rename_cbk.postoldparent,                                        &stub->args.rename_cbk.prenewparent, -                                      &stub->args.rename_cbk.postnewparent); +                                      &stub->args.rename_cbk.postnewparent, stub->xdata);                  else                          stub->args.rename_cbk.fn (stub->frame,                                                    stub->frame->cookie, @@ -2776,7 +3005,7 @@ call_resume_unwind (call_stub_t *stub)                                                    &stub->args.rename_cbk.preoldparent,                                                    &stub->args.rename_cbk.postoldparent,                                                    &stub->args.rename_cbk.prenewparent, -                                                  &stub->args.rename_cbk.postnewparent); +                                                  &stub->args.rename_cbk.postnewparent, stub->xdata);                  break;          } @@ -2787,7 +3016,7 @@ call_resume_unwind (call_stub_t *stub)                                        stub->args.link_cbk.op_ret,                                        stub->args.link_cbk.op_errno,                                        stub->args.link_cbk.inode, -                                      &stub->args.link_cbk.buf); +                                      &stub->args.link_cbk.buf, stub->xdata);                  else                          stub->args.link_cbk.fn (stub->frame,                                                  stub->frame->cookie, @@ -2797,7 +3026,7 @@ call_resume_unwind (call_stub_t *stub)                                                  stub->args.link_cbk.inode,                                                  &stub->args.link_cbk.buf,                                                  &stub->args.link_cbk.preparent, -                                                &stub->args.link_cbk.postparent); +                                                &stub->args.link_cbk.postparent, stub->xdata);                  break;          } @@ -2808,7 +3037,7 @@ call_resume_unwind (call_stub_t *stub)                                        stub->args.truncate_cbk.op_ret,                                        stub->args.truncate_cbk.op_errno,                                        &stub->args.truncate_cbk.prebuf, -                                      &stub->args.truncate_cbk.postbuf); +                                      &stub->args.truncate_cbk.postbuf, stub->xdata);                  else                          stub->args.truncate_cbk.fn (stub->frame,                                                      stub->frame->cookie, @@ -2816,7 +3045,7 @@ call_resume_unwind (call_stub_t *stub)                                                      stub->args.truncate_cbk.op_ret,                                                      stub->args.truncate_cbk.op_errno,                                                      &stub->args.truncate_cbk.prebuf, -                                                    &stub->args.truncate_cbk.postbuf); +                                                    &stub->args.truncate_cbk.postbuf, stub->xdata);                  break;          } @@ -2829,7 +3058,7 @@ call_resume_unwind (call_stub_t *stub)                                        stub->args.readv_cbk.vector,                                        stub->args.readv_cbk.count,                                        &stub->args.readv_cbk.stbuf, -                                      stub->args.readv_cbk.iobref); +                                      stub->args.readv_cbk.iobref, stub->xdata);                  else                          stub->args.readv_cbk.fn (stub->frame,                                                   stub->frame->cookie, @@ -2839,7 +3068,7 @@ call_resume_unwind (call_stub_t *stub)                                                   stub->args.readv_cbk.vector,                                                   stub->args.readv_cbk.count,                                                   &stub->args.readv_cbk.stbuf, -                                                 stub->args.readv_cbk.iobref); +                                                 stub->args.readv_cbk.iobref, stub->xdata);          }          break; @@ -2850,7 +3079,7 @@ call_resume_unwind (call_stub_t *stub)                                        stub->args.writev_cbk.op_ret,                                        stub->args.writev_cbk.op_errno,                                        &stub->args.writev_cbk.prebuf, -                                      &stub->args.writev_cbk.postbuf); +                                      &stub->args.writev_cbk.postbuf, stub->xdata);                  else                          stub->args.writev_cbk.fn (stub->frame,                                                    stub->frame->cookie, @@ -2858,7 +3087,7 @@ call_resume_unwind (call_stub_t *stub)                                                    stub->args.writev_cbk.op_ret,                                                    stub->args.writev_cbk.op_errno,                                                    &stub->args.writev_cbk.prebuf, -                                                  &stub->args.writev_cbk.postbuf); +                                                  &stub->args.writev_cbk.postbuf, stub->xdata);                  break;          } @@ -2868,14 +3097,14 @@ call_resume_unwind (call_stub_t *stub)                          STACK_UNWIND (stub->frame,                                        stub->args.statfs_cbk.op_ret,                                        stub->args.statfs_cbk.op_errno, -                                      &(stub->args.statfs_cbk.buf)); +                                      &(stub->args.statfs_cbk.buf), stub->xdata);                  else                          stub->args.statfs_cbk.fn (stub->frame,                                                    stub->frame->cookie,                                                    stub->frame->this,                                                    stub->args.statfs_cbk.op_ret,                                                    stub->args.statfs_cbk.op_errno, -                                                  &(stub->args.statfs_cbk.buf)); +                                                  &(stub->args.statfs_cbk.buf), stub->xdata);          }          break; @@ -2884,13 +3113,13 @@ call_resume_unwind (call_stub_t *stub)                  if (!stub->args.flush_cbk.fn)                          STACK_UNWIND (stub->frame,                                        stub->args.flush_cbk.op_ret, -                                      stub->args.flush_cbk.op_errno); +                                      stub->args.flush_cbk.op_errno, stub->xdata);                  else                          stub->args.flush_cbk.fn (stub->frame,                                                   stub->frame->cookie,                                                   stub->frame->this,                                                   stub->args.flush_cbk.op_ret, -                                                 stub->args.flush_cbk.op_errno); +                                                 stub->args.flush_cbk.op_errno, stub->xdata);                  break;          } @@ -2902,7 +3131,7 @@ call_resume_unwind (call_stub_t *stub)                                        stub->args.fsync_cbk.op_ret,                                        stub->args.fsync_cbk.op_errno,                                        &stub->args.fsync_cbk.prebuf, -                                      &stub->args.fsync_cbk.postbuf); +                                      &stub->args.fsync_cbk.postbuf, stub->xdata);                  else                          stub->args.fsync_cbk.fn (stub->frame,                                                   stub->frame->cookie, @@ -2910,7 +3139,7 @@ call_resume_unwind (call_stub_t *stub)                                                   stub->args.fsync_cbk.op_ret,                                                   stub->args.fsync_cbk.op_errno,                                                   &stub->args.fsync_cbk.prebuf, -                                                 &stub->args.fsync_cbk.postbuf); +                                                 &stub->args.fsync_cbk.postbuf, stub->xdata);                  break;          } @@ -2919,14 +3148,14 @@ call_resume_unwind (call_stub_t *stub)                  if (!stub->args.setxattr_cbk.fn)                          STACK_UNWIND (stub->frame,                                        stub->args.setxattr_cbk.op_ret, -                                      stub->args.setxattr_cbk.op_errno); +                                      stub->args.setxattr_cbk.op_errno, stub->xdata);                  else                          stub->args.setxattr_cbk.fn (stub->frame,                                                      stub->frame->cookie,                                                      stub->frame->this,                                                      stub->args.setxattr_cbk.op_ret, -                                                    stub->args.setxattr_cbk.op_errno); +                                                    stub->args.setxattr_cbk.op_errno, stub->xdata);                  break;          } @@ -2937,14 +3166,14 @@ call_resume_unwind (call_stub_t *stub)                          STACK_UNWIND (stub->frame,                                        stub->args.getxattr_cbk.op_ret,                                        stub->args.getxattr_cbk.op_errno, -                                      stub->args.getxattr_cbk.dict); +                                      stub->args.getxattr_cbk.dict, stub->xdata);                  else                          stub->args.getxattr_cbk.fn (stub->frame,                                                      stub->frame->cookie,                                                      stub->frame->this,                                                      stub->args.getxattr_cbk.op_ret,                                                      stub->args.getxattr_cbk.op_errno, -                                                    stub->args.getxattr_cbk.dict); +                                                    stub->args.getxattr_cbk.dict, stub->xdata);                  break;          } @@ -2953,14 +3182,14 @@ call_resume_unwind (call_stub_t *stub)                  if (!stub->args.fsetxattr_cbk.fn)                          STACK_UNWIND (stub->frame,                                        stub->args.fsetxattr_cbk.op_ret, -                                      stub->args.fsetxattr_cbk.op_errno); +                                      stub->args.fsetxattr_cbk.op_errno, stub->xdata);                  else                          stub->args.fsetxattr_cbk.fn (stub->frame,                                                       stub->frame->cookie,                                                       stub->frame->this,                                                       stub->args.fsetxattr_cbk.op_ret, -                                                     stub->args.fsetxattr_cbk.op_errno); +                                                     stub->args.fsetxattr_cbk.op_errno, stub->xdata);                  break;          } @@ -2971,14 +3200,14 @@ call_resume_unwind (call_stub_t *stub)                          STACK_UNWIND (stub->frame,                                        stub->args.fgetxattr_cbk.op_ret,                                        stub->args.fgetxattr_cbk.op_errno, -                                      stub->args.fgetxattr_cbk.dict); +                                      stub->args.fgetxattr_cbk.dict, stub->xdata);                  else                          stub->args.fgetxattr_cbk.fn (stub->frame,                                                       stub->frame->cookie,                                                       stub->frame->this,                                                       stub->args.fgetxattr_cbk.op_ret,                                                       stub->args.fgetxattr_cbk.op_errno, -                                                     stub->args.fgetxattr_cbk.dict); +                                                     stub->args.fgetxattr_cbk.dict, stub->xdata);                  break;          } @@ -2987,13 +3216,13 @@ call_resume_unwind (call_stub_t *stub)                  if (!stub->args.removexattr_cbk.fn)                          STACK_UNWIND (stub->frame,                                        stub->args.removexattr_cbk.op_ret, -                                      stub->args.removexattr_cbk.op_errno); +                                      stub->args.removexattr_cbk.op_errno, stub->xdata);                  else                          stub->args.removexattr_cbk.fn (stub->frame,                                                         stub->frame->cookie,                                                         stub->frame->this,                                                         stub->args.removexattr_cbk.op_ret, -                                                       stub->args.removexattr_cbk.op_errno); +                                                       stub->args.removexattr_cbk.op_errno, stub->xdata);                  break;          } @@ -3003,13 +3232,13 @@ call_resume_unwind (call_stub_t *stub)                  if (!stub->args.fremovexattr_cbk.fn)                          STACK_UNWIND (stub->frame,                                        stub->args.fremovexattr_cbk.op_ret, -                                      stub->args.fremovexattr_cbk.op_errno); +                                      stub->args.fremovexattr_cbk.op_errno, stub->xdata);                  else                          stub->args.fremovexattr_cbk.fn (stub->frame,                                                          stub->frame->cookie,                                                          stub->frame->this,                                                          stub->args.fremovexattr_cbk.op_ret, -                                                        stub->args.fremovexattr_cbk.op_errno); +                                                        stub->args.fremovexattr_cbk.op_errno, stub->xdata);                  break;          } @@ -3020,14 +3249,14 @@ call_resume_unwind (call_stub_t *stub)                          STACK_UNWIND (stub->frame,                                        stub->args.opendir_cbk.op_ret,                                        stub->args.opendir_cbk.op_errno, -                                      stub->args.opendir_cbk.fd); +                                      stub->args.opendir_cbk.fd, stub->xdata);                  else                          stub->args.opendir_cbk.fn (stub->frame,                                                     stub->frame->cookie,                                                     stub->frame->this,                                                     stub->args.opendir_cbk.op_ret,                                                     stub->args.opendir_cbk.op_errno, -                                                   stub->args.opendir_cbk.fd); +                                                   stub->args.opendir_cbk.fd, stub->xdata);                  break;          } @@ -3036,13 +3265,13 @@ call_resume_unwind (call_stub_t *stub)                  if (!stub->args.fsyncdir_cbk.fn)                          STACK_UNWIND (stub->frame,                                        stub->args.fsyncdir_cbk.op_ret, -                                      stub->args.fsyncdir_cbk.op_errno); +                                      stub->args.fsyncdir_cbk.op_errno, stub->xdata);                  else                          stub->args.fsyncdir_cbk.fn (stub->frame,                                                      stub->frame->cookie,                                                      stub->frame->this,                                                      stub->args.fsyncdir_cbk.op_ret, -                                                    stub->args.fsyncdir_cbk.op_errno); +                                                    stub->args.fsyncdir_cbk.op_errno, stub->xdata);                  break;          } @@ -3051,13 +3280,13 @@ call_resume_unwind (call_stub_t *stub)                  if (!stub->args.access_cbk.fn)                          STACK_UNWIND (stub->frame,                                        stub->args.access_cbk.op_ret, -                                      stub->args.access_cbk.op_errno); +                                      stub->args.access_cbk.op_errno, stub->xdata);                  else                          stub->args.access_cbk.fn (stub->frame,                                                    stub->frame->cookie,                                                    stub->frame->this,                                                    stub->args.access_cbk.op_ret, -                                                  stub->args.access_cbk.op_errno); +                                                  stub->args.access_cbk.op_errno, stub->xdata);                  break;          } @@ -3069,7 +3298,7 @@ call_resume_unwind (call_stub_t *stub)                                        stub->args.ftruncate_cbk.op_ret,                                        stub->args.ftruncate_cbk.op_errno,                                        &stub->args.ftruncate_cbk.prebuf, -                                      &stub->args.ftruncate_cbk.postbuf); +                                      &stub->args.ftruncate_cbk.postbuf, stub->xdata);                  else                          stub->args.ftruncate_cbk.fn (stub->frame,                                                       stub->frame->cookie, @@ -3077,7 +3306,7 @@ call_resume_unwind (call_stub_t *stub)                                                       stub->args.ftruncate_cbk.op_ret,                                                       stub->args.ftruncate_cbk.op_errno,                                                       &stub->args.ftruncate_cbk.prebuf, -                                                     &stub->args.ftruncate_cbk.postbuf); +                                                     &stub->args.ftruncate_cbk.postbuf, stub->xdata);                  break;          } @@ -3087,14 +3316,14 @@ call_resume_unwind (call_stub_t *stub)                          STACK_UNWIND (stub->frame,                                        stub->args.fstat_cbk.op_ret,                                        stub->args.fstat_cbk.op_errno, -                                      &stub->args.fstat_cbk.buf); +                                      &stub->args.fstat_cbk.buf, stub->xdata);                  else                          stub->args.fstat_cbk.fn (stub->frame,                                                   stub->frame->cookie,                                                   stub->frame->this,                                                   stub->args.fstat_cbk.op_ret,                                                   stub->args.fstat_cbk.op_errno, -                                                 &stub->args.fstat_cbk.buf); +                                                 &stub->args.fstat_cbk.buf, stub->xdata);                  break;          } @@ -3105,14 +3334,14 @@ call_resume_unwind (call_stub_t *stub)                          STACK_UNWIND (stub->frame,                                        stub->args.lk_cbk.op_ret,                                        stub->args.lk_cbk.op_errno, -                                      &stub->args.lk_cbk.lock); +                                      &stub->args.lk_cbk.lock, stub->xdata);                  else                          stub->args.lk_cbk.fn (stub->frame,                                                stub->frame->cookie,                                                stub->frame->this,                                                stub->args.lk_cbk.op_ret,                                                stub->args.lk_cbk.op_errno, -                                              &stub->args.lk_cbk.lock); +                                              &stub->args.lk_cbk.lock, stub->xdata);                  break;          } @@ -3121,14 +3350,14 @@ call_resume_unwind (call_stub_t *stub)                  if (!stub->args.inodelk_cbk.fn)                          STACK_UNWIND (stub->frame,                                        stub->args.inodelk_cbk.op_ret, -                                      stub->args.inodelk_cbk.op_errno); +                                      stub->args.inodelk_cbk.op_errno, stub->xdata);                  else                          stub->args.inodelk_cbk.fn (stub->frame,                                                     stub->frame->cookie,                                                     stub->frame->this,                                                     stub->args.inodelk_cbk.op_ret, -                                                   stub->args.inodelk_cbk.op_errno); +                                                   stub->args.inodelk_cbk.op_errno, stub->xdata);                  break;          } @@ -3137,14 +3366,14 @@ call_resume_unwind (call_stub_t *stub)                  if (!stub->args.finodelk_cbk.fn)                          STACK_UNWIND (stub->frame,                                        stub->args.finodelk_cbk.op_ret, -                                      stub->args.finodelk_cbk.op_errno); +                                      stub->args.finodelk_cbk.op_errno, stub->xdata);                  else                          stub->args.finodelk_cbk.fn (stub->frame,                                                      stub->frame->cookie,                                                      stub->frame->this,                                                      stub->args.finodelk_cbk.op_ret, -                                                    stub->args.finodelk_cbk.op_errno); +                                                    stub->args.finodelk_cbk.op_errno, stub->xdata);                  break;          } @@ -3153,14 +3382,14 @@ call_resume_unwind (call_stub_t *stub)                  if (!stub->args.entrylk_cbk.fn)                          STACK_UNWIND (stub->frame,                                        stub->args.entrylk_cbk.op_ret, -                                      stub->args.entrylk_cbk.op_errno); +                                      stub->args.entrylk_cbk.op_errno, stub->xdata);                  else                          stub->args.entrylk_cbk.fn (stub->frame,                                                     stub->frame->cookie,                                                     stub->frame->this,                                                     stub->args.entrylk_cbk.op_ret, -                                                   stub->args.entrylk_cbk.op_errno); +                                                   stub->args.entrylk_cbk.op_errno, stub->xdata);                  break;          } @@ -3169,14 +3398,14 @@ call_resume_unwind (call_stub_t *stub)                  if (!stub->args.fentrylk_cbk.fn)                          STACK_UNWIND (stub->frame,                                        stub->args.fentrylk_cbk.op_ret, -                                      stub->args.fentrylk_cbk.op_errno); +                                      stub->args.fentrylk_cbk.op_errno, stub->xdata);                  else                          stub->args.fentrylk_cbk.fn (stub->frame,                                                      stub->frame->cookie,                                                      stub->frame->this,                                                      stub->args.fentrylk_cbk.op_ret, -                                                    stub->args.fentrylk_cbk.op_errno); +                                                    stub->args.fentrylk_cbk.op_errno, stub->xdata);                  break;          } @@ -3188,7 +3417,7 @@ call_resume_unwind (call_stub_t *stub)                                        stub->args.lookup_cbk.op_errno,                                        stub->args.lookup_cbk.inode,                                        &stub->args.lookup_cbk.buf, -                                      stub->args.lookup_cbk.dict, +                                      stub->xdata,                                        &stub->args.lookup_cbk.postparent);                  else                          stub->args.lookup_cbk.fn (stub->frame, @@ -3198,12 +3427,10 @@ call_resume_unwind (call_stub_t *stub)                                                    stub->args.lookup_cbk.op_errno,                                                    stub->args.lookup_cbk.inode,                                                    &stub->args.lookup_cbk.buf, -                                                  stub->args.lookup_cbk.dict, +                                                  stub->xdata,                                                    &stub->args.lookup_cbk.postparent);                  /* FIXME NULL should not be passed */ -                if (stub->args.lookup_cbk.dict) -                        dict_unref (stub->args.lookup_cbk.dict);                  if (stub->args.lookup_cbk.inode)                          inode_unref (stub->args.lookup_cbk.inode); @@ -3217,7 +3444,7 @@ call_resume_unwind (call_stub_t *stub)                                        stub->args.rchecksum_cbk.op_ret,                                        stub->args.rchecksum_cbk.op_errno,                                        stub->args.rchecksum_cbk.weak_checksum, -                                      stub->args.rchecksum_cbk.strong_checksum); +                                      stub->args.rchecksum_cbk.strong_checksum, stub->xdata);                  else                          stub->args.rchecksum_cbk.fn (stub->frame,                                                       stub->frame->cookie, @@ -3225,11 +3452,10 @@ call_resume_unwind (call_stub_t *stub)                                                       stub->args.rchecksum_cbk.op_ret,                                                       stub->args.rchecksum_cbk.op_errno,                                                       stub->args.rchecksum_cbk.weak_checksum, -                                                     stub->args.rchecksum_cbk.strong_checksum); +                                                     stub->args.rchecksum_cbk.strong_checksum, stub->xdata); +                  if (stub->args.rchecksum_cbk.op_ret >= 0) -                {                          GF_FREE (stub->args.rchecksum_cbk.strong_checksum); -                }                  break;          } @@ -3240,14 +3466,14 @@ call_resume_unwind (call_stub_t *stub)                          STACK_UNWIND (stub->frame,                                        stub->args.readdir_cbk.op_ret,                                        stub->args.readdir_cbk.op_errno, -                                      &stub->args.readdir_cbk.entries); +                                      &stub->args.readdir_cbk.entries, stub->xdata);                  else                          stub->args.readdir_cbk.fn (stub->frame,                                                     stub->frame->cookie,                                                     stub->frame->this,                                                     stub->args.readdir_cbk.op_ret,                                                     stub->args.readdir_cbk.op_errno, -                                                   &stub->args.readdir_cbk.entries); +                                                   &stub->args.readdir_cbk.entries, stub->xdata);                  if (stub->args.readdir_cbk.op_ret > 0)                          gf_dirent_free (&stub->args.readdir_cbk.entries); @@ -3261,14 +3487,14 @@ call_resume_unwind (call_stub_t *stub)                          STACK_UNWIND (stub->frame,                                        stub->args.readdirp_cbk.op_ret,                                        stub->args.readdirp_cbk.op_errno, -                                      &stub->args.readdirp_cbk.entries); +                                      &stub->args.readdirp_cbk.entries, stub->xdata);                  else                          stub->args.readdirp_cbk.fn (stub->frame,                                                      stub->frame->cookie,                                                      stub->frame->this,                                                      stub->args.readdirp_cbk.op_ret,                                                      stub->args.readdirp_cbk.op_errno, -                                                    &stub->args.readdirp_cbk.entries); +                                                    &stub->args.readdirp_cbk.entries, stub->xdata);                  if (stub->args.readdirp_cbk.op_ret > 0)                          gf_dirent_free (&stub->args.readdirp_cbk.entries); @@ -3281,14 +3507,14 @@ call_resume_unwind (call_stub_t *stub)                  if (!stub->args.xattrop_cbk.fn)                          STACK_UNWIND (stub->frame,                                        stub->args.xattrop_cbk.op_ret, -                                      stub->args.xattrop_cbk.op_errno); +                                      stub->args.xattrop_cbk.op_errno, stub->xdata);                  else                          stub->args.xattrop_cbk.fn (stub->frame,                                                     stub->frame->cookie,                                                     stub->frame->this,                                                     stub->args.xattrop_cbk.op_ret,                                                     stub->args.xattrop_cbk.op_errno, -                                                   stub->args.xattrop_cbk.xattr); +                                                   stub->args.xattrop_cbk.xattr, stub->xdata);                  if (stub->args.xattrop_cbk.xattr)                          dict_unref (stub->args.xattrop_cbk.xattr); @@ -3300,14 +3526,14 @@ call_resume_unwind (call_stub_t *stub)                  if (!stub->args.fxattrop_cbk.fn)                          STACK_UNWIND (stub->frame,                                        stub->args.fxattrop_cbk.op_ret, -                                      stub->args.fxattrop_cbk.op_errno); +                                      stub->args.fxattrop_cbk.op_errno, stub->xdata);                  else                          stub->args.fxattrop_cbk.fn (stub->frame,                                                      stub->frame->cookie,                                                      stub->frame->this,                                                      stub->args.fxattrop_cbk.op_ret,                                                      stub->args.fxattrop_cbk.op_errno, -                                                    stub->args.fxattrop_cbk.xattr); +                                                    stub->args.fxattrop_cbk.xattr, stub->xdata);                  if (stub->args.fxattrop_cbk.xattr)                          dict_unref (stub->args.fxattrop_cbk.xattr); @@ -3321,7 +3547,7 @@ call_resume_unwind (call_stub_t *stub)                                        stub->args.setattr_cbk.op_ret,                                        stub->args.setattr_cbk.op_errno,                                        &stub->args.setattr_cbk.statpre, -                                      &stub->args.setattr_cbk.statpost); +                                      &stub->args.setattr_cbk.statpost, stub->xdata);                  else                          stub->args.setattr_cbk.fn (                                  stub->frame, @@ -3330,7 +3556,7 @@ call_resume_unwind (call_stub_t *stub)                                  stub->args.setattr_cbk.op_ret,                                  stub->args.setattr_cbk.op_errno,                                  &stub->args.setattr_cbk.statpre, -                                &stub->args.setattr_cbk.statpost); +                                &stub->args.setattr_cbk.statpost, stub->xdata);                  break;          }          case GF_FOP_FSETATTR: @@ -3340,7 +3566,7 @@ call_resume_unwind (call_stub_t *stub)                                        stub->args.fsetattr_cbk.op_ret,                                        stub->args.fsetattr_cbk.op_errno,                                        &stub->args.fsetattr_cbk.statpre, -                                      &stub->args.fsetattr_cbk.statpost); +                                      &stub->args.fsetattr_cbk.statpost, stub->xdata);                  else                          stub->args.fsetattr_cbk.fn (                                  stub->frame, @@ -3349,7 +3575,7 @@ call_resume_unwind (call_stub_t *stub)                                  stub->args.fsetattr_cbk.op_ret,                                  stub->args.fsetattr_cbk.op_errno,                                  &stub->args.fsetattr_cbk.statpre, -                                &stub->args.fsetattr_cbk.statpost); +                                &stub->args.fsetattr_cbk.statpost, stub->xdata);                  break;          }          default: @@ -3368,6 +3594,9 @@ out:  static void  call_stub_destroy_wind (call_stub_t *stub)  { +        if (stub->xdata) +                dict_unref (stub->xdata); +          switch (stub->fop) {          case GF_FOP_OPEN:          { @@ -3381,8 +3610,6 @@ call_stub_destroy_wind (call_stub_t *stub)                  loc_wipe (&stub->args.create.loc);                  if (stub->args.create.fd)                          fd_unref (stub->args.create.fd); -                if (stub->args.create.params) -                        dict_unref (stub->args.create.params);                  break;          }          case GF_FOP_STAT: @@ -3399,16 +3626,12 @@ call_stub_destroy_wind (call_stub_t *stub)          case GF_FOP_MKNOD:          {                  loc_wipe (&stub->args.mknod.loc); -                if (stub->args.mknod.params) -                        dict_unref (stub->args.mknod.params);          }          break;          case GF_FOP_MKDIR:          {                  loc_wipe (&stub->args.mkdir.loc); -                if (stub->args.mkdir.params) -                        dict_unref (stub->args.mkdir.params);          }          break; @@ -3428,8 +3651,6 @@ call_stub_destroy_wind (call_stub_t *stub)          {                  GF_FREE ((char *)stub->args.symlink.linkname);                  loc_wipe (&stub->args.symlink.loc); -                if (stub->args.symlink.params) -                        dict_unref (stub->args.symlink.params);          }          break; @@ -3621,8 +3842,6 @@ call_stub_destroy_wind (call_stub_t *stub)          case GF_FOP_LOOKUP:          {                  loc_wipe (&stub->args.lookup.loc); -                if (stub->args.lookup.xattr_req) -                        dict_unref (stub->args.lookup.xattr_req);                  break;          } @@ -3645,9 +3864,6 @@ call_stub_destroy_wind (call_stub_t *stub)                  if (stub->args.readdirp.fd)                          fd_unref (stub->args.readdirp.fd); -                if (stub->args.readdirp.dict) -                        dict_unref (stub->args.readdirp.dict); -                  break;          } @@ -3689,6 +3905,9 @@ call_stub_destroy_wind (call_stub_t *stub)  static void  call_stub_destroy_unwind (call_stub_t *stub)  { +        if (stub->xdata) +                dict_unref (stub->xdata); +          switch (stub->fop) {          case GF_FOP_OPEN:          { @@ -3845,9 +4064,6 @@ call_stub_destroy_unwind (call_stub_t *stub)          {                  if (stub->args.lookup_cbk.inode)                          inode_unref (stub->args.lookup_cbk.inode); - -                if (stub->args.lookup_cbk.dict) -                        dict_unref (stub->args.lookup_cbk.dict);          }          break; diff --git a/libglusterfs/src/call-stub.h b/libglusterfs/src/call-stub.h index 081f6d200f0..85e04ec6967 100644 --- a/libglusterfs/src/call-stub.h +++ b/libglusterfs/src/call-stub.h @@ -34,21 +34,20 @@ typedef struct {  	char wind;  	call_frame_t *frame;  	glusterfs_fop_t fop; -       struct mem_pool *stub_mem_pool;    /* pointer to stub mempool in glusterfs ctx */ +        struct mem_pool *stub_mem_pool; /* pointer to stub mempool in ctx_t */ +        dict_t *xdata;                  /* common accross all the fops */  	union {  		/* lookup */  		struct {  			fop_lookup_t fn;  			loc_t loc; -			dict_t *xattr_req;  		} lookup;  		struct {  			fop_lookup_cbk_t fn;  			int32_t op_ret, op_errno;  			inode_t *inode;  			struct iatt buf; -			dict_t *dict;                          struct iatt postparent;  		} lookup_cbk; @@ -130,7 +129,7 @@ typedef struct {  			loc_t loc;  			mode_t mode;  			dev_t rdev; -                        dict_t *params; +                        mode_t umask;  		} mknod;  		struct {  			fop_mknod_cbk_t fn; @@ -146,7 +145,7 @@ typedef struct {  			fop_mkdir_t fn;  			loc_t loc;  			mode_t mode; -                        dict_t *params; +                        mode_t umask;  		} mkdir;  		struct {  			fop_mkdir_cbk_t fn; @@ -161,6 +160,7 @@ typedef struct {  		struct {  			fop_unlink_t fn;  			loc_t loc; +                        int xflag;  		} unlink;  		struct {  			fop_unlink_cbk_t fn; @@ -187,7 +187,7 @@ typedef struct {  			fop_symlink_t fn;  			const char *linkname;  			loc_t loc; -                        dict_t *params; +                        mode_t umask;  		} symlink;  		struct {  			fop_symlink_cbk_t fn; @@ -236,7 +236,7 @@ typedef struct {  			int32_t flags;  			mode_t mode;  			fd_t *fd; -                        dict_t *params; +                        mode_t umask;  		} create;  		struct {  			fop_create_cbk_t fn; @@ -254,7 +254,6 @@ typedef struct {  			loc_t loc;  			int32_t flags;  			fd_t *fd; -                        int32_t wbflags;  		} open;  		struct {  			fop_open_cbk_t fn; @@ -516,7 +515,6 @@ typedef struct {  			fd_t *fd;  			size_t size;  			off_t off; -                        dict_t *dict;  		} readdirp;  		struct {  			fop_readdirp_cbk_t fn; @@ -603,7 +601,7 @@ call_stub_t *  fop_lookup_stub (call_frame_t *frame,  		 fop_lookup_t fn,  		 loc_t *loc, -		 dict_t *xattr_req); +		 dict_t *xdata);  call_stub_t *  fop_lookup_cbk_stub (call_frame_t *frame, @@ -612,34 +610,34 @@ fop_lookup_cbk_stub (call_frame_t *frame,  		     int32_t op_errno,  		     inode_t *inode,  		     struct iatt *buf, -                     dict_t *dict, +                     dict_t *xdata,                       struct iatt *postparent);  call_stub_t *  fop_stat_stub (call_frame_t *frame,  	       fop_stat_t fn, -	       loc_t *loc); +	       loc_t *loc, dict_t *xdata);  call_stub_t *  fop_stat_cbk_stub (call_frame_t *frame,  		   fop_stat_cbk_t fn,  		   int32_t op_ret,  		   int32_t op_errno, -		   struct iatt *buf); +		   struct iatt *buf, dict_t *xdata);  call_stub_t *  fop_fstat_stub (call_frame_t *frame,  		fop_fstat_t fn, -		fd_t *fd); +		fd_t *fd, dict_t *xdata);  call_stub_t *  fop_fstat_cbk_stub (call_frame_t *frame,  		    fop_fstat_cbk_t fn,  		    int32_t op_ret,  		    int32_t op_errno, -		    struct iatt *buf); +		    struct iatt *buf, dict_t *xdata);  call_stub_t *  fop_truncate_stub (call_frame_t *frame,  		   fop_truncate_t fn,  		   loc_t *loc, -		   off_t off); +		   off_t off, dict_t *xdata);  call_stub_t *  fop_truncate_cbk_stub (call_frame_t *frame, @@ -647,13 +645,13 @@ fop_truncate_cbk_stub (call_frame_t *frame,  		       int32_t op_ret,  		       int32_t op_errno,  		       struct iatt *prebuf, -                       struct iatt *postbuf); +                       struct iatt *postbuf, dict_t *xdata);  call_stub_t *  fop_ftruncate_stub (call_frame_t *frame,  		    fop_ftruncate_t fn,  		    fd_t *fd, -		    off_t off); +		    off_t off, dict_t *xdata);  call_stub_t *  fop_ftruncate_cbk_stub (call_frame_t *frame, @@ -661,25 +659,25 @@ fop_ftruncate_cbk_stub (call_frame_t *frame,  			int32_t op_ret,  			int32_t op_errno,  			struct iatt *prebuf, -                        struct iatt *postbuf); +                        struct iatt *postbuf, dict_t *xdata);  call_stub_t *  fop_access_stub (call_frame_t *frame,  		 fop_access_t fn,  		 loc_t *loc, -		 int32_t mask); +		 int32_t mask, dict_t *xdata);  call_stub_t *  fop_access_cbk_stub (call_frame_t *frame,  		     fop_access_cbk_t fn,  		     int32_t op_ret, -		     int32_t op_errno); +		     int32_t op_errno, dict_t *xdata);  call_stub_t *  fop_readlink_stub (call_frame_t *frame,  		   fop_readlink_t fn,  		   loc_t *loc, -		   size_t size); +		   size_t size, dict_t *xdata);  call_stub_t *  fop_readlink_cbk_stub (call_frame_t *frame, @@ -687,11 +685,11 @@ fop_readlink_cbk_stub (call_frame_t *frame,  		       int32_t op_ret,  		       int32_t op_errno,  		       const char *path, -                       struct iatt *buf); +                       struct iatt *buf, dict_t *xdata);  call_stub_t * -fop_mknod_stub (call_frame_t *frame, fop_mknod_t fn, -		loc_t *loc, mode_t mode, dev_t rdev, dict_t *params); +fop_mknod_stub (call_frame_t *frame, fop_mknod_t fn, loc_t *loc, mode_t mode, +                dev_t rdev, mode_t umask, dict_t *xdata);  call_stub_t *  fop_mknod_cbk_stub (call_frame_t *frame, @@ -701,11 +699,11 @@ fop_mknod_cbk_stub (call_frame_t *frame,  		    inode_t *inode,                      struct iatt *buf,                      struct iatt *preparent, -                    struct iatt *postparent); +                    struct iatt *postparent, dict_t *xdata);  call_stub_t * -fop_mkdir_stub (call_frame_t *frame, fop_mkdir_t fn, -		loc_t *loc, mode_t mode, dict_t *params); +fop_mkdir_stub (call_frame_t *frame, fop_mkdir_t fn, loc_t *loc, mode_t mode, +                mode_t umask, dict_t *xdata);  call_stub_t *  fop_mkdir_cbk_stub (call_frame_t *frame, @@ -715,12 +713,11 @@ fop_mkdir_cbk_stub (call_frame_t *frame,  		    inode_t *inode,                      struct iatt *buf,                      struct iatt *preparent, -                    struct iatt *postparent); +                    struct iatt *postparent, dict_t *xdata);  call_stub_t * -fop_unlink_stub (call_frame_t *frame, -		 fop_unlink_t fn, -		 loc_t *loc); +fop_unlink_stub (call_frame_t *frame, fop_unlink_t fn, +		 loc_t *loc, int xflag, dict_t *xdata);  call_stub_t *  fop_unlink_cbk_stub (call_frame_t *frame, @@ -728,11 +725,11 @@ fop_unlink_cbk_stub (call_frame_t *frame,  		     int32_t op_ret,  		     int32_t op_errno,                       struct iatt *preparent, -                     struct iatt *postparent); +                     struct iatt *postparent, dict_t *xdata);  call_stub_t *  fop_rmdir_stub (call_frame_t *frame, fop_rmdir_t fn, -		loc_t *loc, int flags); +		loc_t *loc, int flags, dict_t *xdata);  call_stub_t *  fop_rmdir_cbk_stub (call_frame_t *frame, @@ -740,11 +737,11 @@ fop_rmdir_cbk_stub (call_frame_t *frame,  		    int32_t op_ret,  		    int32_t op_errno,                      struct iatt *preparent, -                    struct iatt *postparent); +                    struct iatt *postparent, dict_t *xdata);  call_stub_t *  fop_symlink_stub (call_frame_t *frame, fop_symlink_t fn, -		  const char *linkname, loc_t *loc, dict_t *params); +		  const char *linkname, loc_t *loc, mode_t umask, dict_t *xdata);  call_stub_t *  fop_symlink_cbk_stub (call_frame_t *frame, @@ -754,13 +751,13 @@ fop_symlink_cbk_stub (call_frame_t *frame,  		      inode_t *inode,                        struct iatt *buf,                        struct iatt *preparent, -                      struct iatt *postparent); +                      struct iatt *postparent, dict_t *xdata);  call_stub_t *  fop_rename_stub (call_frame_t *frame,  		 fop_rename_t fn,  		 loc_t *oldloc, -		 loc_t *newloc); +		 loc_t *newloc, dict_t *xdata);  call_stub_t *  fop_rename_cbk_stub (call_frame_t *frame, @@ -771,13 +768,13 @@ fop_rename_cbk_stub (call_frame_t *frame,                       struct iatt *preoldparent,                       struct iatt *postoldparent,                       struct iatt *prenewparent, -                     struct iatt *postnewparent); +                     struct iatt *postnewparent, dict_t *xdata);  call_stub_t *  fop_link_stub (call_frame_t *frame,  	       fop_link_t fn,  	       loc_t *oldloc, -	       loc_t *newloc); +	       loc_t *newloc, dict_t *xdata);  call_stub_t *  fop_link_cbk_stub (call_frame_t *frame, @@ -787,12 +784,12 @@ fop_link_cbk_stub (call_frame_t *frame,  		   inode_t *inode,                     struct iatt *buf,                     struct iatt *preparent, -                   struct iatt *postparent); +                   struct iatt *postparent, dict_t *xdata);  call_stub_t *  fop_create_stub (call_frame_t *frame, fop_create_t fn,  		 loc_t *loc, int32_t flags, mode_t mode, -                 fd_t *fd, dict_t *params); +                 mode_t umask, fd_t *fd, dict_t *xdata);  call_stub_t *  fop_create_cbk_stub (call_frame_t *frame, @@ -803,7 +800,7 @@ fop_create_cbk_stub (call_frame_t *frame,  		     inode_t *inode,  		     struct iatt *buf,                       struct iatt *preparent, -                     struct iatt *postparent); +                     struct iatt *postparent, dict_t *xdata);  call_stub_t *  fop_open_stub (call_frame_t *frame, @@ -811,21 +808,21 @@ fop_open_stub (call_frame_t *frame,  	       loc_t *loc,  	       int32_t flags,  	       fd_t *fd, -               int32_t wbflags); +               dict_t *xdata);  call_stub_t *  fop_open_cbk_stub (call_frame_t *frame,  		   fop_open_cbk_t fn,  		   int32_t op_ret,  		   int32_t op_errno, -		   fd_t *fd); +		   fd_t *fd, dict_t *xdata);  call_stub_t *  fop_readv_stub (call_frame_t *frame,  		fop_readv_t fn,  		fd_t *fd,  		size_t size, -		off_t off, uint32_t flags); +		off_t off, uint32_t flags, dict_t *xdata);  call_stub_t *  fop_readv_cbk_stub (call_frame_t *frame, @@ -835,7 +832,7 @@ fop_readv_cbk_stub (call_frame_t *frame,  		    struct iovec *vector,  		    int32_t count,  		    struct iatt *stbuf, -                    struct iobref *iobref); +                    struct iobref *iobref, dict_t *xdata);  call_stub_t *  fop_writev_stub (call_frame_t *frame, @@ -844,7 +841,7 @@ fop_writev_stub (call_frame_t *frame,  		 struct iovec *vector,  		 int32_t count,  		 off_t off, uint32_t flags, -                 struct iobref *iobref); +                 struct iobref *iobref, dict_t *xdata);  call_stub_t *  fop_writev_cbk_stub (call_frame_t *frame, @@ -852,24 +849,24 @@ fop_writev_cbk_stub (call_frame_t *frame,  		     int32_t op_ret,  		     int32_t op_errno,                       struct iatt *prebuf, -                     struct iatt *postbuf); +                     struct iatt *postbuf, dict_t *xdata);  call_stub_t *  fop_flush_stub (call_frame_t *frame,  		fop_flush_t fn, -		fd_t *fd); +		fd_t *fd, dict_t *xdata);  call_stub_t *  fop_flush_cbk_stub (call_frame_t *frame,  		    fop_flush_cbk_t fn,  		    int32_t op_ret, -		    int32_t op_errno); +		    int32_t op_errno, dict_t *xdata);  call_stub_t *  fop_fsync_stub (call_frame_t *frame,  		fop_fsync_t fn,  		fd_t *fd, -		int32_t datasync); +		int32_t datasync, dict_t *xdata);  call_stub_t *  fop_fsync_cbk_stub (call_frame_t *frame, @@ -877,177 +874,177 @@ fop_fsync_cbk_stub (call_frame_t *frame,  		    int32_t op_ret,  		    int32_t op_errno,                      struct iatt *prebuf, -                    struct iatt *postbuf); +                    struct iatt *postbuf, dict_t *xdata);  call_stub_t *  fop_opendir_stub (call_frame_t *frame,  		  fop_opendir_t fn, -		  loc_t *loc, fd_t *fd); +		  loc_t *loc, fd_t *fd, dict_t *xdata);  call_stub_t *  fop_opendir_cbk_stub (call_frame_t *frame,  		      fop_opendir_cbk_t fn,  		      int32_t op_ret,  		      int32_t op_errno, -		      fd_t *fd); +		      fd_t *fd, dict_t *xdata);  call_stub_t *  fop_fsyncdir_stub (call_frame_t *frame,  		   fop_fsyncdir_t fn,  		   fd_t *fd, -		   int32_t datasync); +		   int32_t datasync, dict_t *xdata);  call_stub_t *  fop_fsyncdir_cbk_stub (call_frame_t *frame,  		       fop_fsyncdir_cbk_t fn,  		       int32_t op_ret, -		       int32_t op_errno); +		       int32_t op_errno, dict_t *xdata);  call_stub_t *  fop_statfs_stub (call_frame_t *frame,  		 fop_statfs_t fn, -		 loc_t *loc); +		 loc_t *loc, dict_t *xdata);  call_stub_t *  fop_statfs_cbk_stub (call_frame_t *frame,  		     fop_statfs_cbk_t fn,  		     int32_t op_ret,  		     int32_t op_errno, -		     struct statvfs *buf); +		     struct statvfs *buf, dict_t *xdata);  call_stub_t *  fop_setxattr_stub (call_frame_t *frame,  		   fop_setxattr_t fn,  		   loc_t *loc,  		   dict_t *dict, -		   int32_t flags); +		   int32_t flags, dict_t *xdata);  call_stub_t *  fop_setxattr_cbk_stub (call_frame_t *frame,  		       fop_setxattr_cbk_t fn,  		       int32_t op_ret, -		       int32_t op_errno); +		       int32_t op_errno, dict_t *xdata);  call_stub_t *  fop_getxattr_stub (call_frame_t *frame,  		   fop_getxattr_t fn,  		   loc_t *loc, -		   const char *name); +		   const char *name, dict_t *xdata);  call_stub_t *  fop_getxattr_cbk_stub (call_frame_t *frame,  		       fop_getxattr_cbk_t fn,  		       int32_t op_ret,  		       int32_t op_errno, -		       dict_t *value); +		       dict_t *value, dict_t *xdata);  call_stub_t *  fop_fsetxattr_stub (call_frame_t *frame,                      fop_fsetxattr_t fn,                      fd_t *fd,                      dict_t *dict, -                    int32_t flags); +                    int32_t flags, dict_t *xdata);  call_stub_t *  fop_fsetxattr_cbk_stub (call_frame_t *frame,                          fop_fsetxattr_cbk_t fn,                          int32_t op_ret, -                        int32_t op_errno); +                        int32_t op_errno, dict_t *xdata);  call_stub_t *  fop_fgetxattr_stub (call_frame_t *frame,                      fop_fgetxattr_t fn,                      fd_t *fd, -                    const char *name); +                    const char *name, dict_t *xdata);  call_stub_t *  fop_fgetxattr_cbk_stub (call_frame_t *frame,                          fop_fgetxattr_cbk_t fn,                          int32_t op_ret,                          int32_t op_errno, -                        dict_t *value); +                        dict_t *value, dict_t *xdata);  call_stub_t *  fop_removexattr_stub (call_frame_t *frame,  		      fop_removexattr_t fn,  		      loc_t *loc, -		      const char *name); +		      const char *name, dict_t *xdata);  call_stub_t *  fop_removexattr_cbk_stub (call_frame_t *frame,  			  fop_removexattr_cbk_t fn,  			  int32_t op_ret, -			  int32_t op_errno); +			  int32_t op_errno, dict_t *xdata);  call_stub_t *  fop_fremovexattr_stub (call_frame_t *frame,                         fop_fremovexattr_t fn,                         fd_t *fd, -                       const char *name); +                       const char *name, dict_t *xdata);  call_stub_t *  fop_fremovexattr_cbk_stub (call_frame_t *frame,                             fop_fremovexattr_cbk_t fn,                             int32_t op_ret, -                           int32_t op_errno); +                           int32_t op_errno, dict_t *xdata);  call_stub_t *  fop_lk_stub (call_frame_t *frame,  	     fop_lk_t fn,  	     fd_t *fd,  	     int32_t cmd, -	     struct gf_flock *lock); +	     struct gf_flock *lock, dict_t *xdata);  call_stub_t *  fop_lk_cbk_stub (call_frame_t *frame,  		 fop_lk_cbk_t fn,  		 int32_t op_ret,  		 int32_t op_errno, -		 struct gf_flock *lock); +		 struct gf_flock *lock, dict_t *xdata);  call_stub_t *  fop_inodelk_stub (call_frame_t *frame, fop_inodelk_t fn,  		  const char *volume, loc_t *loc, int32_t cmd, -                  struct gf_flock *lock); +                  struct gf_flock *lock, dict_t *xdata);  call_stub_t *  fop_finodelk_stub (call_frame_t *frame, fop_finodelk_t fn,  		   const char *volume, fd_t *fd, int32_t cmd, -                   struct gf_flock *lock); +                   struct gf_flock *lock, dict_t *xdata);  call_stub_t *  fop_entrylk_stub (call_frame_t *frame, fop_entrylk_t fn,  		  const char *volume, loc_t *loc, const char *basename, -		  entrylk_cmd cmd, entrylk_type type); +		  entrylk_cmd cmd, entrylk_type type, dict_t *xdata);  call_stub_t *  fop_fentrylk_stub (call_frame_t *frame, fop_fentrylk_t fn,  		   const char *volume, fd_t *fd, const char *basename, -		   entrylk_cmd cmd, entrylk_type type); +		   entrylk_cmd cmd, entrylk_type type, dict_t *xdata);  call_stub_t *  fop_inodelk_cbk_stub (call_frame_t *frame, fop_inodelk_cbk_t fn, -		      int32_t op_ret, int32_t op_errno); +		      int32_t op_ret, int32_t op_errno, dict_t *xdata);  call_stub_t *  fop_finodelk_cbk_stub (call_frame_t *frame, fop_inodelk_cbk_t fn, -		       int32_t op_ret, int32_t op_errno); +		       int32_t op_ret, int32_t op_errno, dict_t *xdata);  call_stub_t *  fop_entrylk_cbk_stub (call_frame_t *frame, fop_entrylk_cbk_t fn, -		      int32_t op_ret, int32_t op_errno); +		      int32_t op_ret, int32_t op_errno, dict_t *xdata);  call_stub_t *  fop_fentrylk_cbk_stub (call_frame_t *frame, fop_entrylk_cbk_t fn, -		       int32_t op_ret, int32_t op_errno); +		       int32_t op_ret, int32_t op_errno, dict_t *xdata);  call_stub_t *  fop_readdir_stub (call_frame_t *frame,  		  fop_readdir_t fn,  		  fd_t *fd,  		  size_t size, -		  off_t off); +		  off_t off, dict_t *xdata);  call_stub_t *  fop_readdirp_stub (call_frame_t *frame, @@ -1055,27 +1052,27 @@ fop_readdirp_stub (call_frame_t *frame,  		   fd_t *fd,  		   size_t size,  		   off_t off, -                   dict_t *dict); +                   dict_t *xdata);  call_stub_t *  fop_readdirp_cbk_stub (call_frame_t *frame,  		       fop_readdir_cbk_t fn,  		       int32_t op_ret,  		       int32_t op_errno, -		       gf_dirent_t *entries); +		       gf_dirent_t *entries, dict_t *xdata);  call_stub_t *  fop_readdir_cbk_stub (call_frame_t *frame,  		      fop_readdir_cbk_t fn,  		      int32_t op_ret,  		      int32_t op_errno, -		      gf_dirent_t *entries); +		      gf_dirent_t *entries, dict_t *xdata);  call_stub_t *  fop_rchecksum_stub (call_frame_t *frame,                      fop_rchecksum_t fn,                      fd_t *fd, off_t offset, -                    int32_t len); +                    int32_t len, dict_t *xdata);  call_stub_t *  fop_rchecksum_cbk_stub (call_frame_t *frame, @@ -1083,40 +1080,40 @@ fop_rchecksum_cbk_stub (call_frame_t *frame,                          int32_t op_ret,                          int32_t op_errno,                          uint32_t weak_checksum, -                        uint8_t *strong_checksum); +                        uint8_t *strong_checksum, dict_t *xdata);  call_stub_t *  fop_xattrop_stub (call_frame_t *frame,  		  fop_xattrop_t fn,  		  loc_t *loc,  		  gf_xattrop_flags_t optype, -		  dict_t *xattr); +		  dict_t *xattr, dict_t *xdata);  call_stub_t *  fop_xattrop_stub_cbk_stub (call_frame_t *frame,  			   fop_xattrop_cbk_t fn,  			   int32_t op_ret, -			   int32_t op_errno); +			   int32_t op_errno, dict_t *xdata);  call_stub_t *  fop_fxattrop_stub (call_frame_t *frame,  		   fop_fxattrop_t fn,  		   fd_t *fd,  		   gf_xattrop_flags_t optype, -		   dict_t *xattr); +		   dict_t *xattr, dict_t *xdata);  call_stub_t *  fop_fxattrop_stub_cbk_stub (call_frame_t *frame,  			    fop_xattrop_cbk_t fn,  			    int32_t op_ret, -			    int32_t op_errno); +			    int32_t op_errno, dict_t *xdata);  call_stub_t *  fop_setattr_stub (call_frame_t *frame,                    fop_setattr_t fn,                    loc_t *loc,                    struct iatt *stbuf, -                  int32_t valid); +                  int32_t valid, dict_t *xdata);  call_stub_t *  fop_setattr_cbk_stub (call_frame_t *frame, @@ -1124,14 +1121,14 @@ fop_setattr_cbk_stub (call_frame_t *frame,                        int32_t op_ret,                        int32_t op_errno,                        struct iatt *statpre, -                      struct iatt *statpost); +                      struct iatt *statpost, dict_t *xdata);  call_stub_t *  fop_fsetattr_stub (call_frame_t *frame,                     fop_fsetattr_t fn,                     fd_t *fd,                     struct iatt *stbuf, -                   int32_t valid); +                   int32_t valid, dict_t *xdata);  call_stub_t *  fop_fsetattr_cbk_stub (call_frame_t *frame, @@ -1139,7 +1136,7 @@ fop_fsetattr_cbk_stub (call_frame_t *frame,                         int32_t op_ret,                         int32_t op_errno,                         struct iatt *statpre, -                       struct iatt *statpost); +                       struct iatt *statpost, dict_t *xdata);  void call_resume (call_stub_t *stub);  void call_stub_destroy (call_stub_t *stub); diff --git a/libglusterfs/src/defaults.c b/libglusterfs/src/defaults.c index 387e910175b..a3f506d9bf5 100644 --- a/libglusterfs/src/defaults.c +++ b/libglusterfs/src/defaults.c @@ -41,18 +41,19 @@  int32_t  default_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                      int32_t op_ret, int32_t op_errno, inode_t *inode, -                    struct iatt *buf, dict_t *dict, struct iatt *postparent) +                    struct iatt *buf, dict_t *xdata, struct iatt *postparent)  {          STACK_UNWIND_STRICT (lookup, frame, op_ret, op_errno, inode, buf, -                             dict, postparent); +                             xdata, postparent);          return 0;  }  int32_t  default_stat_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                  int32_t op_ret, int32_t op_errno, struct iatt *buf) +                  int32_t op_ret, int32_t op_errno, struct iatt *buf, +                  dict_t *xdata)  { -        STACK_UNWIND_STRICT (stat, frame, op_ret, op_errno, buf); +        STACK_UNWIND_STRICT (stat, frame, op_ret, op_errno, buf, xdata);          return 0;  } @@ -60,37 +61,41 @@ default_stat_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int32_t  default_truncate_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                        int32_t op_ret, int32_t op_errno, struct iatt *prebuf, -                      struct iatt *postbuf) +                      struct iatt *postbuf, +                      dict_t *xdata)  {          STACK_UNWIND_STRICT (truncate, frame, op_ret, op_errno, prebuf, -                             postbuf); +                             postbuf, xdata);          return 0;  }  int32_t  default_ftruncate_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                         int32_t op_ret, int32_t op_errno, struct iatt *prebuf, -                       struct iatt *postbuf) +                       struct iatt *postbuf, +                       dict_t *xdata)  {          STACK_UNWIND_STRICT (ftruncate, frame, op_ret, op_errno, prebuf, -                             postbuf); +                             postbuf, xdata);          return 0;  }  int32_t  default_access_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                    int32_t op_ret, int32_t op_errno) +                    int32_t op_ret, int32_t op_errno, +                    dict_t *xdata)  { -        STACK_UNWIND_STRICT (access, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (access, frame, op_ret, op_errno, xdata);          return 0;  }  int32_t  default_readlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                        int32_t op_ret, int32_t op_errno, const char *path, -                      struct iatt *buf) +                      struct iatt *buf, dict_t *xdata)  { -        STACK_UNWIND_STRICT (readlink, frame, op_ret, op_errno, path, buf); +        STACK_UNWIND_STRICT (readlink, frame, op_ret, op_errno, path, buf, +                             xdata);          return 0;  } @@ -99,10 +104,10 @@ int32_t  default_mknod_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                     int32_t op_ret, int32_t op_errno, inode_t *inode,                     struct iatt *buf, struct iatt *preparent, -                   struct iatt *postparent) +                   struct iatt *postparent, dict_t *xdata)  {          STACK_UNWIND_STRICT (mknod, frame, op_ret, op_errno, inode, -                             buf, preparent, postparent); +                             buf, preparent, postparent, xdata);          return 0;  } @@ -110,30 +115,31 @@ int32_t  default_mkdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                     int32_t op_ret, int32_t op_errno, inode_t *inode,                     struct iatt *buf, struct iatt *preparent, -                   struct iatt *postparent) +                   struct iatt *postparent, dict_t *xdata)  {          STACK_UNWIND_STRICT (mkdir, frame, op_ret, op_errno, inode, -                             buf, preparent, postparent); +                             buf, preparent, postparent, xdata);          return 0;  }  int32_t  default_unlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                      int32_t op_ret, int32_t op_errno, struct iatt *preparent, -                    struct iatt *postparent) +                    struct iatt *postparent, dict_t *xdata)  {          STACK_UNWIND_STRICT (unlink, frame, op_ret, op_errno, preparent, -                             postparent); +                             postparent, xdata);          return 0;  }  int32_t  default_rmdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                     int32_t op_ret, int32_t op_errno, struct iatt *preparent, -                   struct iatt *postparent) +                   struct iatt *postparent, +                   dict_t *xdata)  {          STACK_UNWIND_STRICT (rmdir, frame, op_ret, op_errno, preparent, -                             postparent); +                             postparent, xdata);          return 0;  } @@ -142,10 +148,10 @@ int32_t  default_symlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                       int32_t op_ret, int32_t op_errno, inode_t *inode,                       struct iatt *buf, struct iatt *preparent, -                     struct iatt *postparent) +                     struct iatt *postparent, dict_t *xdata)  {          STACK_UNWIND_STRICT (symlink, frame, op_ret, op_errno, inode, buf, -                             preparent, postparent); +                             preparent, postparent, xdata);          return 0;  } @@ -154,10 +160,11 @@ int32_t  default_rename_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                      int32_t op_ret, int32_t op_errno, struct iatt *buf,                      struct iatt *preoldparent, struct iatt *postoldparent, -                    struct iatt *prenewparent, struct iatt *postnewparent) +                    struct iatt *prenewparent, struct iatt *postnewparent, +                    dict_t *xdata)  {          STACK_UNWIND_STRICT (rename, frame, op_ret, op_errno, buf, preoldparent, -                             postoldparent, prenewparent, postnewparent); +                             postoldparent, prenewparent, postnewparent, xdata);          return 0;  } @@ -166,10 +173,11 @@ int32_t  default_link_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                    int32_t op_ret, int32_t op_errno, inode_t *inode,                    struct iatt *buf, struct iatt *preparent, -                  struct iatt *postparent) +                  struct iatt *postparent, +                  dict_t *xdata)  {          STACK_UNWIND_STRICT (link, frame, op_ret, op_errno, inode, buf, -                             preparent, postparent); +                             preparent, postparent, xdata);          return 0;  } @@ -178,28 +186,31 @@ int32_t  default_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                      int32_t op_ret, int32_t op_errno, fd_t *fd, inode_t *inode,                      struct iatt *buf, struct iatt *preparent, -                    struct iatt *postparent) +                    struct iatt *postparent, +                    dict_t *xdata)  {          STACK_UNWIND_STRICT (create, frame, op_ret, op_errno, fd, inode, buf, -                             preparent, postparent); +                             preparent, postparent, xdata);          return 0;  }  int32_t  default_open_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                  int32_t op_ret, int32_t op_errno, fd_t *fd) +                  int32_t op_ret, int32_t op_errno, fd_t *fd, +                  dict_t *xdata)  { -        STACK_UNWIND_STRICT (open, frame, op_ret, op_errno, fd); +        STACK_UNWIND_STRICT (open, frame, op_ret, op_errno, fd, xdata);          return 0;  }  int32_t  default_readv_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                     int32_t op_ret, int32_t op_errno, struct iovec *vector, -                   int32_t count, struct iatt *stbuf, struct iobref *iobref) +                   int32_t count, struct iatt *stbuf, struct iobref *iobref, +                   dict_t *xdata)  {          STACK_UNWIND_STRICT (readv, frame, op_ret, op_errno, vector, count, -                             stbuf, iobref); +                             stbuf, iobref, xdata);          return 0;  } @@ -207,18 +218,20 @@ default_readv_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int32_t  default_writev_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                      int32_t op_ret, int32_t op_errno, struct iatt *prebuf, -                    struct iatt *postbuf) +                    struct iatt *postbuf, +                    dict_t *xdata)  { -        STACK_UNWIND_STRICT (writev, frame, op_ret, op_errno, prebuf, postbuf); +        STACK_UNWIND_STRICT (writev, frame, op_ret, op_errno, prebuf, postbuf, xdata);          return 0;  }  int32_t  default_flush_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                   int32_t op_ret, int32_t op_errno) +                   int32_t op_ret, int32_t op_errno, +                   dict_t *xdata)  { -        STACK_UNWIND_STRICT (flush, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (flush, frame, op_ret, op_errno, xdata);          return 0;  } @@ -227,59 +240,67 @@ default_flush_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int32_t  default_fsync_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                     int32_t op_ret, int32_t op_errno, struct iatt *prebuf, -                   struct iatt *postbuf) +                   struct iatt *postbuf, +                   dict_t *xdata)  { -        STACK_UNWIND_STRICT (fsync, frame, op_ret, op_errno, prebuf, postbuf); +        STACK_UNWIND_STRICT (fsync, frame, op_ret, op_errno, prebuf, postbuf, +                             xdata);          return 0;  }  int32_t  default_fstat_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                   int32_t op_ret, int32_t op_errno, struct iatt *buf) +                   int32_t op_ret, int32_t op_errno, struct iatt *buf, +                   dict_t *xdata)  { -        STACK_UNWIND_STRICT (fstat, frame, op_ret, op_errno, buf); +        STACK_UNWIND_STRICT (fstat, frame, op_ret, op_errno, buf, xdata);          return 0;  }  int32_t  default_opendir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                     int32_t op_ret, int32_t op_errno, fd_t *fd) +                     int32_t op_ret, int32_t op_errno, fd_t *fd, +                     dict_t *xdata)  { -        STACK_UNWIND_STRICT (opendir, frame, op_ret, op_errno, fd); +        STACK_UNWIND_STRICT (opendir, frame, op_ret, op_errno, fd, xdata);          return 0;  }  int32_t  default_fsyncdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                      int32_t op_ret, int32_t op_errno) +                      int32_t op_ret, int32_t op_errno, +                      dict_t *xdata)  { -        STACK_UNWIND_STRICT (fsyncdir, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (fsyncdir, frame, op_ret, op_errno, xdata);          return 0;  }  int32_t  default_statfs_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                    int32_t op_ret, int32_t op_errno, struct statvfs *buf) +                    int32_t op_ret, int32_t op_errno, struct statvfs *buf, +                    dict_t *xdata)  { -        STACK_UNWIND_STRICT (statfs, frame, op_ret, op_errno, buf); +        STACK_UNWIND_STRICT (statfs, frame, op_ret, op_errno, buf, xdata);          return 0;  }  int32_t  default_setxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                      int32_t op_ret, int32_t op_errno) +                      int32_t op_ret, int32_t op_errno, +                      dict_t *xdata)  { -        STACK_UNWIND_STRICT (setxattr, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (setxattr, frame, op_ret, op_errno, xdata);          return 0;  }  int32_t  default_fsetxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                       int32_t op_ret, int32_t op_errno) +                       int32_t op_ret, int32_t op_errno, +                       dict_t *xdata)  { -        STACK_UNWIND_STRICT (fsetxattr, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (fsetxattr, frame, op_ret, op_errno, xdata);          return 0;  } @@ -287,93 +308,104 @@ default_fsetxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int32_t  default_fgetxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                       int32_t op_ret, int32_t op_errno, dict_t *dict) +                       int32_t op_ret, int32_t op_errno, dict_t *dict, +                       dict_t *xdata)  { -        STACK_UNWIND_STRICT (fgetxattr, frame, op_ret, op_errno, dict); +        STACK_UNWIND_STRICT (fgetxattr, frame, op_ret, op_errno, dict, xdata);          return 0;  }  int32_t  default_getxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                      int32_t op_ret, int32_t op_errno, dict_t *dict) +                      int32_t op_ret, int32_t op_errno, dict_t *dict, +                      dict_t *xdata)  { -        STACK_UNWIND_STRICT (getxattr, frame, op_ret, op_errno, dict); +        STACK_UNWIND_STRICT (getxattr, frame, op_ret, op_errno, dict, xdata);          return 0;  }  int32_t  default_xattrop_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                     int32_t op_ret, int32_t op_errno, dict_t *dict) +                     int32_t op_ret, int32_t op_errno, dict_t *dict, +                     dict_t *xdata)  { -        STACK_UNWIND_STRICT (xattrop, frame, op_ret, op_errno, dict); +        STACK_UNWIND_STRICT (xattrop, frame, op_ret, op_errno, dict, xdata);          return 0;  }  int32_t  default_fxattrop_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                      int32_t op_ret, int32_t op_errno, dict_t *dict) +                      int32_t op_ret, int32_t op_errno, dict_t *dict, +                      dict_t *xdata)  { -        STACK_UNWIND_STRICT (fxattrop, frame, op_ret, op_errno, dict); +        STACK_UNWIND_STRICT (fxattrop, frame, op_ret, op_errno, dict, xdata);          return 0;  }  int32_t  default_removexattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                         int32_t op_ret, int32_t op_errno) +                         int32_t op_ret, int32_t op_errno, +                         dict_t *xdata)  { -        STACK_UNWIND_STRICT (removexattr, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (removexattr, frame, op_ret, op_errno, xdata);          return 0;  }  int32_t  default_fremovexattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                          int32_t op_ret, int32_t op_errno) +                          int32_t op_ret, int32_t op_errno, +                          dict_t *xdata)  { -        STACK_UNWIND_STRICT (fremovexattr, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (fremovexattr, frame, op_ret, op_errno, xdata);          return 0;  }  int32_t  default_lk_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                int32_t op_ret, int32_t op_errno, struct gf_flock *lock) +                int32_t op_ret, int32_t op_errno, struct gf_flock *lock, +                dict_t *xdata)  { -        STACK_UNWIND_STRICT (lk, frame, op_ret, op_errno, lock); +        STACK_UNWIND_STRICT (lk, frame, op_ret, op_errno, lock, xdata);          return 0;  }  int32_t  default_inodelk_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                     int32_t op_ret, int32_t op_errno) +                     int32_t op_ret, int32_t op_errno, +                     dict_t *xdata)  { -        STACK_UNWIND_STRICT (inodelk, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (inodelk, frame, op_ret, op_errno, xdata);          return 0;  }  int32_t  default_finodelk_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                      int32_t op_ret, int32_t op_errno) +                      int32_t op_ret, int32_t op_errno, +                      dict_t *xdata)  { -        STACK_UNWIND_STRICT (finodelk, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (finodelk, frame, op_ret, op_errno, xdata);          return 0;  }  int32_t  default_entrylk_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                     int32_t op_ret, int32_t op_errno) +                     int32_t op_ret, int32_t op_errno, +                     dict_t *xdata)  { -        STACK_UNWIND_STRICT (entrylk, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (entrylk, frame, op_ret, op_errno, xdata);          return 0;  }  int32_t  default_fentrylk_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                      int32_t op_ret, int32_t op_errno) +                      int32_t op_ret, int32_t op_errno, +                      dict_t *xdata)  { -        STACK_UNWIND_STRICT (fentrylk, frame, op_ret, op_errno); +        STACK_UNWIND_STRICT (fentrylk, frame, op_ret, op_errno, xdata);          return 0;  } @@ -381,48 +413,53 @@ default_fentrylk_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int32_t  default_rchecksum_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                         int32_t op_ret, int32_t op_errno, uint32_t weak_checksum, -                       uint8_t *strong_checksum) +                       uint8_t *strong_checksum, +                       dict_t *xdata)  {          STACK_UNWIND_STRICT (rchecksum, frame, op_ret, op_errno, weak_checksum, -                             strong_checksum); +                             strong_checksum, xdata);          return 0;  }  int32_t  default_readdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                     int32_t op_ret, int32_t op_errno, gf_dirent_t *entries) +                     int32_t op_ret, int32_t op_errno, gf_dirent_t *entries, +                     dict_t *xdata)  { -        STACK_UNWIND_STRICT (readdir, frame, op_ret, op_errno, entries); +        STACK_UNWIND_STRICT (readdir, frame, op_ret, op_errno, entries, xdata);          return 0;  }  int32_t  default_readdirp_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                      int32_t op_ret, int32_t op_errno, gf_dirent_t *entries) +                      int32_t op_ret, int32_t op_errno, gf_dirent_t *entries, +                      dict_t *xdata)  { -        STACK_UNWIND_STRICT (readdirp, frame, op_ret, op_errno, entries); +        STACK_UNWIND_STRICT (readdirp, frame, op_ret, op_errno, entries, xdata);          return 0;  }  int32_t  default_setattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                       int32_t op_ret, int32_t op_errno, struct iatt *statpre, -                     struct iatt *statpost) +                     struct iatt *statpost, +                     dict_t *xdata)  {          STACK_UNWIND_STRICT (setattr, frame, op_ret, op_errno, statpre, -                             statpost); +                             statpost, xdata);          return 0;  }  int32_t  default_fsetattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                        int32_t op_ret, int32_t op_errno, struct iatt *statpre, -                      struct iatt *statpost) +                      struct iatt *statpost, +                      dict_t *xdata)  {          STACK_UNWIND_STRICT (fsetattr, frame, op_ret, op_errno, statpre, -                             statpost); +                             statpost, xdata);          return 0;  } @@ -438,266 +475,271 @@ default_getspec_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int32_t  default_fgetxattr_resume (call_frame_t *frame, xlator_t *this, fd_t *fd, -                          const char *name) +                          const char *name, dict_t *xdata)  {          STACK_WIND (frame, default_fgetxattr_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->fgetxattr, fd, name); +                    FIRST_CHILD(this)->fops->fgetxattr, fd, name, xdata);          return 0;  }  int32_t  default_fsetxattr_resume (call_frame_t *frame, xlator_t *this, fd_t *fd, -                          dict_t *dict, int32_t flags) +                          dict_t *dict, int32_t flags, dict_t *xdata)  {          STACK_WIND (frame, default_fsetxattr_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->fsetxattr, fd, dict, flags); +                    FIRST_CHILD(this)->fops->fsetxattr, fd, dict, flags, xdata);          return 0;  }  int32_t  default_setxattr_resume (call_frame_t *frame, xlator_t *this, loc_t *loc, -                         dict_t *dict, int32_t flags) +                         dict_t *dict, int32_t flags, dict_t *xdata)  {          STACK_WIND (frame, default_setxattr_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->setxattr, loc, dict, flags); +                    FIRST_CHILD(this)->fops->setxattr, loc, dict, flags, xdata);          return 0;  }  int32_t -default_statfs_resume (call_frame_t *frame, xlator_t *this, loc_t *loc) +default_statfs_resume (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *xdata)  {          STACK_WIND (frame, default_statfs_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->statfs, loc); +                    FIRST_CHILD(this)->fops->statfs, loc, xdata);          return 0;  }  int32_t  default_fsyncdir_resume (call_frame_t *frame, xlator_t *this, fd_t *fd, -                         int32_t flags) +                         int32_t flags, dict_t *xdata)  {          STACK_WIND (frame, default_fsyncdir_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->fsyncdir, fd, flags); +                    FIRST_CHILD(this)->fops->fsyncdir, fd, flags, xdata);          return 0;  }  int32_t  default_opendir_resume (call_frame_t *frame, xlator_t *this, loc_t *loc, -                        fd_t *fd) +                        fd_t *fd, dict_t *xdata)  {          STACK_WIND (frame, default_opendir_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->opendir, loc, fd); +                    FIRST_CHILD(this)->fops->opendir, loc, fd, xdata);          return 0;  }  int32_t -default_fstat_resume (call_frame_t *frame, xlator_t *this, fd_t *fd) +default_fstat_resume (call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *xdata)  {          STACK_WIND (frame, default_fstat_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->fstat, fd); +                    FIRST_CHILD(this)->fops->fstat, fd, xdata);          return 0;  }  int32_t  default_fsync_resume (call_frame_t *frame, xlator_t *this, fd_t *fd, -                      int32_t flags) +                      int32_t flags, dict_t *xdata)  {          STACK_WIND (frame, default_fsync_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->fsync, fd, flags); +                    FIRST_CHILD(this)->fops->fsync, fd, flags, xdata);          return 0;  }  int32_t -default_flush_resume (call_frame_t *frame, xlator_t *this, fd_t *fd) +default_flush_resume (call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *xdata)  {          STACK_WIND (frame, default_flush_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->flush, fd); +                    FIRST_CHILD(this)->fops->flush, fd, xdata);          return 0;  }  int32_t  default_writev_resume (call_frame_t *frame, xlator_t *this, fd_t *fd,                         struct iovec *vector, int32_t count, off_t off, -                       uint32_t flags, struct iobref *iobref) +                       uint32_t flags, struct iobref *iobref, dict_t *xdata)  {          STACK_WIND (frame, default_writev_cbk, FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->writev, fd, vector, count, off, -                    flags, iobref); +                    flags, iobref, xdata);          return 0;  }  int32_t  default_readv_resume (call_frame_t *frame, xlator_t *this, fd_t *fd, -                      size_t size, off_t offset, uint32_t flags) +                      size_t size, off_t offset, uint32_t flags, dict_t *xdata)  {          STACK_WIND (frame, default_readv_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->readv, fd, size, offset, flags); +                    FIRST_CHILD(this)->fops->readv, fd, size, offset, flags, xdata);          return 0;  }  int32_t  default_open_resume (call_frame_t *frame, xlator_t *this, loc_t *loc, -                     int32_t flags, fd_t *fd, int32_t wbflags) +                     int32_t flags, fd_t *fd, dict_t *xdata)  {          STACK_WIND (frame, default_open_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->open, loc, flags, fd, wbflags); +                    FIRST_CHILD(this)->fops->open, loc, flags, fd, xdata);          return 0;  }  int32_t  default_create_resume (call_frame_t *frame, xlator_t *this, loc_t *loc, -                       int32_t flags, mode_t mode, fd_t *fd, dict_t *params) +                       int32_t flags, mode_t mode, mode_t umask, fd_t *fd, +                       dict_t *xdata)  {          STACK_WIND (frame, default_create_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->create, loc, flags, mode, fd, -                    params); +                    FIRST_CHILD(this)->fops->create, loc, flags, mode, umask, +                    fd, xdata);          return 0;  }  int32_t  default_link_resume (call_frame_t *frame, xlator_t *this, loc_t *oldloc, -                     loc_t *newloc) +                     loc_t *newloc, dict_t *xdata)  {          STACK_WIND (frame, default_link_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->link, oldloc, newloc); +                    FIRST_CHILD(this)->fops->link, oldloc, newloc, xdata);          return 0;  }  int32_t  default_rename_resume (call_frame_t *frame, xlator_t *this, loc_t *oldloc, -                       loc_t *newloc) +                       loc_t *newloc, dict_t *xdata)  {          STACK_WIND (frame, default_rename_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->rename, oldloc, newloc); +                    FIRST_CHILD(this)->fops->rename, oldloc, newloc, xdata);          return 0;  }  int  default_symlink_resume (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)  {          STACK_WIND (frame, default_symlink_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->symlink, linkpath, loc, params); +                    FIRST_CHILD(this)->fops->symlink, linkpath, loc, umask, +                    xdata);          return 0;  }  int32_t  default_rmdir_resume (call_frame_t *frame, xlator_t *this, loc_t *loc, -                      int flags) +                      int flags, dict_t *xdata)  {          STACK_WIND (frame, default_rmdir_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->rmdir, loc, flags); +                    FIRST_CHILD(this)->fops->rmdir, loc, flags, xdata);          return 0;  }  int32_t -default_unlink_resume (call_frame_t *frame, xlator_t *this, loc_t *loc) +default_unlink_resume (call_frame_t *frame, xlator_t *this, loc_t *loc, +                       int xflag, dict_t *xdata)  {          STACK_WIND (frame, default_unlink_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->unlink, loc); +                    FIRST_CHILD(this)->fops->unlink, loc, xflag, xdata);          return 0;  }  int  default_mkdir_resume (call_frame_t *frame, xlator_t *this, loc_t *loc, -                      mode_t mode, dict_t *params) +                      mode_t mode, mode_t umask, dict_t *xdata)  {          STACK_WIND (frame, default_mkdir_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->mkdir, loc, mode, params); +                    FIRST_CHILD(this)->fops->mkdir, loc, mode, umask, xdata);          return 0;  }  int  default_mknod_resume (call_frame_t *frame, xlator_t *this, loc_t *loc, -                      mode_t mode, dev_t rdev, dict_t *parms) +                      mode_t mode, dev_t rdev, mode_t umask, dict_t *xdata)  {          STACK_WIND (frame, default_mknod_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->mknod, loc, mode, rdev, parms); +                    FIRST_CHILD(this)->fops->mknod, loc, mode, rdev, umask, +                    xdata);          return 0;  }  int32_t  default_readlink_resume (call_frame_t *frame, xlator_t *this, loc_t *loc, -                         size_t size) +                         size_t size, dict_t *xdata)  {          STACK_WIND (frame, default_readlink_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->readlink, loc, size); +                    FIRST_CHILD(this)->fops->readlink, loc, size, xdata);          return 0;  }  int32_t  default_access_resume (call_frame_t *frame, xlator_t *this, loc_t *loc, -                       int32_t mask) +                       int32_t mask, dict_t *xdata)  {          STACK_WIND (frame, default_access_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->access, loc, mask); +                    FIRST_CHILD(this)->fops->access, loc, mask, xdata);          return 0;  }  int32_t  default_ftruncate_resume (call_frame_t *frame, xlator_t *this, fd_t *fd, -                          off_t offset) +                          off_t offset, dict_t *xdata)  {          STACK_WIND (frame, default_ftruncate_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->ftruncate, fd, offset); +                    FIRST_CHILD(this)->fops->ftruncate, fd, offset, xdata);          return 0;  }  int32_t  default_getxattr_resume (call_frame_t *frame, xlator_t *this, loc_t *loc, -                         const char *name) +                         const char *name, dict_t *xdata)  {          STACK_WIND (frame, default_getxattr_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->getxattr, loc, name); +                    FIRST_CHILD(this)->fops->getxattr, loc, name, xdata);          return 0;  }  int32_t  default_xattrop_resume (call_frame_t *frame, xlator_t *this, loc_t *loc, -                        gf_xattrop_flags_t flags, dict_t *dict) +                        gf_xattrop_flags_t flags, dict_t *dict, dict_t *xdata)  {          STACK_WIND (frame, default_xattrop_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->xattrop, loc, flags, dict); +                    FIRST_CHILD(this)->fops->xattrop, loc, flags, dict, xdata);          return 0;  }  int32_t  default_fxattrop_resume (call_frame_t *frame, xlator_t *this, fd_t *fd, -                         gf_xattrop_flags_t flags, dict_t *dict) +                         gf_xattrop_flags_t flags, dict_t *dict, dict_t *xdata)  {          STACK_WIND (frame, default_fxattrop_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->fxattrop, fd, flags, dict); +                    FIRST_CHILD(this)->fops->fxattrop, fd, flags, dict, xdata);          return 0;  }  int32_t  default_removexattr_resume (call_frame_t *frame, xlator_t *this, loc_t *loc, -                            const char *name) +                            const char *name, dict_t *xdata)  {          STACK_WIND (frame, default_removexattr_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->removexattr, loc, name); +                    FIRST_CHILD(this)->fops->removexattr, loc, name, xdata);          return 0;  }  int32_t  default_fremovexattr_resume (call_frame_t *frame, xlator_t *this, fd_t *fd, -                             const char *name) +                             const char *name, dict_t *xdata)  {          STACK_WIND (frame, default_fremovexattr_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->fremovexattr, fd, name); +                    FIRST_CHILD(this)->fops->fremovexattr, fd, name, xdata);          return 0;  }  int32_t  default_lk_resume (call_frame_t *frame, xlator_t *this, fd_t *fd, -                   int32_t cmd, struct gf_flock *lock) +                   int32_t cmd, struct gf_flock *lock, dict_t *xdata)  {          STACK_WIND (frame, default_lk_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->lk, fd, cmd, lock); +                    FIRST_CHILD(this)->fops->lk, fd, cmd, lock, xdata);          return 0;  } @@ -705,117 +747,127 @@ default_lk_resume (call_frame_t *frame, xlator_t *this, fd_t *fd,  int32_t  default_inodelk_resume (call_frame_t *frame, xlator_t *this,                          const char *volume, loc_t *loc, int32_t cmd, -                        struct gf_flock *lock) +                        struct gf_flock *lock, +                        dict_t *xdata)  {          STACK_WIND (frame, default_inodelk_cbk, FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->inodelk, -                    volume, loc, cmd, lock); +                    volume, loc, cmd, lock, xdata);          return 0;  }  int32_t  default_finodelk_resume (call_frame_t *frame, xlator_t *this,                           const char *volume, fd_t *fd, int32_t cmd, -                         struct gf_flock *lock) +                         struct gf_flock *lock, +                         dict_t *xdata)  {          STACK_WIND (frame, default_finodelk_cbk, FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->finodelk, -                    volume, fd, cmd, lock); +                    volume, fd, cmd, lock, xdata);          return 0;  }  int32_t  default_entrylk_resume (call_frame_t *frame, xlator_t *this,                          const char *volume, loc_t *loc, const char *basename, -                        entrylk_cmd cmd, entrylk_type type) +                        entrylk_cmd cmd, entrylk_type type, +                        dict_t *xdata)  {          STACK_WIND (frame, default_entrylk_cbk, FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->entrylk, -                    volume, loc, basename, cmd, type); +                    volume, loc, basename, cmd, type, xdata);          return 0;  }  int32_t  default_fentrylk_resume (call_frame_t *frame, xlator_t *this,                           const char *volume, fd_t *fd, const char *basename, -                         entrylk_cmd cmd, entrylk_type type) +                         entrylk_cmd cmd, entrylk_type type, +                         dict_t *xdata)  {          STACK_WIND (frame, default_fentrylk_cbk, FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->fentrylk, -                    volume, fd, basename, cmd, type); +                    volume, fd, basename, cmd, type, xdata);          return 0;  }  int32_t  default_rchecksum_resume (call_frame_t *frame, xlator_t *this, fd_t *fd, -                          off_t offset, int32_t len) +                          off_t offset, int32_t len, +                          dict_t *xdata)  {          STACK_WIND (frame, default_rchecksum_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->rchecksum, fd, offset, len); +                    FIRST_CHILD(this)->fops->rchecksum, fd, offset, len, xdata);          return 0;  }  int32_t  default_readdir_resume (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)  {          STACK_WIND (frame, default_readdir_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->readdir, fd, size, off); +                    FIRST_CHILD(this)->fops->readdir, fd, size, off, xdata);          return 0;  }  int32_t  default_readdirp_resume (call_frame_t *frame, xlator_t *this, fd_t *fd, -                         size_t size, off_t off, dict_t *dict) +                         size_t size, off_t off, dict_t *xdata)  {          STACK_WIND (frame, default_readdirp_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->readdirp, fd, size, off, dict); +                    FIRST_CHILD(this)->fops->readdirp, fd, size, off, xdata);          return 0;  }  int32_t  default_setattr_resume (call_frame_t *frame, xlator_t *this, loc_t *loc, -                        struct iatt *stbuf, int32_t valid) +                        struct iatt *stbuf, int32_t valid, +                        dict_t *xdata)  {          STACK_WIND (frame, default_setattr_cbk, FIRST_CHILD (this), -                    FIRST_CHILD (this)->fops->setattr, loc, stbuf, valid); +                    FIRST_CHILD (this)->fops->setattr, loc, stbuf, valid, xdata);          return 0;  }  int32_t  default_truncate_resume (call_frame_t *frame, xlator_t *this, loc_t *loc, -                         off_t offset) +                         off_t offset, +                         dict_t *xdata)  {          STACK_WIND (frame, default_truncate_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->truncate, loc, offset); +                    FIRST_CHILD(this)->fops->truncate, loc, offset, xdata);          return 0;  }  int32_t -default_stat_resume (call_frame_t *frame, xlator_t *this, loc_t *loc) +default_stat_resume (call_frame_t *frame, xlator_t *this, loc_t *loc, +                     dict_t *xdata)  {          STACK_WIND (frame, default_stat_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->stat, loc); +                    FIRST_CHILD(this)->fops->stat, loc, xdata);          return 0;  }  int32_t  default_lookup_resume (call_frame_t *frame, xlator_t *this, loc_t *loc, -                       dict_t *xattr_req) +                       dict_t *xdata)  {          STACK_WIND (frame, default_lookup_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->lookup, loc, xattr_req); +                    FIRST_CHILD(this)->fops->lookup, loc, xdata);          return 0;  }  int32_t  default_fsetattr_resume (call_frame_t *frame, xlator_t *this, fd_t *fd, -                         struct iatt *stbuf, int32_t valid) +                         struct iatt *stbuf, int32_t valid, +                         dict_t *xdata)  {          STACK_WIND (frame, default_fsetattr_cbk, FIRST_CHILD (this), -                    FIRST_CHILD (this)->fops->fsetattr, fd, stbuf, valid); +                    FIRST_CHILD (this)->fops->fsetattr, fd, stbuf, valid, xdata);          return 0;  } @@ -823,258 +875,263 @@ default_fsetattr_resume (call_frame_t *frame, xlator_t *this, fd_t *fd,  int32_t  default_fgetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd, -                   const char *name) +                   const char *name, dict_t *xdata)  {          STACK_WIND (frame, default_fgetxattr_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->fgetxattr, fd, name); +                    FIRST_CHILD(this)->fops->fgetxattr, fd, name, xdata);          return 0;  }  int32_t  default_fsetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *dict, -                   int32_t flags) +                   int32_t flags, dict_t *xdata)  {          STACK_WIND (frame, default_fsetxattr_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->fsetxattr, fd, dict, flags); +                    FIRST_CHILD(this)->fops->fsetxattr, fd, dict, flags, xdata);          return 0;  }  int32_t  default_setxattr (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *dict, -                  int32_t flags) +                  int32_t flags, dict_t *xdata)  {          STACK_WIND (frame, default_setxattr_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->setxattr, loc, dict, flags); +                    FIRST_CHILD(this)->fops->setxattr, loc, dict, flags, xdata);          return 0;  }  int32_t -default_statfs (call_frame_t *frame, xlator_t *this, loc_t *loc) +default_statfs (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *xdata)  {          STACK_WIND (frame, default_statfs_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->statfs, loc); +                    FIRST_CHILD(this)->fops->statfs, loc, xdata);          return 0;  }  int32_t -default_fsyncdir (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t flags) +default_fsyncdir (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t flags, dict_t *xdata)  {          STACK_WIND (frame, default_fsyncdir_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->fsyncdir, fd, flags); +                    FIRST_CHILD(this)->fops->fsyncdir, fd, flags, xdata);          return 0;  }  int32_t -default_opendir (call_frame_t *frame, xlator_t *this, loc_t *loc, fd_t *fd) +default_opendir (call_frame_t *frame, xlator_t *this, loc_t *loc, fd_t *fd, dict_t *xdata)  {          STACK_WIND (frame, default_opendir_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->opendir, loc, fd); +                    FIRST_CHILD(this)->fops->opendir, loc, fd, xdata);          return 0;  }  int32_t -default_fstat (call_frame_t *frame, xlator_t *this, fd_t *fd) +default_fstat (call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *xdata)  {          STACK_WIND (frame, default_fstat_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->fstat, fd); +                    FIRST_CHILD(this)->fops->fstat, fd, xdata);          return 0;  }  int32_t -default_fsync (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t flags) +default_fsync (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t flags, dict_t *xdata)  {          STACK_WIND (frame, default_fsync_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->fsync, fd, flags); +                    FIRST_CHILD(this)->fops->fsync, fd, flags, xdata);          return 0;  }  int32_t -default_flush (call_frame_t *frame, xlator_t *this, fd_t *fd) +default_flush (call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *xdata)  {          STACK_WIND (frame, default_flush_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->flush, fd); +                    FIRST_CHILD(this)->fops->flush, fd, xdata);          return 0;  }  int32_t  default_writev (call_frame_t *frame, xlator_t *this, fd_t *fd,                  struct iovec *vector, int32_t count, off_t off, uint32_t flags, -                struct iobref *iobref) +                struct iobref *iobref, dict_t *xdata)  {          STACK_WIND (frame, default_writev_cbk, FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->writev, fd, vector, count, off, -                    flags, iobref); +                    flags, iobref, xdata);          return 0;  }  int32_t  default_readv (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size, -               off_t offset, uint32_t flags) +               off_t offset, uint32_t flags, dict_t *xdata)  {          STACK_WIND (frame, default_readv_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->readv, fd, size, offset, flags); +                    FIRST_CHILD(this)->fops->readv, fd, size, offset, flags, xdata);          return 0;  }  int32_t  default_open (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t flags, -              fd_t *fd, int32_t wbflags) +              fd_t *fd, dict_t *xdata)  {          STACK_WIND (frame, default_open_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->open, loc, flags, fd, wbflags); +                    FIRST_CHILD(this)->fops->open, loc, flags, fd, xdata);          return 0;  }  int32_t  default_create (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t flags, -                mode_t mode, fd_t *fd, dict_t *params) +                mode_t mode, mode_t umask, fd_t *fd, dict_t *xdata)  {          STACK_WIND (frame, default_create_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->create, loc, flags, mode, fd, -                    params); +                    FIRST_CHILD(this)->fops->create, loc, flags, mode, umask, +                    fd, xdata);          return 0;  }  int32_t -default_link (call_frame_t *frame, xlator_t *this, loc_t *oldloc, loc_t *newloc) +default_link (call_frame_t *frame, xlator_t *this, loc_t *oldloc, loc_t *newloc, +              dict_t *xdata)  {          STACK_WIND (frame, default_link_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->link, oldloc, newloc); +                    FIRST_CHILD(this)->fops->link, oldloc, newloc, xdata);          return 0;  }  int32_t  default_rename (call_frame_t *frame, xlator_t *this, loc_t *oldloc, -                loc_t *newloc) +                loc_t *newloc, dict_t *xdata)  {          STACK_WIND (frame, default_rename_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->rename, oldloc, newloc); +                    FIRST_CHILD(this)->fops->rename, oldloc, newloc, xdata);          return 0;  }  int  default_symlink (call_frame_t *frame, xlator_t *this, const char *linkpath, -                 loc_t *loc, dict_t *params) +                 loc_t *loc, mode_t umask, dict_t *xdata)  {          STACK_WIND (frame, default_symlink_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->symlink, linkpath, loc, params); +                    FIRST_CHILD(this)->fops->symlink, linkpath, loc, umask, +                    xdata);          return 0;  }  int32_t -default_rmdir (call_frame_t *frame, xlator_t *this, loc_t *loc, int flags) +default_rmdir (call_frame_t *frame, xlator_t *this, loc_t *loc, int flags, +               dict_t *xdata)  {          STACK_WIND (frame, default_rmdir_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->rmdir, loc, flags); +                    FIRST_CHILD(this)->fops->rmdir, loc, flags, xdata);          return 0;  }  int32_t -default_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc) +default_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc, int xflag, +                dict_t *xdata)  {          STACK_WIND (frame, default_unlink_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->unlink, loc); +                    FIRST_CHILD(this)->fops->unlink, loc, xflag, xdata);          return 0;  }  int  default_mkdir (call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode, -               dict_t *params) +               mode_t umask, dict_t *xdata)  {          STACK_WIND (frame, default_mkdir_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->mkdir, loc, mode, params); +                    FIRST_CHILD(this)->fops->mkdir, loc, mode, umask, xdata);          return 0;  }  int  default_mknod (call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode, -               dev_t rdev, dict_t *parms) +               dev_t rdev, mode_t umask, dict_t *xdata)  {          STACK_WIND (frame, default_mknod_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->mknod, loc, mode, rdev, parms); +                    FIRST_CHILD(this)->fops->mknod, loc, mode, rdev, umask, +                    xdata);          return 0;  }  int32_t -default_readlink (call_frame_t *frame, xlator_t *this, loc_t *loc, size_t size) +default_readlink (call_frame_t *frame, xlator_t *this, loc_t *loc, size_t size, dict_t *xdata)  {          STACK_WIND (frame, default_readlink_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->readlink, loc, size); +                    FIRST_CHILD(this)->fops->readlink, loc, size, xdata);          return 0;  }  int32_t -default_access (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t mask) +default_access (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t mask, dict_t *xdata)  {          STACK_WIND (frame, default_access_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->access, loc, mask); +                    FIRST_CHILD(this)->fops->access, loc, mask, xdata);          return 0;  }  int32_t -default_ftruncate (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset) +default_ftruncate (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset, dict_t *xdata)  {          STACK_WIND (frame, default_ftruncate_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->ftruncate, fd, offset); +                    FIRST_CHILD(this)->fops->ftruncate, fd, offset, xdata);          return 0;  }  int32_t  default_getxattr (call_frame_t *frame, xlator_t *this, loc_t *loc, -                  const char *name) +                  const char *name, dict_t *xdata)  {          STACK_WIND (frame, default_getxattr_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->getxattr, loc, name); +                    FIRST_CHILD(this)->fops->getxattr, loc, name, xdata);          return 0;  }  int32_t  default_xattrop (call_frame_t *frame, xlator_t *this, loc_t *loc, -                 gf_xattrop_flags_t flags, dict_t *dict) +                 gf_xattrop_flags_t flags, dict_t *dict, dict_t *xdata)  {          STACK_WIND (frame, default_xattrop_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->xattrop, loc, flags, dict); +                    FIRST_CHILD(this)->fops->xattrop, loc, flags, dict, xdata);          return 0;  }  int32_t  default_fxattrop (call_frame_t *frame, xlator_t *this, fd_t *fd, -                  gf_xattrop_flags_t flags, dict_t *dict) +                  gf_xattrop_flags_t flags, dict_t *dict, dict_t *xdata)  {          STACK_WIND (frame, default_fxattrop_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->fxattrop, fd, flags, dict); +                    FIRST_CHILD(this)->fops->fxattrop, fd, flags, dict, xdata);          return 0;  }  int32_t  default_removexattr (call_frame_t *frame, xlator_t *this, loc_t *loc, -                     const char *name) +                     const char *name, dict_t *xdata)  {          STACK_WIND (frame, default_removexattr_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->removexattr, loc, name); +                    FIRST_CHILD(this)->fops->removexattr, loc, name, xdata);          return 0;  }  int32_t  default_fremovexattr (call_frame_t *frame, xlator_t *this, fd_t *fd, -                      const char *name) +                      const char *name, dict_t *xdata)  {          STACK_WIND (frame, default_fremovexattr_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->fremovexattr, fd, name); +                    FIRST_CHILD(this)->fops->fremovexattr, fd, name, xdata);          return 0;  }  int32_t  default_lk (call_frame_t *frame, xlator_t *this, fd_t *fd, -            int32_t cmd, struct gf_flock *lock) +            int32_t cmd, struct gf_flock *lock, dict_t *xdata)  {          STACK_WIND (frame, default_lk_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->lk, fd, cmd, lock); +                    FIRST_CHILD(this)->fops->lk, fd, cmd, lock, xdata);          return 0;  } @@ -1082,115 +1139,125 @@ default_lk (call_frame_t *frame, xlator_t *this, fd_t *fd,  int32_t  default_inodelk (call_frame_t *frame, xlator_t *this,                   const char *volume, loc_t *loc, int32_t cmd, -                 struct gf_flock *lock) +                 struct gf_flock *lock, +                 dict_t *xdata)  {          STACK_WIND (frame, default_inodelk_cbk, FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->inodelk, -                    volume, loc, cmd, lock); +                    volume, loc, cmd, lock, xdata);          return 0;  }  int32_t  default_finodelk (call_frame_t *frame, xlator_t *this, -                  const char *volume, fd_t *fd, int32_t cmd, struct gf_flock *lock) +                  const char *volume, fd_t *fd, int32_t cmd, struct gf_flock *lock, +                  dict_t *xdata)  {          STACK_WIND (frame, default_finodelk_cbk, FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->finodelk, -                    volume, fd, cmd, lock); +                    volume, fd, cmd, lock, xdata);          return 0;  }  int32_t  default_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)  {          STACK_WIND (frame, default_entrylk_cbk, FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->entrylk, -                    volume, loc, basename, cmd, type); +                    volume, loc, basename, cmd, type, xdata);          return 0;  }  int32_t  default_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)  {          STACK_WIND (frame, default_fentrylk_cbk, FIRST_CHILD(this),                      FIRST_CHILD(this)->fops->fentrylk, -                    volume, fd, basename, cmd, type); +                    volume, fd, basename, cmd, type, xdata);          return 0;  }  int32_t  default_rchecksum (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset, -                   int32_t len) +                   int32_t len, +                   dict_t *xdata)  {          STACK_WIND (frame, default_rchecksum_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->rchecksum, fd, offset, len); +                    FIRST_CHILD(this)->fops->rchecksum, fd, offset, len, xdata);          return 0;  }  int32_t  default_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)  {          STACK_WIND (frame, default_readdir_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->readdir, fd, size, off); +                    FIRST_CHILD(this)->fops->readdir, fd, size, off, xdata);          return 0;  }  int32_t  default_readdirp (call_frame_t *frame, xlator_t *this, fd_t *fd, -                  size_t size, off_t off, dict_t *dict) +                  size_t size, off_t off, dict_t *xdata)  {          STACK_WIND (frame, default_readdirp_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->readdirp, fd, size, off, dict); +                    FIRST_CHILD(this)->fops->readdirp, fd, size, off, xdata);          return 0;  }  int32_t  default_setattr (call_frame_t *frame, xlator_t *this, loc_t *loc, -                 struct iatt *stbuf, int32_t valid) +                 struct iatt *stbuf, int32_t valid, +                 dict_t *xdata)  {          STACK_WIND (frame, default_setattr_cbk, FIRST_CHILD (this), -                    FIRST_CHILD (this)->fops->setattr, loc, stbuf, valid); +                    FIRST_CHILD (this)->fops->setattr, loc, stbuf, valid, xdata);          return 0;  }  int32_t -default_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, off_t offset) +default_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, off_t offset, +                  dict_t *xdata)  {          STACK_WIND (frame, default_truncate_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->truncate, loc, offset); +                    FIRST_CHILD(this)->fops->truncate, loc, offset, xdata);          return 0;  }  int32_t -default_stat (call_frame_t *frame, xlator_t *this, loc_t *loc) +default_stat (call_frame_t *frame, xlator_t *this, loc_t *loc, +              dict_t *xdata)  {          STACK_WIND (frame, default_stat_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->stat, loc); +                    FIRST_CHILD(this)->fops->stat, loc, xdata);          return 0;  }  int32_t  default_lookup (call_frame_t *frame, xlator_t *this, loc_t *loc, -                dict_t *xattr_req) +                dict_t *xdata)  {          STACK_WIND (frame, default_lookup_cbk, FIRST_CHILD(this), -                    FIRST_CHILD(this)->fops->lookup, loc, xattr_req); +                    FIRST_CHILD(this)->fops->lookup, loc, xdata);          return 0;  }  int32_t  default_fsetattr (call_frame_t *frame, xlator_t *this, fd_t *fd, -                  struct iatt *stbuf, int32_t valid) +                  struct iatt *stbuf, int32_t valid, +                  dict_t *xdata)  {          STACK_WIND (frame, default_fsetattr_cbk, FIRST_CHILD (this), -                    FIRST_CHILD (this)->fops->fsetattr, fd, stbuf, valid); +                    FIRST_CHILD (this)->fops->fsetattr, fd, stbuf, valid, xdata);          return 0;  } diff --git a/libglusterfs/src/defaults.h b/libglusterfs/src/defaults.h index f30bd8332ad..ae01fc2052c 100644 --- a/libglusterfs/src/defaults.h +++ b/libglusterfs/src/defaults.h @@ -31,6 +31,18 @@  #include "xlator.h" +int32_t default_notify (xlator_t *this, +                        int32_t event, +                        void *data, +                        ...); + +int32_t default_forget (xlator_t *this, inode_t *inode); + +int32_t default_release (xlator_t *this, fd_t *fd); + +int32_t default_releasedir (xlator_t *this, fd_t *fd); + +  /* Management Operations */  int32_t default_getspec (call_frame_t *frame, @@ -41,84 +53,85 @@ int32_t default_getspec (call_frame_t *frame,  int32_t default_rchecksum (call_frame_t *frame,                             xlator_t *this,                             fd_t *fd, off_t offset, -                           int32_t len); +                           int32_t len, dict_t *xdata);  /* FileSystem operations */  int32_t default_lookup (call_frame_t *frame,                          xlator_t *this,                          loc_t *loc, -                        dict_t *xattr_req); +                        dict_t *xdata);  int32_t default_stat (call_frame_t *frame,                        xlator_t *this, -                      loc_t *loc); +                      loc_t *loc, dict_t *xdata);  int32_t default_fstat (call_frame_t *frame,                         xlator_t *this, -                       fd_t *fd); +                       fd_t *fd, dict_t *xdata);  int32_t default_truncate (call_frame_t *frame,                            xlator_t *this,                            loc_t *loc, -                          off_t offset); +                          off_t offset, dict_t *xdata);  int32_t default_ftruncate (call_frame_t *frame,                             xlator_t *this,                             fd_t *fd, -                           off_t offset); +                           off_t offset, dict_t *xdata);  int32_t default_access (call_frame_t *frame,                          xlator_t *this,                          loc_t *loc, -                        int32_t mask); +                        int32_t mask, dict_t *xdata);  int32_t default_readlink (call_frame_t *frame,                            xlator_t *this,                            loc_t *loc, -                          size_t size); +                          size_t size, dict_t *xdata); -int32_t default_mknod (call_frame_t *frame, xlator_t *this, -                       loc_t *loc, mode_t mode, dev_t rdev, dict_t *params); +int32_t default_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 default_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 default_unlink (call_frame_t *frame,                          xlator_t *this, -                        loc_t *loc); +                        loc_t *loc, int xflag, dict_t *xdata);  int32_t default_rmdir (call_frame_t *frame, xlator_t *this, -                       loc_t *loc, int flags); +                       loc_t *loc, int xflag, dict_t *xdata);  int32_t default_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 default_rename (call_frame_t *frame,                          xlator_t *this,                          loc_t *oldloc, -                        loc_t *newloc); +                        loc_t *newloc, dict_t *xdata);  int32_t default_link (call_frame_t *frame,                        xlator_t *this,                        loc_t *oldloc, -                      loc_t *newloc); +                      loc_t *newloc, dict_t *xdata);  int32_t default_create (call_frame_t *frame, xlator_t *this,                          loc_t *loc, int32_t flags, mode_t mode, -                        fd_t *fd, dict_t *params); +                        mode_t umask, fd_t *fd, dict_t *xdata);  int32_t default_open (call_frame_t *frame,                        xlator_t *this,                        loc_t *loc,                        int32_t flags, fd_t *fd, -                      int32_t wbflags); +                      dict_t *xdata);  int32_t default_readv (call_frame_t *frame,                         xlator_t *this,                         fd_t *fd,                         size_t size,                         off_t offset, -                       uint32_t flags); +                       uint32_t flags, dict_t *xdata);  int32_t default_writev (call_frame_t *frame,                          xlator_t *this, @@ -127,218 +140,205 @@ int32_t default_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 default_flush (call_frame_t *frame,                         xlator_t *this, -                       fd_t *fd); +                       fd_t *fd, dict_t *xdata);  int32_t default_fsync (call_frame_t *frame,                         xlator_t *this,                         fd_t *fd, -                       int32_t datasync); +                       int32_t datasync, dict_t *xdata);  int32_t default_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 default_fsyncdir (call_frame_t *frame,                            xlator_t *this,                            fd_t *fd, -                          int32_t datasync); +                          int32_t datasync, dict_t *xdata);  int32_t default_statfs (call_frame_t *frame,                          xlator_t *this, -                        loc_t *loc); +                        loc_t *loc, dict_t *xdata);  int32_t default_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 default_getxattr (call_frame_t *frame,                            xlator_t *this,                            loc_t *loc, -                          const char *name); +                          const char *name, dict_t *xdata);  int32_t default_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 default_fgetxattr (call_frame_t *frame,                             xlator_t *this,                             fd_t *fd, -                           const char *name); +                           const char *name, dict_t *xdata);  int32_t default_removexattr (call_frame_t *frame,                               xlator_t *this,                               loc_t *loc, -                             const char *name); +                             const char *name, dict_t *xdata);  int32_t default_fremovexattr (call_frame_t *frame,                                xlator_t *this,                                fd_t *fd, -                              const char *name); +                              const char *name, dict_t *xdata);  int32_t default_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 default_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 default_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 default_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 default_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 default_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 default_readdirp (call_frame_t *frame,                            xlator_t *this,                            fd_t *fd, -                          size_t size, off_t off, dict_t *dict); +                          size_t size, off_t off, dict_t *xdata);  int32_t default_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 default_fxattrop (call_frame_t *frame,                            xlator_t *this,                            fd_t *fd,                            gf_xattrop_flags_t flags, -                          dict_t *dict); - -int32_t default_notify (xlator_t *this, -                        int32_t event, -                        void *data, -                        ...); - -int32_t default_forget (xlator_t *this, -                        inode_t *inode); - -int32_t default_release (xlator_t *this, -                         fd_t *fd); - -int32_t default_releasedir (xlator_t *this, -                            fd_t *fd); +                          dict_t *dict, dict_t *xdata);  int32_t default_setattr (call_frame_t *frame,                           xlator_t *this,                           loc_t *loc,                           struct iatt *stbuf, -                         int32_t valid); +                         int32_t valid, dict_t *xdata);  int32_t default_fsetattr (call_frame_t *frame,                            xlator_t *this,                            fd_t *fd,                            struct iatt *stbuf, -                          int32_t valid); +                          int32_t valid, dict_t *xdata);  /* Resume */ -int32_t default_getspec (call_frame_t *frame, -                         xlator_t *this, -                         const char *key, -                         int32_t flag); +int32_t default_getspec_resume (call_frame_t *frame, +                                xlator_t *this, +                                const char *key, +                                int32_t flag); -int32_t default_rchecksum (call_frame_t *frame, +int32_t default_rchecksum_resume (call_frame_t *frame,                             xlator_t *this,                             fd_t *fd, off_t offset, -                           int32_t len); +                           int32_t len, dict_t *xdata);  /* FileSystem operations */  int32_t default_lookup_resume (call_frame_t *frame, -                        xlator_t *this, -                        loc_t *loc, -                        dict_t *xattr_req); +                               xlator_t *this, +                               loc_t *loc, +                               dict_t *xdata);  int32_t default_stat_resume (call_frame_t *frame,                        xlator_t *this, -                      loc_t *loc); +                      loc_t *loc, dict_t *xdata);  int32_t default_fstat_resume (call_frame_t *frame,                         xlator_t *this, -                       fd_t *fd); +                       fd_t *fd, dict_t *xdata);  int32_t default_truncate_resume (call_frame_t *frame,                            xlator_t *this,                            loc_t *loc, -                          off_t offset); +                          off_t offset, dict_t *xdata);  int32_t default_ftruncate_resume (call_frame_t *frame,                             xlator_t *this,                             fd_t *fd, -                           off_t offset); +                           off_t offset, dict_t *xdata);  int32_t default_access_resume (call_frame_t *frame,                          xlator_t *this,                          loc_t *loc, -                        int32_t mask); +                        int32_t mask, dict_t *xdata);  int32_t default_readlink_resume (call_frame_t *frame,                            xlator_t *this,                            loc_t *loc, -                          size_t size); +                          size_t size, dict_t *xdata); -int32_t default_mknod_resume (call_frame_t *frame, xlator_t *this, -                       loc_t *loc, mode_t mode, dev_t rdev, dict_t *params); +int32_t default_mknod_resume (call_frame_t *frame, xlator_t *this, loc_t *loc, +                              mode_t mode, dev_t rdev, mode_t umask, +                              dict_t *xdata); -int32_t default_mkdir_resume (call_frame_t *frame, xlator_t *this, -                       loc_t *loc, mode_t mode, dict_t *params); +int32_t default_mkdir_resume (call_frame_t *frame, xlator_t *this, loc_t *loc, +                              mode_t mode, mode_t umask, dict_t *xdata);  int32_t default_unlink_resume (call_frame_t *frame, -                        xlator_t *this, -                        loc_t *loc); +                               xlator_t *this, +                               loc_t *loc, int xflag, dict_t *xdata);  int32_t default_rmdir_resume (call_frame_t *frame, xlator_t *this, -                              loc_t *loc, int flags); +                              loc_t *loc, int xflag, dict_t *xdata);  int32_t default_symlink_resume (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 default_rename_resume (call_frame_t *frame,                          xlator_t *this,                          loc_t *oldloc, -                        loc_t *newloc); +                        loc_t *newloc, dict_t *xdata);  int32_t default_link_resume (call_frame_t *frame,                        xlator_t *this,                        loc_t *oldloc, -                      loc_t *newloc); +                      loc_t *newloc, dict_t *xdata);  int32_t default_create_resume (call_frame_t *frame, xlator_t *this, -                        loc_t *loc, int32_t flags, mode_t mode, -                        fd_t *fd, dict_t *params); +                               loc_t *loc, int32_t flags, mode_t mode, +                               mode_t umask, fd_t *fd, dict_t *xdata);  int32_t default_open_resume (call_frame_t *frame, -                      xlator_t *this, -                      loc_t *loc, -                      int32_t flags, fd_t *fd, -                      int32_t wbflags); +                             xlator_t *this, +                             loc_t *loc, +                             int32_t flags, fd_t *fd, dict_t *xdata);  int32_t default_readv_resume (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 default_writev_resume (call_frame_t *frame,                                 xlator_t *this, @@ -346,345 +346,331 @@ int32_t default_writev_resume (call_frame_t *frame,                                 struct iovec *vector,                                 int32_t count,                                 off_t offset, uint32_t flags, -                               struct iobref *iobref); +                               struct iobref *iobref, dict_t *xdata);  int32_t default_flush_resume (call_frame_t *frame,                         xlator_t *this, -                       fd_t *fd); +                       fd_t *fd, dict_t *xdata);  int32_t default_fsync_resume (call_frame_t *frame,                         xlator_t *this,                         fd_t *fd, -                       int32_t datasync); +                       int32_t datasync, dict_t *xdata);  int32_t default_opendir_resume (call_frame_t *frame,                           xlator_t *this, -                         loc_t *loc, fd_t *fd); +                         loc_t *loc, fd_t *fd, dict_t *xdata);  int32_t default_fsyncdir_resume (call_frame_t *frame,                            xlator_t *this,                            fd_t *fd, -                          int32_t datasync); +                          int32_t datasync, dict_t *xdata);  int32_t default_statfs_resume (call_frame_t *frame,                          xlator_t *this, -                        loc_t *loc); +                        loc_t *loc, dict_t *xdata);  int32_t default_setxattr_resume (call_frame_t *frame,                            xlator_t *this,                            loc_t *loc,                            dict_t *dict, -                          int32_t flags); +                          int32_t flags, dict_t *xdata);  int32_t default_getxattr_resume (call_frame_t *frame,                            xlator_t *this,                            loc_t *loc, -                          const char *name); +                          const char *name, dict_t *xdata);  int32_t default_fsetxattr_resume (call_frame_t *frame,                             xlator_t *this,                             fd_t *fd,                             dict_t *dict, -                           int32_t flags); +                           int32_t flags, dict_t *xdata);  int32_t default_fgetxattr_resume (call_frame_t *frame,                             xlator_t *this,                             fd_t *fd, -                           const char *name); +                           const char *name, dict_t *xdata);  int32_t default_removexattr_resume (call_frame_t *frame,                               xlator_t *this,                               loc_t *loc, -                             const char *name); +                             const char *name, dict_t *xdata);  int32_t default_fremovexattr_resume (call_frame_t *frame,                                       xlator_t *this,                                       fd_t *fd, -                                     const char *name); +                                     const char *name, dict_t *xdata);  int32_t default_lk_resume (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 default_inodelk_resume (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 default_finodelk_resume (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 default_entrylk_resume (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 default_fentrylk_resume (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 default_readdir_resume (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 default_readdirp_resume (call_frame_t *frame,                                   xlator_t *this,                                   fd_t *fd, -                                 size_t size, off_t off, dict_t *dict); +                                 size_t size, off_t off, dict_t *xdata);  int32_t default_xattrop_resume (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 default_fxattrop_resume (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 default_rchecksum_resume (call_frame_t *frame,                                    xlator_t *this,                                    fd_t *fd, off_t offset, -                                  int32_t len); - -int32_t default_notify (xlator_t *this, -                        int32_t event, -                        void *data, -                        ...); - -int32_t default_forget (xlator_t *this, -                        inode_t *inode); - -int32_t default_release (xlator_t *this, -                         fd_t *fd); - -int32_t default_releasedir (xlator_t *this, -                            fd_t *fd); +                                  int32_t len, dict_t *xdata);  int32_t default_setattr_resume (call_frame_t *frame,                           xlator_t *this,                           loc_t *loc,                           struct iatt *stbuf, -                         int32_t valid); +                         int32_t valid, dict_t *xdata);  int32_t default_fsetattr_resume (call_frame_t *frame,                            xlator_t *this,                            fd_t *fd,                            struct iatt *stbuf, -                          int32_t valid); +                          int32_t valid, dict_t *xdata);  /* _cbk */  int32_t  default_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                      int32_t op_ret, int32_t op_errno, inode_t *inode, -                    struct iatt *buf, dict_t *dict, struct iatt *postparent); +                    struct iatt *buf, dict_t *xdata, struct iatt *postparent);  int32_t  default_stat_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                  int32_t op_ret, int32_t op_errno, struct iatt *buf); +                  int32_t op_ret, int32_t op_errno, struct iatt *buf, dict_t *xdata);  int32_t  default_truncate_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                        int32_t op_ret, int32_t op_errno, struct iatt *prebuf, -                      struct iatt *postbuf); +                      struct iatt *postbuf, dict_t *xdata);  int32_t  default_ftruncate_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                         int32_t op_ret, int32_t op_errno, struct iatt *prebuf, -                       struct iatt *postbuf); +                       struct iatt *postbuf, dict_t *xdata);  int32_t  default_access_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                    int32_t op_ret, int32_t op_errno); +                    int32_t op_ret, int32_t op_errno, dict_t *xdata);  int32_t  default_readlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                        int32_t op_ret, int32_t op_errno, const char *path, -                      struct iatt *buf); +                      struct iatt *buf, dict_t *xdata);  int32_t  default_mknod_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                     int32_t op_ret, int32_t op_errno, inode_t *inode,                     struct iatt *buf, struct iatt *preparent, -                   struct iatt *postparent); +                   struct iatt *postparent, dict_t *xdata);  int32_t  default_mkdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                     int32_t op_ret, int32_t op_errno, inode_t *inode,                     struct iatt *buf, struct iatt *preparent, -                   struct iatt *postparent); +                   struct iatt *postparent, dict_t *xdata);  int32_t  default_unlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                      int32_t op_ret, int32_t op_errno, struct iatt *preparent, -                    struct iatt *postparent); +                    struct iatt *postparent, dict_t *xdata);  int32_t  default_rmdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                     int32_t op_ret, int32_t op_errno, struct iatt *preparent, -                   struct iatt *postparent); +                   struct iatt *postparent, dict_t *xdata);  int32_t  default_symlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                       int32_t op_ret, int32_t op_errno, inode_t *inode,                       struct iatt *buf, struct iatt *preparent, -                     struct iatt *postparent); +                     struct iatt *postparent, dict_t *xdata);  int32_t  default_rename_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                      int32_t op_ret, int32_t op_errno, struct iatt *buf,                      struct iatt *preoldparent, struct iatt *postoldparent, -                    struct iatt *prenewparent, struct iatt *postnewparent); +                    struct iatt *prenewparent, struct iatt *postnewparent, dict_t *xdata);  int32_t  default_link_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                    int32_t op_ret, int32_t op_errno, inode_t *inode,                    struct iatt *buf, struct iatt *preparent, -                  struct iatt *postparent); +                  struct iatt *postparent, dict_t *xdata);  int32_t  default_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                      int32_t op_ret, int32_t op_errno, fd_t *fd, inode_t *inode,                      struct iatt *buf, struct iatt *preparent, -                    struct iatt *postparent); +                    struct iatt *postparent, dict_t *xdata);  int32_t  default_open_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                  int32_t op_ret, int32_t op_errno, fd_t *fd); +                  int32_t op_ret, int32_t op_errno, fd_t *fd, dict_t *xdata);  int32_t  default_readv_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                     int32_t op_ret, int32_t op_errno, struct iovec *vector, -                   int32_t count, struct iatt *stbuf, struct iobref *iobref); +                   int32_t count, struct iatt *stbuf, struct iobref *iobref, dict_t *xdata);  int32_t  default_writev_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                      int32_t op_ret, int32_t op_errno, struct iatt *prebuf, -                    struct iatt *postbuf); +                    struct iatt *postbuf, dict_t *xdata);  int32_t  default_flush_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                   int32_t op_ret, int32_t op_errno); +                   int32_t op_ret, int32_t op_errno, dict_t *xdata);  int32_t  default_fsync_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                     int32_t op_ret, int32_t op_errno, struct iatt *prebuf, -                   struct iatt *postbuf); +                   struct iatt *postbuf, dict_t *xdata);  int32_t  default_fstat_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                   int32_t op_ret, int32_t op_errno, struct iatt *buf); +                   int32_t op_ret, int32_t op_errno, struct iatt *buf, dict_t *xdata);  int32_t  default_opendir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                     int32_t op_ret, int32_t op_errno, fd_t *fd); +                     int32_t op_ret, int32_t op_errno, fd_t *fd, dict_t *xdata);  int32_t  default_fsyncdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                      int32_t op_ret, int32_t op_errno); +                      int32_t op_ret, int32_t op_errno, dict_t *xdata);  int32_t  default_statfs_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                    int32_t op_ret, int32_t op_errno, struct statvfs *buf); +                    int32_t op_ret, int32_t op_errno, struct statvfs *buf, dict_t *xdata);  int32_t  default_setxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                      int32_t op_ret, int32_t op_errno); +                      int32_t op_ret, int32_t op_errno, dict_t *xdata);  int32_t  default_fsetxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                       int32_t op_ret, int32_t op_errno); +                       int32_t op_ret, int32_t op_errno, dict_t *xdata);  int32_t  default_fgetxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                       int32_t op_ret, int32_t op_errno, dict_t *dict); +                       int32_t op_ret, int32_t op_errno, dict_t *dict, dict_t *xdata);  int32_t  default_getxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                      int32_t op_ret, int32_t op_errno, dict_t *dict); +                      int32_t op_ret, int32_t op_errno, dict_t *dict, dict_t *xdata);  int32_t  default_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);  int32_t  default_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);  int32_t  default_removexattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                         int32_t op_ret, int32_t op_errno); +                         int32_t op_ret, int32_t op_errno, dict_t *xdata);  int32_t  default_fremovexattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                          int32_t op_ret, int32_t op_errno); +                          int32_t op_ret, int32_t op_errno, dict_t *xdata);  int32_t  default_lk_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                int32_t op_ret, int32_t op_errno, struct gf_flock *lock); +                int32_t op_ret, int32_t op_errno, struct gf_flock *lock, dict_t *xdata);  int32_t  default_inodelk_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                     int32_t op_ret, int32_t op_errno); +                     int32_t op_ret, int32_t op_errno, dict_t *xdata);  int32_t  default_finodelk_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                      int32_t op_ret, int32_t op_errno); +                      int32_t op_ret, int32_t op_errno, dict_t *xdata);  int32_t  default_entrylk_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                     int32_t op_ret, int32_t op_errno); +                     int32_t op_ret, int32_t op_errno, dict_t *xdata);  int32_t  default_fentrylk_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                      int32_t op_ret, int32_t op_errno); +                      int32_t op_ret, int32_t op_errno, dict_t *xdata);  int32_t  default_rchecksum_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                         int32_t op_ret, int32_t op_errno, uint32_t weak_checksum, -                       uint8_t *strong_checksum); +                       uint8_t *strong_checksum, dict_t *xdata);  int32_t  default_readdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                     int32_t op_ret, int32_t op_errno, gf_dirent_t *entries); +                     int32_t op_ret, int32_t op_errno, gf_dirent_t *entries, dict_t *xdata);  int32_t  default_readdirp_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                      int32_t op_ret, int32_t op_errno, gf_dirent_t *entries); +                      int32_t op_ret, int32_t op_errno, gf_dirent_t *entries, dict_t *xdata);  int32_t  default_setattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                       int32_t op_ret, int32_t op_errno, struct iatt *statpre, -                     struct iatt *statpost); +                     struct iatt *statpost, dict_t *xdata);  int32_t  default_fsetattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                        int32_t op_ret, int32_t op_errno, struct iatt *statpre, -                      struct iatt *statpost); +                      struct iatt *statpost, dict_t *xdata);  int32_t  default_getspec_cbk (call_frame_t *frame, void *cookie, xlator_t *this, diff --git a/libglusterfs/src/syncop.c b/libglusterfs/src/syncop.c index 47bb0137da4..e407ab74d6f 100644 --- a/libglusterfs/src/syncop.c +++ b/libglusterfs/src/syncop.c @@ -423,7 +423,7 @@ syncenv_new (size_t stacksize)  int  syncop_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                     int op_ret, int op_errno, inode_t *inode, -                   struct iatt *iatt, dict_t *xattr, struct iatt *parent) +                   struct iatt *iatt, dict_t *xdata, struct iatt *parent)  {          struct syncargs *args = NULL; @@ -435,8 +435,8 @@ syncop_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          if (op_ret == 0) {                  args->iatt1  = *iatt;                  args->iatt2  = *parent; -                if (xattr) -                        args->xattr  = dict_ref (xattr); +                if (xdata) +                        args->xdata  = dict_ref (xdata);          }          __wake (args); @@ -446,22 +446,22 @@ syncop_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int -syncop_lookup (xlator_t *subvol, loc_t *loc, dict_t *xattr_req, -               struct iatt *iatt, dict_t **xattr_rsp, struct iatt *parent) +syncop_lookup (xlator_t *subvol, loc_t *loc, dict_t *xdata_req, +               struct iatt *iatt, dict_t **xdata_rsp, struct iatt *parent)  {          struct syncargs args = {0, };          SYNCOP (subvol, (&args), syncop_lookup_cbk, subvol->fops->lookup, -                loc, xattr_req); +                loc, xdata_req);          if (iatt)                  *iatt = args.iatt1;          if (parent)                  *parent = args.iatt2; -        if (xattr_rsp) -                *xattr_rsp = args.xattr; -        else if (args.xattr) -                dict_unref (args.xattr); +        if (xdata_rsp) +                *xdata_rsp = args.xdata; +        else if (args.xdata) +                dict_unref (args.xdata);          errno = args.op_errno;          return args.op_ret; @@ -488,7 +488,7 @@ syncop_readdirp_cbk (call_frame_t *frame,                       xlator_t *this,                       int32_t op_ret,                       int32_t op_errno, -                     gf_dirent_t *entries) +                     gf_dirent_t *entries, dict_t *xdata)  {          struct syncargs *args = NULL;          gf_dirent_t *entry = NULL; @@ -548,7 +548,7 @@ syncop_readdir_cbk (call_frame_t *frame,                      xlator_t *this,                      int32_t op_ret,                      int32_t op_errno, -                    gf_dirent_t *entries) +                    gf_dirent_t *entries, dict_t *xdata)  {          struct syncargs *args = NULL;          gf_dirent_t *entry = NULL; @@ -590,7 +590,7 @@ syncop_readdir (xlator_t *subvol,          struct syncargs args = {0, };          SYNCOP (subvol, (&args), syncop_readdir_cbk, subvol->fops->readdir, -                fd, size, off); +                fd, size, off, NULL);          if (entries)                  list_splice_init (&args.entries.list, &entries->list); @@ -607,7 +607,7 @@ syncop_opendir_cbk (call_frame_t *frame,                      xlator_t *this,                      int32_t op_ret,                      int32_t op_errno, -                    fd_t *fd) +                    fd_t *fd, dict_t *xdata)  {          struct syncargs *args = NULL; @@ -629,7 +629,7 @@ syncop_opendir (xlator_t *subvol,          struct syncargs args = {0, };          SYNCOP (subvol, (&args), syncop_opendir_cbk, subvol->fops->opendir, -                loc, fd); +                loc, fd, NULL);          errno = args.op_errno;          return args.op_ret; @@ -638,7 +638,7 @@ syncop_opendir (xlator_t *subvol,  int  syncop_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)  {          struct syncargs *args = NULL; @@ -658,7 +658,7 @@ syncop_removexattr (xlator_t *subvol, loc_t *loc, const char *name)          struct syncargs args = {0, };          SYNCOP (subvol, (&args), syncop_removexattr_cbk, subvol->fops->removexattr, -                loc, name); +                loc, name, NULL);          errno = args.op_errno;          return args.op_ret; @@ -666,7 +666,7 @@ syncop_removexattr (xlator_t *subvol, loc_t *loc, const char *name)  int  syncop_fremovexattr_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)  {          struct syncargs *args = NULL; @@ -686,7 +686,7 @@ syncop_fremovexattr (xlator_t *subvol, fd_t *fd, const char *name)          struct syncargs args = {0, };          SYNCOP (subvol, (&args), syncop_fremovexattr_cbk, -                subvol->fops->fremovexattr, fd, name); +                subvol->fops->fremovexattr, fd, name, NULL);          errno = args.op_errno;          return args.op_ret; @@ -694,7 +694,7 @@ syncop_fremovexattr (xlator_t *subvol, fd_t *fd, const char *name)  int  syncop_setxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                     int op_ret, int op_errno) +                     int op_ret, int op_errno, dict_t *xdata)  {          struct syncargs *args = NULL; @@ -715,7 +715,7 @@ syncop_setxattr (xlator_t *subvol, loc_t *loc, dict_t *dict, int32_t flags)          struct syncargs args = {0, };          SYNCOP (subvol, (&args), syncop_setxattr_cbk, subvol->fops->setxattr, -                loc, dict, flags); +                loc, dict, flags, NULL);          errno = args.op_errno;          return args.op_ret; @@ -723,7 +723,7 @@ syncop_setxattr (xlator_t *subvol, loc_t *loc, dict_t *dict, int32_t flags)  int  syncop_fsetxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                      int op_ret, int op_errno) +                      int op_ret, int op_errno, dict_t *xdata)  {          struct syncargs *args = NULL; @@ -744,7 +744,7 @@ syncop_fsetxattr (xlator_t *subvol, fd_t *fd, dict_t *dict, int32_t flags)          struct syncargs args = {0, };          SYNCOP (subvol, (&args), syncop_fsetxattr_cbk, subvol->fops->fsetxattr, -                fd, dict, flags); +                fd, dict, flags, NULL);          errno = args.op_errno;          return args.op_ret; @@ -752,7 +752,7 @@ syncop_fsetxattr (xlator_t *subvol, fd_t *fd, dict_t *dict, int32_t flags)  int  syncop_getxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                     int op_ret, int op_errno, dict_t *dict) +                     int op_ret, int op_errno, dict_t *dict, dict_t *xdata)  {          struct syncargs *args = NULL; @@ -774,7 +774,7 @@ syncop_listxattr (xlator_t *subvol, loc_t *loc, dict_t **dict)          struct syncargs args = {0, };          SYNCOP (subvol, (&args), syncop_getxattr_cbk, subvol->fops->getxattr, -                loc, NULL); +                loc, NULL, NULL);          if (dict)                  *dict = args.xattr; @@ -791,7 +791,7 @@ syncop_getxattr (xlator_t *subvol, loc_t *loc, dict_t **dict, const char *key)          struct syncargs args = {0, };          SYNCOP (subvol, (&args), syncop_getxattr_cbk, subvol->fops->getxattr, -                loc, key); +                loc, key, NULL);          if (dict)                  *dict = args.xattr; @@ -808,7 +808,7 @@ syncop_fgetxattr (xlator_t *subvol, fd_t *fd, dict_t **dict, const char *key)          struct syncargs args = {0, };          SYNCOP (subvol, (&args), syncop_getxattr_cbk, subvol->fops->fgetxattr, -                fd, key); +                fd, key, NULL);          if (dict)                  *dict = args.xattr; @@ -822,7 +822,7 @@ syncop_fgetxattr (xlator_t *subvol, fd_t *fd, dict_t **dict, const char *key)  int  syncop_statfs_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                     int32_t op_ret, int32_t op_errno, -                   struct statvfs *buf) +                   struct statvfs *buf, dict_t *xdata)  {          struct syncargs *args = NULL; @@ -849,7 +849,7 @@ syncop_statfs (xlator_t *subvol, loc_t *loc, struct statvfs *buf)          struct syncargs args = {0, };          SYNCOP (subvol, (&args), syncop_statfs_cbk, subvol->fops->statfs, -                loc); +                loc, NULL);          if (buf)                  *buf = args.statvfs_buf; @@ -861,7 +861,7 @@ syncop_statfs (xlator_t *subvol, loc_t *loc, struct statvfs *buf)  int  syncop_setattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                      int op_ret, int op_errno, -                    struct iatt *preop, struct iatt *postop) +                    struct iatt *preop, struct iatt *postop, dict_t *xdata)  {          struct syncargs *args = NULL; @@ -888,7 +888,7 @@ syncop_setattr (xlator_t *subvol, loc_t *loc, struct iatt *iatt, int valid,          struct syncargs args = {0, };          SYNCOP (subvol, (&args), syncop_setattr_cbk, subvol->fops->setattr, -                loc, iatt, valid); +                loc, iatt, valid, NULL);          if (preop)                  *preop = args.iatt1; @@ -907,7 +907,7 @@ syncop_fsetattr (xlator_t *subvol, fd_t *fd, struct iatt *iatt, int valid,          struct syncargs args = {0, };          SYNCOP (subvol, (&args), syncop_setattr_cbk, subvol->fops->fsetattr, -                fd, iatt, valid); +                fd, iatt, valid, NULL);          if (preop)                  *preop = args.iatt1; @@ -921,7 +921,7 @@ syncop_fsetattr (xlator_t *subvol, fd_t *fd, struct iatt *iatt, int valid,  int32_t  syncop_open_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                 int32_t op_ret, int32_t op_errno, fd_t *fd) +                 int32_t op_ret, int32_t op_errno, fd_t *fd, dict_t *xdata)  {          struct syncargs *args = NULL; @@ -944,7 +944,7 @@ syncop_open (xlator_t *subvol, loc_t *loc, int32_t flags, fd_t *fd)          struct syncargs args = {0, };          SYNCOP (subvol, (&args), syncop_open_cbk, subvol->fops->open, -                loc, flags, fd, 0); +                loc, flags, fd, NULL);          errno = args.op_errno;          return args.op_ret; @@ -955,7 +955,8 @@ syncop_open (xlator_t *subvol, loc_t *loc, int32_t flags, fd_t *fd)  int32_t  syncop_readv_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                    int32_t op_ret, int32_t op_errno, struct iovec *vector, -                  int32_t count, struct iatt *stbuf, struct iobref *iobref) +                  int32_t count, struct iatt *stbuf, struct iobref *iobref, +                  dict_t *xdata)  {          struct syncargs *args = NULL; @@ -987,7 +988,7 @@ syncop_readv (xlator_t *subvol, fd_t *fd, size_t size, off_t off,          struct syncargs args = {0, };          SYNCOP (subvol, (&args), syncop_readv_cbk, subvol->fops->readv, -                fd, size, off, flags); +                fd, size, off, flags, NULL);          if (vector)                  *vector = args.vector; @@ -1011,7 +1012,7 @@ syncop_readv (xlator_t *subvol, fd_t *fd, size_t size, off_t off,  int  syncop_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)  {          struct syncargs *args = NULL; @@ -1033,7 +1034,7 @@ syncop_writev (xlator_t *subvol, fd_t *fd, struct iovec *vector,          struct syncargs args = {0, };          SYNCOP (subvol, (&args), syncop_writev_cbk, subvol->fops->writev, -                fd, vector, count, offset, flags, iobref); +                fd, vector, count, offset, flags, iobref, NULL);          errno = args.op_errno;          return args.op_ret; @@ -1049,7 +1050,7 @@ int syncop_write (xlator_t *subvol, fd_t *fd, const char *buf, int size,          vec.iov_base = (void *)buf;          SYNCOP (subvol, (&args), syncop_writev_cbk, subvol->fops->writev, -                fd, &vec, 1, offset, flags, iobref); +                fd, &vec, 1, offset, flags, iobref, NULL);          errno = args.op_errno;          return args.op_ret; @@ -1068,7 +1069,7 @@ int32_t  syncop_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                     int32_t op_ret, int32_t op_errno, fd_t *fd, inode_t *inode,                     struct iatt *buf, struct iatt *preparent, -                   struct iatt *postparent) +                   struct iatt *postparent, dict_t *xdata)  {          struct syncargs *args = NULL; @@ -1087,12 +1088,12 @@ syncop_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  syncop_create (xlator_t *subvol, loc_t *loc, int32_t flags, mode_t mode, -               fd_t *fd, dict_t *dict) +               fd_t *fd, dict_t *xdata)  {          struct syncargs args = {0, };          SYNCOP (subvol, (&args), syncop_create_cbk, subvol->fops->create, -                loc, flags, mode, fd, dict); +                loc, flags, mode, 0, fd, xdata);          errno = args.op_errno;          return args.op_ret; @@ -1102,7 +1103,7 @@ syncop_create (xlator_t *subvol, loc_t *loc, int32_t flags, mode_t mode,  int  syncop_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)  {          struct syncargs *args = NULL; @@ -1121,7 +1122,8 @@ syncop_unlink (xlator_t *subvol, loc_t *loc)  {          struct syncargs args = {0, }; -        SYNCOP (subvol, (&args), syncop_unlink_cbk, subvol->fops->unlink, loc); +        SYNCOP (subvol, (&args), syncop_unlink_cbk, subvol->fops->unlink, loc, +                0, NULL);          errno = args.op_errno;          return args.op_ret; @@ -1131,7 +1133,7 @@ int  syncop_link_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                    int32_t op_ret, int32_t op_errno, inode_t *inode,                    struct iatt *buf, struct iatt *preparent, -                  struct iatt *postparent) +                 struct iatt *postparent, dict_t *xdata)  {          struct syncargs *args = NULL; @@ -1152,7 +1154,7 @@ syncop_link (xlator_t *subvol, loc_t *oldloc, loc_t *newloc)          struct syncargs args = {0, };          SYNCOP (subvol, (&args), syncop_link_cbk, subvol->fops->link, -                oldloc, newloc); +                oldloc, newloc, NULL);          errno = args.op_errno; @@ -1162,7 +1164,7 @@ syncop_link (xlator_t *subvol, loc_t *oldloc, loc_t *newloc)  int  syncop_ftruncate_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)  {          struct syncargs *args = NULL; @@ -1182,7 +1184,7 @@ syncop_ftruncate (xlator_t *subvol, fd_t *fd, off_t offset)          struct syncargs args = {0, };          SYNCOP (subvol, (&args), syncop_ftruncate_cbk, subvol->fops->ftruncate, -                fd, offset); +                fd, offset, NULL);          errno = args.op_errno;          return args.op_ret; @@ -1194,7 +1196,7 @@ syncop_truncate (xlator_t *subvol, loc_t *loc, off_t offset)          struct syncargs args = {0, };          SYNCOP (subvol, (&args), syncop_ftruncate_cbk, subvol->fops->truncate, -                loc, offset); +                loc, offset, NULL);          errno = args.op_errno;          return args.op_ret; @@ -1203,7 +1205,7 @@ syncop_truncate (xlator_t *subvol, loc_t *loc, off_t offset)  int  syncop_fsync_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                    int32_t op_ret, int32_t op_errno, -                  struct iatt *prebuf, struct iatt *postbuf) +                  struct iatt *prebuf, struct iatt *postbuf, dict_t *xdata)  {          struct syncargs *args = NULL; @@ -1224,7 +1226,7 @@ syncop_fsync (xlator_t *subvol, fd_t *fd)          struct syncargs args = {0, };          SYNCOP (subvol, (&args), syncop_fsync_cbk, subvol->fops->fsync, -                fd, 0); +                fd, 0, NULL);          errno = args.op_errno;          return args.op_ret; @@ -1233,7 +1235,7 @@ syncop_fsync (xlator_t *subvol, fd_t *fd)  int  syncop_fstat_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                  int32_t op_ret, int32_t op_errno, struct iatt *stbuf) +                  int32_t op_ret, int32_t op_errno, struct iatt *stbuf, dict_t *xdata)  {          struct syncargs *args = NULL; @@ -1256,7 +1258,7 @@ syncop_fstat (xlator_t *subvol, fd_t *fd, struct iatt *stbuf)          struct syncargs args = {0, };          SYNCOP (subvol, (&args), syncop_fstat_cbk, subvol->fops->fstat, -                fd); +                fd, NULL);          if (stbuf)                  *stbuf = args.iatt1; @@ -1272,7 +1274,7 @@ syncop_stat (xlator_t *subvol, loc_t *loc, struct iatt *stbuf)          struct syncargs args = {0, };          SYNCOP (subvol, (&args), syncop_fstat_cbk, subvol->fops->stat, -                loc); +                loc, NULL);          if (stbuf)                  *stbuf = args.iatt1; @@ -1286,7 +1288,7 @@ int32_t  syncop_symlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                      int32_t op_ret, int32_t op_errno, inode_t *inode,                      struct iatt *buf, struct iatt *preparent, -                    struct iatt *postparent) +                    struct iatt *postparent, dict_t *xdata)  {          struct syncargs *args = NULL; @@ -1306,7 +1308,7 @@ syncop_symlink (xlator_t *subvol, loc_t *loc, char *newpath, dict_t *dict)          struct syncargs args = {0, };          SYNCOP (subvol, (&args), syncop_symlink_cbk, subvol->fops->symlink, -                newpath, loc, dict); +                newpath, loc, 0, dict);          errno = args.op_errno;          return args.op_ret; @@ -1316,7 +1318,7 @@ syncop_symlink (xlator_t *subvol, loc_t *loc, char *newpath, dict_t *dict)  int  syncop_readlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                       int op_ret, int op_errno, const char *path, -                     struct iatt *stbuf) +                     struct iatt *stbuf, dict_t *xdata)  {          struct syncargs *args = NULL; @@ -1339,7 +1341,7 @@ syncop_readlink (xlator_t *subvol, loc_t *loc, char **buffer, size_t size)          struct syncargs args = {0, };          SYNCOP (subvol, (&args), syncop_readlink_cbk, subvol->fops->readlink, -                loc, size); +                loc, size, NULL);          if (buffer)                  *buffer = args.buffer; @@ -1354,7 +1356,7 @@ int  syncop_mknod_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                    int32_t op_ret, int32_t op_errno, inode_t *inode,                    struct iatt *buf, struct iatt *preparent, -                  struct iatt *postparent) +                  struct iatt *postparent, dict_t *xdata)  {          struct syncargs *args = NULL; @@ -1375,7 +1377,7 @@ syncop_mknod (xlator_t *subvol, loc_t *loc, mode_t mode, dev_t rdev,          struct syncargs args = {0, };          SYNCOP (subvol, (&args), syncop_mknod_cbk, subvol->fops->mknod, -                loc, mode, rdev, dict); +                loc, mode, rdev, 0, dict);          errno = args.op_errno;          return args.op_ret; diff --git a/libglusterfs/src/syncop.h b/libglusterfs/src/syncop.h index 69bd1d770a4..f095319c4d9 100644 --- a/libglusterfs/src/syncop.h +++ b/libglusterfs/src/syncop.h @@ -112,6 +112,7 @@ struct syncargs {          int                 count;          struct iobref      *iobref;          char               *buffer; +        dict_t             *xdata;          /* some more _cbk needs */          uuid_t              uuid; diff --git a/libglusterfs/src/xlator.h b/libglusterfs/src/xlator.h index c0b56a7b0c2..bad328f6c24 100644 --- a/libglusterfs/src/xlator.h +++ b/libglusterfs/src/xlator.h @@ -106,7 +106,8 @@ typedef int32_t (*fop_rchecksum_cbk_t) (call_frame_t *frame,                                          int32_t op_ret,                                          int32_t op_errno,                                          uint32_t weak_checksum, -                                        uint8_t *strong_checksum); +                                        uint8_t *strong_checksum, +                                        dict_t *xdata);  typedef int32_t (*fop_getspec_t) (call_frame_t *frame, @@ -117,7 +118,7 @@ typedef int32_t (*fop_getspec_t) (call_frame_t *frame,  typedef int32_t (*fop_rchecksum_t) (call_frame_t *frame,                                      xlator_t *this,                                      fd_t *fd, off_t offset, -                                    int32_t len); +                                    int32_t len, dict_t *xdata);  typedef int32_t (*fop_lookup_cbk_t) (call_frame_t *frame, @@ -127,7 +128,7 @@ typedef int32_t (*fop_lookup_cbk_t) (call_frame_t *frame,                                       int32_t op_errno,                                       inode_t *inode,                                       struct iatt *buf, -                                     dict_t *xattr, +                                     dict_t *xdata,                                       struct iatt *postparent);  typedef int32_t (*fop_stat_cbk_t) (call_frame_t *frame, @@ -135,14 +136,14 @@ typedef int32_t (*fop_stat_cbk_t) (call_frame_t *frame,                                     xlator_t *this,                                     int32_t op_ret,                                     int32_t op_errno, -                                   struct iatt *buf); +                                   struct iatt *buf, dict_t *xdata);  typedef int32_t (*fop_fstat_cbk_t) (call_frame_t *frame,                                      void *cookie,                                      xlator_t *this,                                      int32_t op_ret,                                      int32_t op_errno, -                                    struct iatt *buf); +                                    struct iatt *buf, dict_t *xdata);  typedef int32_t (*fop_truncate_cbk_t) (call_frame_t *frame,                                         void *cookie, @@ -150,7 +151,7 @@ typedef int32_t (*fop_truncate_cbk_t) (call_frame_t *frame,                                         int32_t op_ret,                                         int32_t op_errno,                                         struct iatt *prebuf, -                                       struct iatt *postbuf); +                                       struct iatt *postbuf, dict_t *xdata);  typedef int32_t (*fop_ftruncate_cbk_t) (call_frame_t *frame,                                          void *cookie, @@ -158,13 +159,13 @@ typedef int32_t (*fop_ftruncate_cbk_t) (call_frame_t *frame,                                          int32_t op_ret,                                          int32_t op_errno,                                          struct iatt *prebuf, -                                        struct iatt *postbuf); +                                        struct iatt *postbuf, dict_t *xdata);  typedef int32_t (*fop_access_cbk_t) (call_frame_t *frame,                                       void *cookie,                                       xlator_t *this,                                       int32_t op_ret, -                                     int32_t op_errno); +                                     int32_t op_errno, dict_t *xdata);  typedef int32_t (*fop_readlink_cbk_t) (call_frame_t *frame,                                         void *cookie, @@ -172,7 +173,7 @@ typedef int32_t (*fop_readlink_cbk_t) (call_frame_t *frame,                                         int32_t op_ret,                                         int32_t op_errno,                                         const char *path, -                                       struct iatt *buf); +                                       struct iatt *buf, dict_t *xdata);  typedef int32_t (*fop_mknod_cbk_t) (call_frame_t *frame,                                      void *cookie, @@ -182,7 +183,7 @@ typedef int32_t (*fop_mknod_cbk_t) (call_frame_t *frame,                                      inode_t *inode,                                      struct iatt *buf,                                      struct iatt *preparent, -                                    struct iatt *postparent); +                                    struct iatt *postparent, dict_t *xdata);  typedef int32_t (*fop_mkdir_cbk_t) (call_frame_t *frame,                                      void *cookie, @@ -192,7 +193,7 @@ typedef int32_t (*fop_mkdir_cbk_t) (call_frame_t *frame,                                      inode_t *inode,                                      struct iatt *buf,                                      struct iatt *preparent, -                                    struct iatt *postparent); +                                    struct iatt *postparent, dict_t *xdata);  typedef int32_t (*fop_unlink_cbk_t) (call_frame_t *frame,                                       void *cookie, @@ -200,7 +201,7 @@ typedef int32_t (*fop_unlink_cbk_t) (call_frame_t *frame,                                       int32_t op_ret,                                       int32_t op_errno,                                       struct iatt *preparent, -                                     struct iatt *postparent); +                                     struct iatt *postparent, dict_t *xdata);  typedef int32_t (*fop_rmdir_cbk_t) (call_frame_t *frame,                                      void *cookie, @@ -208,7 +209,7 @@ typedef int32_t (*fop_rmdir_cbk_t) (call_frame_t *frame,                                      int32_t op_ret,                                      int32_t op_errno,                                      struct iatt *preparent, -                                    struct iatt *postparent); +                                    struct iatt *postparent, dict_t *xdata);  typedef int32_t (*fop_symlink_cbk_t) (call_frame_t *frame,                                        void *cookie, @@ -218,7 +219,7 @@ typedef int32_t (*fop_symlink_cbk_t) (call_frame_t *frame,                                        inode_t *inode,                                        struct iatt *buf,                                        struct iatt *preparent, -                                      struct iatt *postparent); +                                      struct iatt *postparent, dict_t *xdata);  typedef int32_t (*fop_rename_cbk_t) (call_frame_t *frame,                                       void *cookie, @@ -229,7 +230,7 @@ typedef int32_t (*fop_rename_cbk_t) (call_frame_t *frame,                                       struct iatt *preoldparent,                                       struct iatt *postoldparent,                                       struct iatt *prenewparent, -                                     struct iatt *postnewparent); +                                     struct iatt *postnewparent, dict_t *xdata);  typedef int32_t (*fop_link_cbk_t) (call_frame_t *frame,                                     void *cookie, @@ -239,7 +240,7 @@ typedef int32_t (*fop_link_cbk_t) (call_frame_t *frame,                                     inode_t *inode,                                     struct iatt *buf,                                     struct iatt *preparent, -                                   struct iatt *postparent); +                                   struct iatt *postparent, dict_t *xdata);  typedef int32_t (*fop_create_cbk_t) (call_frame_t *frame,                                       void *cookie, @@ -250,14 +251,14 @@ typedef int32_t (*fop_create_cbk_t) (call_frame_t *frame,                                       inode_t *inode,                                       struct iatt *buf,                                       struct iatt *preparent, -                                     struct iatt *postparent); +                                     struct iatt *postparent, dict_t *xdata);  typedef int32_t (*fop_open_cbk_t) (call_frame_t *frame,                                     void *cookie,                                     xlator_t *this,                                     int32_t op_ret,                                     int32_t op_errno, -                                   fd_t *fd); +                                   fd_t *fd, dict_t *xdata);  typedef int32_t (*fop_readv_cbk_t) (call_frame_t *frame,                                      void *cookie, @@ -267,7 +268,7 @@ typedef int32_t (*fop_readv_cbk_t) (call_frame_t *frame,                                      struct iovec *vector,                                      int32_t count,                                      struct iatt *stbuf, -                                    struct iobref *iobref); +                                    struct iobref *iobref, dict_t *xdata);  typedef int32_t (*fop_writev_cbk_t) (call_frame_t *frame,                                       void *cookie, @@ -275,13 +276,13 @@ typedef int32_t (*fop_writev_cbk_t) (call_frame_t *frame,                                       int32_t op_ret,                                       int32_t op_errno,                                       struct iatt *prebuf, -                                     struct iatt *postbuf); +                                     struct iatt *postbuf, dict_t *xdata);  typedef int32_t (*fop_flush_cbk_t) (call_frame_t *frame,                                      void *cookie,                                      xlator_t *this,                                      int32_t op_ret, -                                    int32_t op_errno); +                                    int32_t op_errno, dict_t *xdata);  typedef int32_t (*fop_fsync_cbk_t) (call_frame_t *frame,                                      void *cookie, @@ -289,124 +290,124 @@ typedef int32_t (*fop_fsync_cbk_t) (call_frame_t *frame,                                      int32_t op_ret,                                      int32_t op_errno,                                      struct iatt *prebuf, -                                    struct iatt *postbuf); +                                    struct iatt *postbuf, dict_t *xdata);  typedef int32_t (*fop_opendir_cbk_t) (call_frame_t *frame,                                        void *cookie,                                        xlator_t *this,                                        int32_t op_ret,                                        int32_t op_errno, -                                      fd_t *fd); +                                      fd_t *fd, dict_t *xdata);  typedef int32_t (*fop_fsyncdir_cbk_t) (call_frame_t *frame,                                         void *cookie,                                         xlator_t *this,                                         int32_t op_ret, -                                       int32_t op_errno); +                                       int32_t op_errno, dict_t *xdata);  typedef int32_t (*fop_statfs_cbk_t) (call_frame_t *frame,                                       void *cookie,                                       xlator_t *this,                                       int32_t op_ret,                                       int32_t op_errno, -                                     struct statvfs *buf); +                                     struct statvfs *buf, dict_t *xdata);  typedef int32_t (*fop_setxattr_cbk_t) (call_frame_t *frame,                                         void *cookie,                                         xlator_t *this,                                         int32_t op_ret, -                                       int32_t op_errno); +                                       int32_t op_errno, dict_t *xdata);  typedef int32_t (*fop_getxattr_cbk_t) (call_frame_t *frame,                                         void *cookie,                                         xlator_t *this,                                         int32_t op_ret,                                         int32_t op_errno, -                                       dict_t *dict); +                                       dict_t *dict, dict_t *xdata);  typedef int32_t (*fop_fsetxattr_cbk_t) (call_frame_t *frame,                                          void *cookie,                                          xlator_t *this,                                          int32_t op_ret, -                                        int32_t op_errno); +                                        int32_t op_errno, dict_t *xdata);  typedef int32_t (*fop_fgetxattr_cbk_t) (call_frame_t *frame,                                          void *cookie,                                          xlator_t *this,                                          int32_t op_ret,                                          int32_t op_errno, -                                        dict_t *dict); +                                        dict_t *dict, dict_t *xdata);  typedef int32_t (*fop_removexattr_cbk_t) (call_frame_t *frame,                                            void *cookie,                                            xlator_t *this,                                            int32_t op_ret, -                                          int32_t op_errno); +                                          int32_t op_errno, dict_t *xdata);  typedef int32_t (*fop_fremovexattr_cbk_t) (call_frame_t *frame,                                             void *cookie,                                             xlator_t *this,                                             int32_t op_ret, -                                           int32_t op_errno); +                                           int32_t op_errno, dict_t *xdata);  typedef int32_t (*fop_lk_cbk_t) (call_frame_t *frame,                                   void *cookie,                                   xlator_t *this,                                   int32_t op_ret,                                   int32_t op_errno, -                                 struct gf_flock *flock); +                                 struct gf_flock *flock, dict_t *xdata);  typedef int32_t (*fop_inodelk_cbk_t) (call_frame_t *frame,                                        void *cookie,                                        xlator_t *this,                                        int32_t op_ret, -                                      int32_t op_errno); +                                      int32_t op_errno, dict_t *xdata);  typedef int32_t (*fop_finodelk_cbk_t) (call_frame_t *frame,                                         void *cookie,                                         xlator_t *this,                                         int32_t op_ret, -                                       int32_t op_errno); +                                       int32_t op_errno, dict_t *xdata);  typedef int32_t (*fop_entrylk_cbk_t) (call_frame_t *frame,                                        void *cookie,                                        xlator_t *this,                                        int32_t op_ret, -                                      int32_t op_errno); +                                      int32_t op_errno, dict_t *xdata);  typedef int32_t (*fop_fentrylk_cbk_t) (call_frame_t *frame,                                         void *cookie,                                         xlator_t *this,                                         int32_t op_ret, -                                       int32_t op_errno); +                                       int32_t op_errno, dict_t *xdata);  typedef int32_t (*fop_readdir_cbk_t) (call_frame_t *frame,                                        void *cookie,                                        xlator_t *this,                                        int32_t op_ret,                                        int32_t op_errno, -                                      gf_dirent_t *entries); +                                      gf_dirent_t *entries, dict_t *xdata);  typedef int32_t (*fop_readdirp_cbk_t) (call_frame_t *frame,                                         void *cookie,                                         xlator_t *this,                                         int32_t op_ret,                                         int32_t op_errno, -                                       gf_dirent_t *entries); +                                       gf_dirent_t *entries, dict_t *xdata);  typedef int32_t (*fop_xattrop_cbk_t) (call_frame_t *frame,                                        void *cookie,                                        xlator_t *this,                                        int32_t op_ret,                                        int32_t op_errno, -                                      dict_t *xattr); +                                      dict_t *xattr, dict_t *xdata);  typedef int32_t (*fop_fxattrop_cbk_t) (call_frame_t *frame,                                         void *cookie,                                         xlator_t *this,                                         int32_t op_ret,                                         int32_t op_errno, -                                       dict_t *xattr); +                                       dict_t *xattr, dict_t *xdata);  typedef int32_t (*fop_setattr_cbk_t) (call_frame_t *frame, @@ -415,7 +416,7 @@ typedef int32_t (*fop_setattr_cbk_t) (call_frame_t *frame,                                        int32_t op_ret,                                        int32_t op_errno,                                        struct iatt *preop_stbuf, -                                      struct iatt *postop_stbuf); +                                      struct iatt *postop_stbuf, dict_t *xdata);  typedef int32_t (*fop_fsetattr_cbk_t) (call_frame_t *frame,                                         void *cookie, @@ -423,72 +424,71 @@ typedef int32_t (*fop_fsetattr_cbk_t) (call_frame_t *frame,                                         int32_t op_ret,                                         int32_t op_errno,                                         struct iatt *preop_stbuf, -                                       struct iatt *postop_stbuf); +                                       struct iatt *postop_stbuf, dict_t *xdata);  typedef int32_t (*fop_lookup_t) (call_frame_t *frame,                                   xlator_t *this,                                   loc_t *loc, -                                 dict_t *xattr_req); +                                 dict_t *xdata);  typedef int32_t (*fop_stat_t) (call_frame_t *frame,                                 xlator_t *this, -                               loc_t *loc); +                               loc_t *loc, dict_t *xdata);  typedef int32_t (*fop_fstat_t) (call_frame_t *frame,                                  xlator_t *this, -                                fd_t *fd); +                                fd_t *fd, dict_t *xdata);  typedef int32_t (*fop_truncate_t) (call_frame_t *frame,                                     xlator_t *this,                                     loc_t *loc, -                                   off_t offset); +                                   off_t offset, dict_t *xdata);  typedef int32_t (*fop_ftruncate_t) (call_frame_t *frame,                                      xlator_t *this,                                      fd_t *fd, -                                    off_t offset); +                                    off_t offset, dict_t *xdata);  typedef int32_t (*fop_access_t) (call_frame_t *frame,                                   xlator_t *this,                                   loc_t *loc, -                                 int32_t mask); +                                 int32_t mask, dict_t *xdata);  typedef int32_t (*fop_readlink_t) (call_frame_t *frame,                                     xlator_t *this,                                     loc_t *loc, -                                   size_t size); +                                   size_t size, dict_t *xdata);  typedef int32_t (*fop_mknod_t) (call_frame_t *frame, xlator_t *this,                                  loc_t *loc, mode_t mode, dev_t rdev, -                                dict_t *params); +                                mode_t umask, dict_t *xdata); -typedef int32_t (*fop_mkdir_t) (call_frame_t *frame, xlator_t *this, -                                loc_t *loc, mode_t mode, dict_t *params); +typedef int32_t (*fop_mkdir_t) (call_frame_t *frame, xlator_t *this, loc_t *loc, +                                mode_t mode, mode_t umask, dict_t *xdata); -typedef int32_t (*fop_unlink_t) (call_frame_t *frame, -                                 xlator_t *this, -                                 loc_t *loc); +typedef int32_t (*fop_unlink_t) (call_frame_t *frame, xlator_t *this, +                                 loc_t *loc, int xflags, dict_t *xdata);  typedef int32_t (*fop_rmdir_t) (call_frame_t *frame, xlator_t *this, -                                loc_t *loc, int flags); +                                loc_t *loc, int xflags, dict_t *xdata);  typedef int32_t (*fop_symlink_t) (call_frame_t *frame, xlator_t *this,                                    const char *linkname, loc_t *loc, -                                  dict_t *params); +                                  mode_t umask, dict_t *xdata);  typedef int32_t (*fop_rename_t) (call_frame_t *frame,                                   xlator_t *this,                                   loc_t *oldloc, -                                 loc_t *newloc); +                                 loc_t *newloc, dict_t *xdata);  typedef int32_t (*fop_link_t) (call_frame_t *frame,                                 xlator_t *this,                                 loc_t *oldloc, -                               loc_t *newloc); +                               loc_t *newloc, dict_t *xdata);  typedef int32_t (*fop_create_t) (call_frame_t *frame, xlator_t *this,                                   loc_t *loc, int32_t flags, mode_t mode, -                                 fd_t *fd, dict_t *params); +                                 mode_t umask, fd_t *fd, dict_t *xdata);  /* Tell subsequent writes on the fd_t to fsync after every writev fop without   * requiring a fsync fop. @@ -499,19 +499,16 @@ typedef int32_t (*fop_create_t) (call_frame_t *frame, xlator_t *this,   */  #define GF_OPEN_NOWB    0x02 -typedef int32_t (*fop_open_t) (call_frame_t *frame, -                               xlator_t *this, -                               loc_t *loc, -                               int32_t flags, -                               fd_t *fd, -                               int32_t wbflags); +typedef int32_t (*fop_open_t) (call_frame_t *frame, xlator_t *this, +                               loc_t *loc, int32_t flags, +                               fd_t *fd, dict_t *xdata);  typedef int32_t (*fop_readv_t) (call_frame_t *frame,                                  xlator_t *this,                                  fd_t *fd,                                  size_t size,                                  off_t offset, -                                uint32_t flags); +                                uint32_t flags, dict_t *xdata);  typedef int32_t (*fop_writev_t) (call_frame_t *frame,                                   xlator_t *this, @@ -520,131 +517,131 @@ typedef int32_t (*fop_writev_t) (call_frame_t *frame,                                   int32_t count,                                   off_t offset,                                   uint32_t flags, -                                 struct iobref *iobref); +                                 struct iobref *iobref, dict_t *xdata);  typedef int32_t (*fop_flush_t) (call_frame_t *frame,                                  xlator_t *this, -                                fd_t *fd); +                                fd_t *fd, dict_t *xdata);  typedef int32_t (*fop_fsync_t) (call_frame_t *frame,                                  xlator_t *this,                                  fd_t *fd, -                                int32_t datasync); +                                int32_t datasync, dict_t *xdata);  typedef int32_t (*fop_opendir_t) (call_frame_t *frame,                                    xlator_t *this,                                    loc_t *loc, -                                  fd_t *fd); +                                  fd_t *fd, dict_t *xdata);  typedef int32_t (*fop_fsyncdir_t) (call_frame_t *frame,                                     xlator_t *this,                                     fd_t *fd, -                                   int32_t datasync); +                                   int32_t datasync, dict_t *xdata);  typedef int32_t (*fop_statfs_t) (call_frame_t *frame,                                   xlator_t *this, -                                 loc_t *loc); +                                 loc_t *loc, dict_t *xdata);  typedef int32_t (*fop_setxattr_t) (call_frame_t *frame,                                     xlator_t *this,                                     loc_t *loc,                                     dict_t *dict, -                                   int32_t flags); +                                   int32_t flags, dict_t *xdata);  typedef int32_t (*fop_getxattr_t) (call_frame_t *frame,                                     xlator_t *this,                                     loc_t *loc, -                                   const char *name); +                                   const char *name, dict_t *xdata);  typedef int32_t (*fop_fsetxattr_t) (call_frame_t *frame,                                      xlator_t *this,                                      fd_t *fd,                                      dict_t *dict, -                                    int32_t flags); +                                    int32_t flags, dict_t *xdata);  typedef int32_t (*fop_fgetxattr_t) (call_frame_t *frame,                                      xlator_t *this,                                      fd_t *fd, -                                    const char *name); +                                    const char *name, dict_t *xdata);  typedef int32_t (*fop_removexattr_t) (call_frame_t *frame,                                        xlator_t *this,                                        loc_t *loc, -                                      const char *name); +                                      const char *name, dict_t *xdata);  typedef int32_t (*fop_fremovexattr_t) (call_frame_t *frame,                                         xlator_t *this,                                         fd_t *fd, -                                       const char *name); +                                       const char *name, dict_t *xdata);  typedef int32_t (*fop_lk_t) (call_frame_t *frame,                               xlator_t *this,                               fd_t *fd,                               int32_t cmd, -                             struct gf_flock *flock); +                             struct gf_flock *flock, dict_t *xdata);  typedef int32_t (*fop_inodelk_t) (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);  typedef int32_t (*fop_finodelk_t) (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);  typedef int32_t (*fop_entrylk_t) (call_frame_t *frame,                                    xlator_t *this,                                    const char *volume, loc_t *loc,                                    const char *basename, entrylk_cmd cmd, -                                  entrylk_type type); +                                  entrylk_type type, dict_t *xdata);  typedef int32_t (*fop_fentrylk_t) (call_frame_t *frame,                                     xlator_t *this,                                     const char *volume, fd_t *fd,                                     const char *basename, entrylk_cmd cmd, -                                   entrylk_type type); +                                   entrylk_type type, dict_t *xdata);  typedef int32_t (*fop_readdir_t) (call_frame_t *frame,                                    xlator_t *this,                                    fd_t *fd,                                    size_t size, -                                  off_t offset); +                                  off_t offset, dict_t *xdata);  typedef int32_t (*fop_readdirp_t) (call_frame_t *frame,                                     xlator_t *this,                                     fd_t *fd,                                     size_t size,                                     off_t offset, -                                   dict_t *dict); +                                   dict_t *xdata);  typedef int32_t (*fop_xattrop_t) (call_frame_t *frame,                                    xlator_t *this,                                    loc_t *loc,                                    gf_xattrop_flags_t optype, -                                  dict_t *xattr); +                                  dict_t *xattr, dict_t *xdata);  typedef int32_t (*fop_fxattrop_t) (call_frame_t *frame,                                     xlator_t *this,                                     fd_t *fd,                                     gf_xattrop_flags_t optype, -                                   dict_t *xattr); +                                   dict_t *xattr, dict_t *xdata);  typedef int32_t (*fop_setattr_t) (call_frame_t *frame,                                    xlator_t *this,                                    loc_t *loc,                                    struct iatt *stbuf, -                                  int32_t valid); +                                  int32_t valid, dict_t *xdata);  typedef int32_t (*fop_fsetattr_t) (call_frame_t *frame,                                     xlator_t *this,                                     fd_t *fd,                                     struct iatt *stbuf, -                                   int32_t valid); +                                   int32_t valid, dict_t *xdata);  struct xlator_fops {  | 
