diff options
| author | Sunil Kumar Acharya <sheggodu@redhat.com> | 2017-04-28 18:09:01 +0530 | 
|---|---|---|
| committer | Pranith Kumar Karampuri <pkarampu@redhat.com> | 2017-10-06 01:42:06 +0000 | 
| commit | 12cfc1983fa1521d6da94ad488145182cf97db2c (patch) | |
| tree | 2249e81dd6176d6752b7155c835b0c9988ec505a /libglusterfs/src/dict.c | |
| parent | deea16e59564575d5f211f4fb8e4e5597e570ad1 (diff) | |
cluster/ec: Improve performance with xattrop update
Existing EC code updates the xattr on the subvolume
in a sequential pattern resulting in very poor performance.
With this fix EC now updates the xattr on the subvolume
in parallel which improves the xattr update performance.
BUG: 1445663
Change-Id: I3fc40d66db0b88875ca96a9fa01002ba386c0486
Signed-off-by: Sunil Kumar Acharya <sheggodu@redhat.com>
Diffstat (limited to 'libglusterfs/src/dict.c')
| -rw-r--r-- | libglusterfs/src/dict.c | 25 | 
1 files changed, 23 insertions, 2 deletions
diff --git a/libglusterfs/src/dict.c b/libglusterfs/src/dict.c index c4f3fb71de3..243c92985a8 100644 --- a/libglusterfs/src/dict.c +++ b/libglusterfs/src/dict.c @@ -2321,7 +2321,15 @@ err:          return ret;  } - +/******************************************************************** + * + * dict_set_bin_common: + *      This is the common function to set key and its value in + *      dictionary. Flag(is_static) should be set appropriately based + *      on the type of memory type used for value(*ptr). If flag is set + *      to false value(*ptr) will be freed using GF_FREE() on destroy. + * + *******************************************************************/  static int  dict_set_bin_common (dict_t *this, char *key, void *ptr, size_t size,                       gf_boolean_t is_static) @@ -2353,13 +2361,26 @@ err:          return ret;  } +/******************************************************************** + * + * dict_set_bin: + *      Set key and its value in the dictionary. This function should + *      be called if the value is stored in dynamic memory. + * + *******************************************************************/  int  dict_set_bin (dict_t *this, char *key, void *ptr, size_t size)  {          return dict_set_bin_common (this, key, ptr, size, _gf_false);  } - +/******************************************************************** + * + * dict_set_static_bin: + *      Set key and its value in the dictionary. This function should + *      be called if the value is stored in static memory. + * + *******************************************************************/  int  dict_set_static_bin (dict_t *this, char *key, void *ptr, size_t size)  {  | 
