diff options
author | Pranith Kumar K <pkarampu@redhat.com> | 2014-11-06 10:37:06 +0530 |
---|---|---|
committer | Niels de Vos <ndevos@redhat.com> | 2015-02-12 04:08:12 -0800 |
commit | 6e4e21c689c2e4b96a564afb2f0a3972e7829a53 (patch) | |
tree | c772b97fcbd68fbc48c97a1f8e119ecdb3109ec1 /xlators/cluster/afr/src | |
parent | bb8845d3bd94f94a1302bb50811be209a7253dcb (diff) |
features/marker: Filter internal xattrs in lookup
Backport of http://review.gluster.com/9061
Afr should ignore quota-size-key as part of self-heal
but should heal quota-limit key.
BUG: 1162230
Change-Id: I639cfabbc44468da29914096afc7e2eca1ff1292
Signed-off-by: Pranith Kumar K <pkarampu@redhat.com>
Reviewed-on: http://review.gluster.org/9091
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Ravishankar N <ravishankar@redhat.com>
Reviewed-by: Raghavendra G <rgowdapp@redhat.com>
Reviewed-by: Krutika Dhananjay <kdhananj@redhat.com>
Reviewed-by: Niels de Vos <ndevos@redhat.com>
Diffstat (limited to 'xlators/cluster/afr/src')
-rw-r--r-- | xlators/cluster/afr/src/afr-common.c | 6 | ||||
-rw-r--r-- | xlators/cluster/afr/src/afr-self-heal-metadata.c | 34 | ||||
-rw-r--r-- | xlators/cluster/afr/src/afr.h | 3 |
3 files changed, 20 insertions, 23 deletions
diff --git a/xlators/cluster/afr/src/afr-common.c b/xlators/cluster/afr/src/afr-common.c index 609f19600f9..561b74cc950 100644 --- a/xlators/cluster/afr/src/afr-common.c +++ b/xlators/cluster/afr/src/afr-common.c @@ -1847,8 +1847,8 @@ static char *afr_ignore_xattrs[] = { }; -static gf_boolean_t -afr_lookup_xattr_ignorable (char *key) +gf_boolean_t +afr_is_xattr_ignorable (char *key) { int i = 0; @@ -1867,7 +1867,7 @@ xattr_is_equal (dict_t *this, char *key1, data_t *value1, void *data) dict_t *xattr2 = (dict_t *)data; data_t *value2 = NULL; - if (afr_lookup_xattr_ignorable (key1)) + if (afr_is_xattr_ignorable (key1)) return 0; value2 = dict_get (xattr2, key1); diff --git a/xlators/cluster/afr/src/afr-self-heal-metadata.c b/xlators/cluster/afr/src/afr-self-heal-metadata.c index 829a8c35da6..d158804c28f 100644 --- a/xlators/cluster/afr/src/afr-self-heal-metadata.c +++ b/xlators/cluster/afr/src/afr-self-heal-metadata.c @@ -39,6 +39,18 @@ #include "afr-self-heal.h" #include "afr-self-heal-common.h" +static gf_boolean_t +_afr_ignorable_key_match (dict_t *d, char *k, data_t *val, void *mdata) +{ + return afr_is_xattr_ignorable (k); +} + +void +afr_delete_ignorable_xattrs (dict_t *xattr) +{ + dict_foreach_match (xattr, _afr_ignorable_key_match, NULL, + dict_remove_foreach_fn, NULL); +} int afr_sh_metadata_done (call_frame_t *frame, xlator_t *this) @@ -239,22 +251,6 @@ afr_sh_removexattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, return 0; } -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; - - for (; i < priv->child_count; i++) { - dict_del (xattr_dict, priv->pending_key[i]); - } -} - int afr_sh_getxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret, int32_t op_errno, dict_t *xattr, @@ -273,9 +269,7 @@ afr_sh_getxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, goto out; } - afr_prune_pending_keys (xattr, priv); - - afr_prune_special_keys (xattr); + afr_delete_ignorable_xattrs (xattr); i = (long) cookie; @@ -396,7 +390,7 @@ afr_sh_metadata_getxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, afr_sh_metadata_sync (frame, this, NULL); } else { - afr_prune_pending_keys (xattr, priv); + afr_delete_ignorable_xattrs (xattr); afr_sh_metadata_sync (frame, this, xattr); } diff --git a/xlators/cluster/afr/src/afr.h b/xlators/cluster/afr/src/afr.h index aa42513c8ff..e704dc2e929 100644 --- a/xlators/cluster/afr/src/afr.h +++ b/xlators/cluster/afr/src/afr.h @@ -1249,4 +1249,7 @@ gf_boolean_t afr_can_start_metadata_self_heal (afr_local_t *local, afr_private_t *priv); void afr_remove_eager_lock_stub (afr_local_t *local); + +gf_boolean_t +afr_is_xattr_ignorable (char *key); #endif /* __AFR_H__ */ |