diff options
Diffstat (limited to 'libglusterfs/src/syncop.c')
-rw-r--r-- | libglusterfs/src/syncop.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/libglusterfs/src/syncop.c b/libglusterfs/src/syncop.c index 58477770368..3db6fae6b00 100644 --- a/libglusterfs/src/syncop.c +++ b/libglusterfs/src/syncop.c @@ -3175,6 +3175,8 @@ syncop_xattrop_cbk (call_frame_t *frame, void *cookie, xlator_t *this, args->op_errno = op_errno; if (xdata) args->xdata = dict_ref (xdata); + if (dict) + args->dict_out = dict_ref (dict); __wake (args); @@ -3184,7 +3186,8 @@ syncop_xattrop_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int syncop_xattrop (xlator_t *subvol, loc_t *loc, gf_xattrop_flags_t flags, - dict_t *dict, dict_t *xdata_in, dict_t **xdata_out) + dict_t *dict, dict_t *xdata_in, dict_t **dict_out, + dict_t **xdata_out) { struct syncargs args = {0, }; @@ -3196,6 +3199,11 @@ syncop_xattrop (xlator_t *subvol, loc_t *loc, gf_xattrop_flags_t flags, else if (args.xdata) dict_unref (args.xdata); + if (dict_out) + *dict_out = args.dict_out; + else if (args.dict_out) + dict_unref (args.dict_out); + if (args.op_ret < 0) return -args.op_errno; @@ -3204,7 +3212,8 @@ syncop_xattrop (xlator_t *subvol, loc_t *loc, gf_xattrop_flags_t flags, int syncop_fxattrop (xlator_t *subvol, fd_t *fd, gf_xattrop_flags_t flags, - dict_t *dict, dict_t *xdata_in, dict_t **xdata_out) + dict_t *dict, dict_t *xdata_in, dict_t **dict_out, + dict_t **xdata_out) { struct syncargs args = {0, }; @@ -3216,6 +3225,11 @@ syncop_fxattrop (xlator_t *subvol, fd_t *fd, gf_xattrop_flags_t flags, else if (args.xdata) dict_unref (args.xdata); + if (dict_out) + *dict_out = args.dict_out; + else if (args.dict_out) + dict_unref (args.dict_out); + if (args.op_ret < 0) return -args.op_errno; |