summaryrefslogtreecommitdiffstats
path: root/xlators/cluster/afr/src/afr-self-heal-metadata.c
diff options
context:
space:
mode:
authorVijay Bellur <vbellur@redhat.com>2013-04-30 00:20:33 +0530
committerAnand Avati <avati@redhat.com>2013-04-30 20:11:37 -0700
commit7967e3e5cfd330190c2bcc45d3a111a1d563a7a0 (patch)
treec0927825df18dec5829c3dad81a5eb9469610733 /xlators/cluster/afr/src/afr-self-heal-metadata.c
parent3b1ecc6a7fd961c709e82862fd4760b223365863 (diff)
cluster/afr: Avoid self-healing extended attribute used by SELinux.
Since removexattr() fails to remove "security.selinux" in a system where SELinux is enforcing, xattr self-healing fails. As a consequence of this, user extended attributes are not being healed. Added a check in afr to prune SELinux xattr from the dictionary used for removing xattrs from the sink. Minor changes in tests and md-cache as well. Signed-off-by: Vijay Bellur <vbellur@redhat.com> Change-Id: I854bfc0098dde812ce2afe64b125ee40c04bdeb1 BUG: 957877 Reviewed-on: http://review.gluster.org/4905 Reviewed-by: Venky Shankar <vshankar@redhat.com> Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Anand Avati <avati@redhat.com>
Diffstat (limited to 'xlators/cluster/afr/src/afr-self-heal-metadata.c')
-rw-r--r--xlators/cluster/afr/src/afr-self-heal-metadata.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/xlators/cluster/afr/src/afr-self-heal-metadata.c b/xlators/cluster/afr/src/afr-self-heal-metadata.c
index c6a183b1a..cc85d9b9f 100644
--- a/xlators/cluster/afr/src/afr-self-heal-metadata.c
+++ b/xlators/cluster/afr/src/afr-self-heal-metadata.c
@@ -243,6 +243,12 @@ afr_sh_removexattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
}
inline void
+afr_prune_special_keys (dict_t *xattr_dict)
+{
+ dict_del (xattr_dict, GF_SELINUX_XATTR_KEY);
+}
+
+inline void
afr_prune_pending_keys (dict_t *xattr_dict, afr_private_t *priv)
{
int i = 0;
@@ -272,6 +278,8 @@ afr_sh_getxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
afr_prune_pending_keys (xattr, priv);
+ afr_prune_special_keys (xattr);
+
i = (long) cookie;
/* send removexattr in bulk via xdata */