summaryrefslogtreecommitdiffstats
path: root/xlators/cluster
Commit message (Collapse)AuthorAgeFilesLines
* cluster/afr: Prevent double big lock when data self-heal loops are not spawnedPranith Kumar K2011-09-062-7/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The steps in normal data self heal: 1) take big lock by self-heal frame. Get the xattrs/stat to decide source, sink information. 2) spawn loop frames which perform self-heal by taking small locks on the file. Every time a new lock is taken and the old lock is released. 3) Before releasing the final small lock a big lock is taken by the self-heal frame, and unlock on small-lock. Erasing of the pending xattrs happen then the big unlock happen and that is the end of the data self-heal. When a data self-heal is needed for a file and the fop that triggers the self-heal is open with O_TRUNC. Fuse sends open then an explicit truncate for this. Open triggers the self-heal but by the time it tries to spawn the loops the file size is truncated to 0, so no loops are formed. These are the steps: 1) Take big lock by self-heal frame. Get the xattrs/stat to decide source, sink information. 2) loop frames are not spawned. The big lock is not released. 3) One more big lock is taken by the same self-heal frame, Erasing of the pending xattrs etc happen, now it does two big unlocks, but after the first unlock, the information on which the locks were performed is forgotten, so the next unlock becomes a no-op. So there is a stale big lock on that file preventing further writes. As a fix, if the loops are not spawned, use the previous big lock to perform the rest of the operations needed in completing the data self-heal. No need to have one more big lock. Change-Id: Id03171269594e447b2b6d1331e362d83bd1e3430 BUG: 3506 Reviewed-on: http://review.gluster.com/339 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Anand Avati <avati@gluster.com>
* cluster/afr: Bring down the self-heal window size to 1Pranith Kumar K2011-09-061-1/+1
| | | | | | | | | | | | This is brought in an effort to be nice to the system resources when self-heal is in progress. Change-Id: I123f1eb4d8000613a35c0117f0aa27f926f3a921 BUG: 3503 Reviewed-on: http://review.gluster.com/333 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Vijay Bellur <vijay@gluster.com> Reviewed-by: Anand Avati <avati@gluster.com>
* cluster/distribute: unwind the proper dict in getxattr_cbkAmar Tumballi2011-08-231-1/+4
| | | | | | | | | | without which, quota would get confused about the total size Change-Id: I0fb822ee67e3c1585f783ae35292fe71c47ee249 BUG: 3421 Reviewed-on: http://review.gluster.com/304 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Vijay Bellur <vijay@gluster.com>
* cluster/afr: Perform flush on all the children involved in self-healPranith Kumar K2011-08-221-19/+6
| | | | | | | | Change-Id: I66362a3087a635fb7b759d7836a1f6564a6a7fc9 BUG: 3456 Reviewed-on: http://review.gluster.com/294 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Vijay Bellur <vijay@gluster.com>
* cluster/afr: Change definition of stale childPranith Kumar K2011-08-221-1/+1
| | | | | | | | | | | | The code is checking for priv->child_up[i], which can change while the fop is in progress. Since pending[child][id-of-transaction] alone is enough to tell if the child became stale or not, use just that. Change-Id: I494bf02cca66f4fd41526195fafce86a202c6bd1 BUG: 3455 Reviewed-on: http://review.gluster.com/293 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Vijay Bellur <vijay@gluster.com>
* cluster/afr: Paused fop should not continue with fopPranith Kumar K2011-08-223-3/+11
| | | | | | | | Change-Id: Idce22a6266c354e327d5d717715d2e62533eec58 BUG: 3448 Reviewed-on: http://review.gluster.com/292 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Vijay Bellur <vijay@gluster.com>
* cluster/afr: fop should not continue if it is paused, until resumesPranith Kumar K2011-08-212-0/+8
| | | | | | | | | Change-Id: Ie026ebed98cf5ff75ae1a13437d29f67d0e0254a BUG: 3448 Reviewed-on: http://review.gluster.com/286 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Raghavendra Bhat <raghavendrabhat@gluster.com> Reviewed-by: Vijay Bellur <vijay@gluster.com>
* cluster/afr: set frame localPranith Kumar K2011-08-212-1/+2
| | | | | | | | | Change-Id: I861b3c4494735b0ba6e038cdc39c50b9866747a8 BUG: 3448 Reviewed-on: http://review.gluster.com/283 Reviewed-by: Raghavendra Bhat <raghavendrabhat@gluster.com> Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Vijay Bellur <vijay@gluster.com>
* cluster/afr: Perform self-heal without locking the whole filePranith Kumar K2011-08-2019-1726/+1580
| | | | | | | | Change-Id: I206571c77f2d7b3c9f9d7bb82a936366fd99ce5c BUG: 3182 Reviewed-on: http://review.gluster.com/141 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Vijay Bellur <vijay@gluster.com>
* cluster/afr: Update fresh_children in lookup if no other ops in progressPranith Kumar K2011-08-199-115/+236
| | | | | | | | | | | | | If write/truncate fails we should remove the child that failed the fop from the fresh children. The previous code assumes that the children that succeeded the fop are fresh children, which is wrong. Fixed that in this patch. Change-Id: I1e6e21e20faea00516a0fdd2e95f2d7e9cf9076d BUG: 3411 Reviewed-on: http://review.gluster.com/263 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Vijay Bellur <vijay@gluster.com>
* option validation: further fixesAnand Avati2011-08-191-0/+15
| | | | | | | | | | fixes in option handling changes Change-Id: I0a44cdb088e3f08cd43d583a580736d0903fa88c BUG: 3415 Reviewed-on: http://review.gluster.com/261 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Anand Avati <avati@gluster.com>
* xlator options: revamp xlator option validation/reconfigure codeAnand Avati2011-08-183-778/+139
| | | | | | | | | | | | | | | | | - move option handling to options.c (new file) - remove duplication of option validation code - remove duplication of gf_log / sprintf - get rid of xlator_t->validate_options - get rid of option validation in rpc-transport - get rid of validate_options() in every xlator - use xlator_volume_option_get to clean up many functions - introduce primitives to init/reconfigure option types Change-Id: I51798af72c8dc0a2b9e017424036eb3667dfc7ff BUG: 3415 Reviewed-on: http://review.gluster.com/235 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Anand Avati <avati@gluster.com>
* allocate extra bytes (for \0) when calling reallocVenky Shankar2011-08-171-1/+2
| | | | | | | | | | | | We use strcat to concat pathinfo strings. strcat appends a \0 at the end. Therefore allocate extra bytes for the same to avoid asserts being hit during gf_free call Change-Id: I582f5858e7375a5bacfc5c702c612ee09c3bb355 BUG: 3413 Reviewed-on: http://review.gluster.com/249 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Amar Tumballi <amar@gluster.com>
* adjust allocated length to memory overrun fixVenky Shankar2011-08-151-3/+4
| | | | | | | | | | | size of the allocated length is incorrectly calculated which could cause memory overrun while filling the buffer Change-Id: I4fbdbd1fff937ca15bae9f634ef5757dda52caa8 BUG: 3413 Reviewed-on: http://review.gluster.com/236 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Anand Avati <avati@gluster.com>
* cluster/afr: read_child should be >= 0v3.3.0qa2Pranith Kumar K2011-08-131-1/+3
| | | | | | | | Change-Id: I447fb6a93cdd77de322cd5ded30673411c4cf79e BUG: 3251 Reviewed-on: http://review.gluster.com/233 Reviewed-by: Vijay Bellur <vijay@gluster.com> Tested-by: Gluster Build System <jenkins@build.gluster.com>
* Change Copyright current yearPranith Kumar K2011-08-1054-54/+54
| | | | | | | | Change-Id: I2d10f2be44f518f496427f257988f1858e888084 BUG: 3348 Reviewed-on: http://review.gluster.com/200 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Anand Avati <avati@gluster.com>
* LICENSE: s/GNU Affero General Public/GNU General Public/Pranith Kumar K2011-08-0655-165/+165
| | | | | | | | Change-Id: I3914467611e573cccee0d22df93920cf1b2eb79f BUG: 3348 Reviewed-on: http://review.gluster.com/182 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Anand Avati <avati@gluster.com>
* cluster/dht: clear local->cached_subvol when switching to do_fresh_lookupAnand Avati2011-08-061-0/+1
| | | | | | | | | | | | The presence of local->cached_subvol makes dht_lookup_everywhere_done behave as though it was a lookup on a file where linkfile needs to be recreated. In a fresh lookup, local->cached_subvol should be NULL. Change-Id: Ie6bd6ad536def03d970526d51e20c6daeb00922b BUG: 3317 Reviewed-on: http://review.gluster.com/187 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Anand Avati <avati@gluster.com>
* storage/posix: handle dictionary being NULL in a functionAmar Tumballi2011-08-031-1/+1
| | | | | | | | | | | also print a warning message if dictionary is NULL, while sending a mkdir request in distribute self-heal. Change-Id: Ib9cac6ed1635203802f089986f8acb1ce416265d BUG: 3215 Reviewed-on: http://review.gluster.com/136 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Shishir Gowda <shishirng@gluster.com>
* DHT rename: Recreate linkfile after unlinkshishir gowda2011-08-033-144/+50
| | | | | | | | | | | | | This is done, so that there is no gfid mismatch. Unlink the older linkfile if it exists, and recreate it with the correct gfid. Also removed unused rename related code. Change-Id: Ice0cdff51db786dafb1a019f7642c7d000e8c5f3 BUG: 2522 Reviewed-on: http://review.gluster.com/142 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Anand Avati <avati@gluster.com>
* Stripe_readdirp: Fix race in wind/unwind which led to crashshishir2011-07-281-9/+17
| | | | | | | | | | | | | | | | | | Scenario - The race window exists when before we wind to a stat call in readdirp_cbk, whereas stats have returned to cbk. We would free up local, which leads to a crash. Fix - We assume all entries to be regular files, and set the wind_count as a multiple of entries * subvol (stat calls). When we encounter a non regular file, we decrement the windcount accordingly (subvol times). If the last entry happens to be a non-regular file, and all stat calls have wound back, we unwind from here itself. Change-Id: Ia8e225ef557cbe1fedb9b72de9bd9fa61f371a24 BUG: 3257 Reviewed-on: http://review.gluster.com/115 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Amar Tumballi <amar@gluster.com>
* cluster/distribute: while fixing layout, consider ENOSPC errorsAmar Tumballi2011-07-261-4/+4
| | | | | | | | | | | | | in case of layout 'creation', layout->err == ENOSPC should be ignored where as, while layout 'fixing' we should consider what was already present in the layout. Change-Id: Ifb613b41065813c9f1202e65e94b4b0282766d11 BUG: 2258 Signed-off-by: Amar Tumballi <amar@gluster.com> Reviewed-on: http://review.gluster.com/15 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Shishir Gowda <shishirng@gluster.com>
* cluster/dht: dht_rename() - handle GFID situationsAnand Avati2011-07-251-14/+61
| | | | | | | | | | | | In the pre-GFID era, the linkfile of the destination file could be reused the linkfile for the renamed file when dst_cached == src_cached. This patch handles this situation and reverts the previous (wrong) fix. Change-Id: Iba57b5eb91cf8b1fb40e74f6399cdf99b8b00410 BUG: 2464 Reviewed-on: http://review.gluster.com/90 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Amar Tumballi <amar@gluster.com>
* PUMP: set pump lk_owner,pid to frame->rootPranith K2011-07-172-9/+8
| | | | | | | | Signed-off-by: Pranith Kumar K <pranithk@gluster.com> Signed-off-by: Anand Avati <avati@gluster.com> BUG: 3182 (Afr self-heal should happen with out big lock) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=3182
* cluster/afr: Don't depend on fuse lk_owner for inodelksPranith K2011-07-172-8/+6
| | | | | | | | Signed-off-by: Pranith Kumar K <pranithk@gluster.com> Signed-off-by: Anand Avati <avati@gluster.com> BUG: 3182 (Afr self-heal should happen with out big lock) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=3182
* cluster/afr: Fix conflict files and gfid self-healPranith K2011-07-177-600/+811
| | | | | | | | Signed-off-by: Pranith Kumar K <pranithk@gluster.com> Signed-off-by: Anand Avati <avati@gluster.com> BUG: 2745 (failure to detect split brain) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=2745
* cluster/afr: Detect conflict/gfid self-healsPranith K2011-07-176-161/+532
| | | | | | | | | | Added some helper functions that can be reused Signed-off-by: Pranith Kumar K <pranithk@gluster.com> Signed-off-by: Anand Avati <avati@gluster.com> BUG: 2745 (failure to detect split brain) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=2745
* cluster/afr: make expunge/impunge re-usablePranith K2011-07-172-64/+176
| | | | | | | | Signed-off-by: Pranith Kumar K <pranithk@gluster.com> Signed-off-by: Anand Avati <avati@gluster.com> BUG: 2745 (failure to detect split brain) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=2745
* cluster/afr: Choose next call child from fresh-children for inode-read-fopsPranith K2011-07-177-442/+391
| | | | | | | | Signed-off-by: Pranith Kumar K <pranithk@gluster.com> Signed-off-by: Anand Avati <avati@gluster.com> BUG: 2840 (files not getting self-healed when the first child goes down) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=2840
* cluster/afr: Add fresh children along with read-child to inode contextPranith K2011-07-1716-353/+817
| | | | | | | | Signed-off-by: Pranith Kumar K <pranithk@gluster.com> Signed-off-by: Anand Avati <avati@gluster.com> BUG: 2840 (files not getting self-healed when the first child goes down) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=2840
* cluster/afr: Move afr local alloc functions from header files to sourcesPranith K2011-07-172-105/+124
| | | | | | | | Signed-off-by: Pranith Kumar K <pranithk@gluster.com> Signed-off-by: Anand Avati <avati@gluster.com> BUG: 2840 (files not getting self-healed when the first child goes down) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=2840
* cluster/stripe: send the xattr keys with create/mknod itself.Amar Tumballi2011-07-141-189/+177
| | | | | | | | | | so stripe is more acl friendly Signed-off-by: Amar Tumballi <amar@gluster.com> Signed-off-by: Anand Avati <avati@gluster.com> BUG: 3160 ([818f8c87d56bc46d0d0903275699351b66f17e57] Posix compliance test hangs during link tests in distributed-stripe.) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=3160
* distribute: bring in feature to do rebalance from insideAmar Tumballi2011-07-148-15/+600
| | | | | | | | | | | | | | | | do the 'rebalance' on a file with 'setxattr()' with 'distribute.migrate-data' key. the valid 'value' is "force" or anything else. current implementation of 'rebalance' is same as 'glusterd-rebalance', and hence comes with limitation of not rebalancing hardlinks, non-regular files, and files with open-fds. Signed-off-by: Amar Tumballi <amar@gluster.com> Signed-off-by: Anand Avati <avati@gluster.com> BUG: 3070 (After 'rebalance', the gfid of the file gets changed) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=3070
* cluster/distribute: bring in directory-spread-count optionAmar Tumballi2011-07-145-4/+80
| | | | | | | | | | global spread count option is given through volume file Signed-off-by: Amar Tumballi <amar@gluster.com> Signed-off-by: Anand Avati <avati@gluster.com> BUG: 2257 (enhance distribute to control the spread count (ie, control the hashing range)) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=2257
* cluster/distribute: handle layout overlaps while giving a new fixAmar Tumballi2011-07-143-59/+297
| | | | | | | | Signed-off-by: Amar Tumballi <amar@gluster.com> Signed-off-by: Anand Avati <avati@gluster.com> BUG: 2258 (enhance gluster volume rebalance) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=2258
* DHT access: For nfs calls, op_ret is always 0, and mode is op_errnoshishir gowda2011-07-131-1/+10
| | | | | | | | | | | | | Return the values received from the subvol Signed-off-by: shishir gowda <shishirng@gluster.com> Signed-off-by: Anand Avati <avati@gluster.com> BUG: 3057 (acl permissions don't work on nfs mount) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=3057 BUG: 3057 (acl permissions don't work on nfs mount) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=3057
* stripe: changes in volume_options to assist volume set help/help-xmlKaushik BV2011-07-121-5/+47
| | | | | | | | Signed-off-by: Kaushik BV <kaushikbv@gluster.com> Signed-off-by: Anand Avati <avati@gluster.com> BUG: 2041 (volume set help option) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=2041
* dht: changes in volume_options to assist volume set help/help-xmlKaushik BV2011-07-121-3/+26
| | | | | | | | Signed-off-by: Kaushik BV <kaushikbv@gluster.com> Signed-off-by: Anand Avati <avati@gluster.com> BUG: 2041 (volume set help option) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=2041
* afr: changes in volume_options to assist volume set help/help-xmlKaushik BV2011-07-121-6/+40
| | | | | | | | Signed-off-by: Kaushik BV <kaushikbv@gluster.com> Signed-off-by: Anand Avati <avati@gluster.com> BUG: 2041 (volume set help option) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=2041
* afr/stripe: collect pathinfo xattrs from all childsVenky Shankar2011-07-127-17/+357
| | | | | | | | Signed-off-by: Venky Shankar <venky@gluster.com> Signed-off-by: Anand Avati <avati@gluster.com> BUG: 3046 (getxattr for afr should returns realpath from all childs) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=3046
* cluster/afr: Handle lookups when self-heal is offPranith K2011-07-129-513/+996
| | | | | | | | Signed-off-by: Pranith Kumar K <pranithk@gluster.com> Signed-off-by: Anand Avati <avati@gluster.com> BUG: 2586 (read child is set without checking the xattr) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=2586
* cluster/stripe: quick-read friendly behavior in lookupAmar Tumballi2011-07-121-5/+22
| | | | | | | | Signed-off-by: Amar Tumballi <amar@gluster.com> Signed-off-by: Anand Avati <avati@gluster.com> BUG: 3140 (contents of files are invalid after apply patch 7573) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=3140
* cluster/stripe: cleanup and memory leak fixesAmar Tumballi2011-07-121-118/+56
| | | | | | | | Signed-off-by: Amar Tumballi <amar@gluster.com> Signed-off-by: Anand Avati <avati@gluster.com> BUG: 3140 (contents of files are invalid after apply patch 7573) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=3140
* cluster/distribute: send proper 'params' dictionary during linkfile creationAmar Tumballi2011-07-121-4/+13
| | | | | | | | | | | | when the code path enters the 'subvol_filled()' case, local->params is set, which contains the 'gfid-req' value, but the linkfile creation was not checking for its existance. Signed-off-by: Amar Tumballi <amar@gluster.com> Signed-off-by: Anand Avati <avati@gluster.com> BUG: 3159 (mknod (linkfile creation) with no 'gfid-req' key) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=3159
* pump, afr: dict related memory fixes.Krishnan P2011-07-123-42/+106
| | | | | | | | Signed-off-by: Krishnan Parthasarathi <kp@gluster.com> Signed-off-by: Anand Avati <avati@gluster.com> BUG: 2489 (GlusterFS crashing with replace-brick) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=2489
* cluster/dht: fix race between two directory renamesAnand Avati2011-07-121-7/+79
| | | | | | | | | let the race get arbitrated at the dst_hashed subvolume. Signed-off-by: Anand Avati <avati@gluster.com> BUG: 2522 ([glusterfs-3.1.3qa8]: rm -rf shows invalid argument) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=2522
* dht: set linkto xattr with linkfile create (mknod)Anand Avati2011-07-081-75/+13
| | | | | | | Signed-off-by: Anand Avati <avati@gluster.com> BUG: 2815 (Server-enforced ACLs) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=2815
* dht disk usage: Correct free blk calculationshishir gowda2011-07-071-2/+2
| | | | | | | | | | | | | | Use f_bavial instead of f_bfree for %free calculation This fixes mismatch of df output wrt backend and glusterfs where: f_bfree = /* # free blocks */ f_bavail; /* free blocks avail to non-superuser */ Signed-off-by: shishir gowda <shishirng@gluster.com> Signed-off-by: Anand Avati <avati@gluster.com> BUG: 3084 (Correcting percent calculation of disk space) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=3084
* cluster/afr: fix the range of the lock taken in [f]truncatePranith K2011-07-011-4/+4
| | | | | | | | Signed-off-by: Pranith Kumar K <pranithk@gluster.com> Signed-off-by: Anand Avati <avati@gluster.com> BUG: 3077 (afr [f]truncate locks wrong region in transaction) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=3077
* distribute: handle 'fix.layout' key in setxattr() instead of getxattr()Amar Tumballi2011-06-231-67/+46
| | | | | | | | | | | | | | | as 'fix.layout' command does changes to directory layout, its not a 'read/get' type of operation, and hence as per the symantics, it suits setxattr() better also fix a memory leak in getxattr(), where 'local' was allocated twice in few cases Signed-off-by: Amar Tumballi <amar@gluster.com> Signed-off-by: Anand Avati <avati@gluster.com> BUG: 3075 (the 'fix.layout' command should happen through 'setxattr', not getxattr().) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=3075