diff options
author | karthik-us <ksubrahm@redhat.com> | 2018-04-26 12:38:23 +0530 |
---|---|---|
committer | karthik-us <ksubrahm@redhat.com> | 2018-04-27 11:57:47 +0530 |
commit | aa981531458a6d6e279f9a9a26f7c61b24cc14ab (patch) | |
tree | a165f07b43799cf7b2cc8bf80520cabf78b2344c /xlators | |
parent | 69c35dbb4b3b92c60cbce8dff58e9d1399820b0d (diff) |
libglusterfs: Capture the dict response in syncop_xattrop_cbk
Problem:
Currently it is not possible to capture the xattrs values which
are set on the bricks by calling syncop_(f)xattrop, because the
response dict is not being assigned to any of the dictionaries.
Fix:
In the xattrop callback capture the response dict and send it
back to the caller if it is requested.
Change-Id: I9de9bcd97d6008091c9b060bcca3676cb9ae8ef9
fixes: bz#1572076
Signed-off-by: karthik-us <ksubrahm@redhat.com>
Diffstat (limited to 'xlators')
-rw-r--r-- | xlators/cluster/ec/src/ec-heal.c | 2 | ||||
-rwxr-xr-x | xlators/experimental/fdl/src/gen_recon.py | 4 | ||||
-rw-r--r-- | xlators/features/marker/src/marker-quota.c | 8 |
3 files changed, 9 insertions, 5 deletions
diff --git a/xlators/cluster/ec/src/ec-heal.c b/xlators/cluster/ec/src/ec-heal.c index d1e40607e33..2ff713b7bbd 100644 --- a/xlators/cluster/ec/src/ec-heal.c +++ b/xlators/cluster/ec/src/ec-heal.c @@ -2136,7 +2136,7 @@ ec_data_undo_pending (call_frame_t *frame, ec_t *ec, fd_t *fd, dict_t *xattr, } ret = syncop_fxattrop (ec->xl_list[idx], fd, - GF_XATTROP_ADD_ARRAY64, xattr, NULL, NULL); + GF_XATTROP_ADD_ARRAY64, xattr, NULL, NULL, NULL); out: return ret; } diff --git a/xlators/experimental/fdl/src/gen_recon.py b/xlators/experimental/fdl/src/gen_recon.py index 295df699f6e..af1765517f3 100755 --- a/xlators/experimental/fdl/src/gen_recon.py +++ b/xlators/experimental/fdl/src/gen_recon.py @@ -145,6 +145,10 @@ def get_special_subs (name, args, fop_type): elif name == 'symlink': # Swap 'linkpath' and 'loc'. s_args_str = '&loc, linkpath, &iatt, xdata' + elif name == 'xattrop': + s_args_str = '&loc, flags, dict, xdata, NULL' + elif name == 'fxattrop': + s_args_str = 'fd, flags, dict, xdata, NULL' else: s_args_str = string.join (s_args, ", ") return code, links, s_args_str, cleanups diff --git a/xlators/features/marker/src/marker-quota.c b/xlators/features/marker/src/marker-quota.c index b4c3eb395bd..b6bf2fb36a4 100644 --- a/xlators/features/marker/src/marker-quota.c +++ b/xlators/features/marker/src/marker-quota.c @@ -475,7 +475,7 @@ mq_create_size_xattrs (xlator_t *this, quota_inode_ctx_t *ctx, loc_t *loc) ret = syncop_xattrop (FIRST_CHILD(this), loc, GF_XATTROP_ADD_ARRAY64_WITH_DEFAULT, dict, NULL, - NULL); + NULL, NULL); if (ret < 0) { gf_log_callingfn (this->name, (-ret == ENOENT || -ret == ESTALE) @@ -601,7 +601,7 @@ mq_get_set_dirty (xlator_t *this, loc_t *loc, int32_t dirty, } ret = syncop_xattrop (FIRST_CHILD(this), loc, GF_XATTROP_GET_AND_SET, - dict, NULL, &rsp_dict); + dict, NULL, NULL, &rsp_dict); if (ret < 0) { gf_log_callingfn (this->name, (-ret == ENOENT || -ret == ESTALE) ? GF_LOG_DEBUG:GF_LOG_ERROR, "xattrop failed " @@ -956,7 +956,7 @@ mq_update_contri (xlator_t *this, loc_t *loc, inode_contribution_t *contri, goto out; ret = syncop_xattrop(FIRST_CHILD(this), loc, GF_XATTROP_ADD_ARRAY64, - dict, NULL, NULL); + dict, NULL, NULL, NULL); if (ret < 0) { gf_log_callingfn (this->name, (-ret == ENOENT || -ret == ESTALE) ? GF_LOG_DEBUG:GF_LOG_ERROR, "xattrop failed " @@ -1015,7 +1015,7 @@ mq_update_size (xlator_t *this, loc_t *loc, quota_meta_t *delta) ret = syncop_xattrop(FIRST_CHILD(this), loc, GF_XATTROP_ADD_ARRAY64_WITH_DEFAULT, dict, NULL, - NULL); + NULL, NULL); if (ret < 0) { gf_log_callingfn (this->name, (-ret == ENOENT || -ret == ESTALE) ? GF_LOG_DEBUG:GF_LOG_ERROR, "xattrop failed " |