diff options
author | vmallika <vmallika@redhat.com> | 2015-12-28 17:33:26 +0530 |
---|---|---|
committer | Raghavendra G <rgowdapp@redhat.com> | 2015-12-29 08:28:03 -0800 |
commit | 72e736613169b778daa44e932443aaf2436432d9 (patch) | |
tree | 46354c92848e049bc47af65686f2e52611bc7317 /xlators/cluster | |
parent | 4c1b66720121ca97ccfac3e09f93519f2f07ddfd (diff) |
quota: limit xattr for subdir not healed on newly added bricks
DHT after creating missing directory, tries to heal the
xattrs. This xattrs operation fails as INTERNAL FOP key was not set
Change-Id: I819d373cf7073da014143d9ada908228ddcd140c
BUG: 1294479
Signed-off-by: vmallika <vmallika@redhat.com>
Reviewed-on: http://review.gluster.org/13100
Reviewed-by: Susant Palai <spalai@redhat.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Raghavendra G <rgowdapp@redhat.com>
Tested-by: NetBSD Build System <jenkins@build.gluster.org>
Diffstat (limited to 'xlators/cluster')
-rw-r--r-- | xlators/cluster/dht/src/dht-selfheal.c | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/xlators/cluster/dht/src/dht-selfheal.c b/xlators/cluster/dht/src/dht-selfheal.c index 3d42b0f410f..27b5d439add 100644 --- a/xlators/cluster/dht/src/dht-selfheal.c +++ b/xlators/cluster/dht/src/dht-selfheal.c @@ -646,6 +646,7 @@ dht_selfheal_dir_xattr_persubvol (call_frame_t *frame, loc_t *loc, { xlator_t *subvol = NULL; dict_t *xattr = NULL; + dict_t *xdata = NULL; int ret = 0; xlator_t *this = NULL; int32_t *disk_layout = NULL; @@ -674,6 +675,19 @@ dht_selfheal_dir_xattr_persubvol (call_frame_t *frame, loc_t *loc, goto err; } + xdata = dict_new (); + if (!xdata) + goto err; + + ret = dict_set_str (xdata, GLUSTERFS_INTERNAL_FOP_KEY, "yes"); + if (ret < 0) { + gf_msg (this->name, GF_LOG_WARNING, 0, DHT_MSG_DICT_SET_FAILED, + "%s: Failed to set dictionary value: key = %s," + " gfid = %s", loc->path, + GLUSTERFS_INTERNAL_FOP_KEY, gfid); + goto err; + } + gf_uuid_unparse(loc->inode->gfid, gfid); ret = dht_disk_layout_extract (this, layout, i, &disk_layout); @@ -723,9 +737,10 @@ dht_selfheal_dir_xattr_persubvol (call_frame_t *frame, loc_t *loc, STACK_WIND (frame, dht_selfheal_dir_xattr_cbk, subvol, subvol->fops->setxattr, - loc, xattr, 0, NULL); + loc, xattr, 0, xdata); dict_unref (xattr); + dict_unref (xdata); return 0; @@ -733,6 +748,9 @@ err: if (xattr) dict_destroy (xattr); + if (xdata) + dict_unref (xdata); + GF_FREE (disk_layout); dht_selfheal_dir_xattr_cbk (frame, subvol, frame->this, |