diff options
author | Pranith Kumar K <pkarampu@redhat.com> | 2015-01-05 16:21:52 +0530 |
---|---|---|
committer | Pranith Kumar Karampuri <pkarampu@redhat.com> | 2015-01-08 21:55:37 -0800 |
commit | 70dc47389cbe08238d8c216c51d49583154bd08a (patch) | |
tree | f5da9dff6260291a7972e590d12ba785ed0841a1 /xlators/cluster/ec/src/ec-helpers.c | |
parent | cf0770c61af2fa49fa435baf62cd5f28569175e4 (diff) |
cluster/ec: Handle internal xattr get/set
Problem:
Internal xattrs of EC like trusted.ec.size/config/version
can be modified by users and that can lead to misbehavior
in EC.
Fix:
Don't let the user modify the xattrs. Hide these xattrs
in getfattr outputs.
Change-Id: I39cec96ae12826b506b496fda7da74201015fd75
BUG: 1178688
Signed-off-by: Pranith Kumar K <pkarampu@redhat.com>
Reviewed-on: http://review.gluster.org/9385
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Emmanuel Dreyfus <manu@netbsd.org>
Tested-by: Emmanuel Dreyfus <manu@netbsd.org>
Reviewed-by: Xavier Hernandez <xhernandez@datalab.es>
Diffstat (limited to 'xlators/cluster/ec/src/ec-helpers.c')
-rw-r--r-- | xlators/cluster/ec/src/ec-helpers.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/xlators/cluster/ec/src/ec-helpers.c b/xlators/cluster/ec/src/ec-helpers.c index 3c3e2302e53..05ecab51ab6 100644 --- a/xlators/cluster/ec/src/ec-helpers.c +++ b/xlators/cluster/ec/src/ec-helpers.c @@ -694,3 +694,20 @@ uint64_t ec_adjust_size(ec_t * ec, uint64_t size, int32_t scale) return size; } + +inline gf_boolean_t +ec_is_internal_xattr (dict_t *dict, char *key, data_t *value, void *data) +{ + if (key && + (strncmp (key, EC_XATTR_PREFIX, strlen (EC_XATTR_PREFIX)) == 0)) + return _gf_true; + + return _gf_false; +} + +void +ec_filter_internal_xattrs (dict_t *xattr) +{ + dict_foreach_match (xattr, ec_is_internal_xattr, NULL, + dict_remove_foreach_fn, NULL); +} |