diff options
author | Raghavendra G <raghavendra@gluster.com> | 2011-05-08 23:41:23 +0000 |
---|---|---|
committer | Anand Avati <avati@gluster.com> | 2011-07-20 06:12:42 -0700 |
commit | e559ea5f8056472a6df8fde942239cb6342dc23e (patch) | |
tree | f781e2ac4e2381f3f245dcbf4afeae3607995f0f /libglusterfs/src | |
parent | fd60df8798b74ea2a9c793798d4ad2ab3fbf9394 (diff) |
features/marker: fix race-conditions, memory corruptions and fd-leaks.
- remove xattrs from newpath after rename is complete.
- hold inodelk on both parents (if they are different) before doing rename
and gather contribution values of oldpath and newpath to their parents
while still holding the locks. Use these contribution values to reduce
parent sizes.
- performance optimization: abort updation process if delta is zero.
- libglusterfs/call-stub: Allow unwinding of frames for rename during
call_resume_unwind.
- fixes in dirty inode healing codepath:
- fix fd-leak of fd opened on the directory.
- don't add (instead just assign) next offset at which readdir has to
be sent to local->d_off.
- assign to local->d_off before winding lookup call to get child
contribution.
- use mutexes while accessing contribution values stored in inode context.
- use contribution values from backend instead of in-memory while reducing
parent sizes during rename
- wipe parent_loc in marker_local_unref.
- check for refcount being zero holding lock in quota_local_unref.
- hold parent inodelk during creation of xattrs on directory.
- use contribution value to reduce parent's size, if the value to be
subtracted is not passed as argument to reduce_parent_size.
- skip contribution creation on root.
Change-Id: I97a9ac7efc5cf82abd3837fa6f9766c35676a908
BUG: 2697
Signed-off-by: Junaid <junaid@gluster.com>
Reviewed-on: http://review.gluster.com/31
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Diffstat (limited to 'libglusterfs/src')
-rw-r--r-- | libglusterfs/src/call-stub.c | 2 |
1 files changed, 0 insertions, 2 deletions
diff --git a/libglusterfs/src/call-stub.c b/libglusterfs/src/call-stub.c index 3715dfffa2b..4fe1caf330e 100644 --- a/libglusterfs/src/call-stub.c +++ b/libglusterfs/src/call-stub.c @@ -2695,7 +2695,6 @@ call_resume_unwind (call_stub_t *stub) case GF_FOP_RENAME: { -#if 0 if (!stub->args.rename_cbk.fn) STACK_UNWIND (stub->frame, stub->args.rename_cbk.op_ret, @@ -2716,7 +2715,6 @@ call_resume_unwind (call_stub_t *stub) &stub->args.rename_cbk.postoldparent, &stub->args.rename_cbk.prenewparent, &stub->args.rename_cbk.postnewparent); -#endif break; } |