performance/open-behind: Fix fd-leaks in unlink, rename
Change-Id: Ia8d4bed7ccd316a83c397b53b9c1b1806024f83e BUG: 991622 Signed-off-by: Pranith Kumar K <pkarampu@redhat.com> Reviewed-on: http://review.gluster.org/5493 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Anand Avati <avati@redhat.com>
This commit is contained in:
parent
a482e4220a
commit
8c1304b035
35
tests/bugs/bug-991622.t
Normal file
35
tests/bugs/bug-991622.t
Normal file
@ -0,0 +1,35 @@
|
||||
#!/bin/bash
|
||||
|
||||
. $(dirname $0)/../include.rc
|
||||
. $(dirname $0)/../volume.rc
|
||||
. $(dirname $0)/../fileio.rc
|
||||
|
||||
#This tests that no fd leaks are observed in unlink/rename in open-behind
|
||||
function leaked_fds {
|
||||
ls -l /proc/$(get_brick_pid $V0 $H0 $B0/$V0)/fd | grep deleted
|
||||
}
|
||||
|
||||
cleanup;
|
||||
TEST glusterd
|
||||
TEST pidof glusterd
|
||||
|
||||
TEST $CLI volume create $V0 $H0:$B0/$V0
|
||||
TEST $CLI volume set $V0 open-behind on
|
||||
TEST $CLI volume start $V0
|
||||
TEST glusterfs --entry-timeout=0 --attribute-timeout=0 -s $H0 --volfile-id=$V0 $M0 --direct-io-mode=enable
|
||||
|
||||
TEST fd1=`fd_available`
|
||||
TEST fd_open $fd1 'w' "$M0/testfile1"
|
||||
TEST fd_write $fd1 "content"
|
||||
|
||||
TEST fd2=`fd_available`
|
||||
TEST fd_open $fd2 'w' "$M0/testfile2"
|
||||
TEST fd_write $fd2 "content"
|
||||
|
||||
TEST touch $M0/a
|
||||
TEST rm $M0/testfile1
|
||||
TEST mv $M0/a $M0/testfile2
|
||||
TEST fd_close $fd1
|
||||
TEST fd_close $fd2
|
||||
TEST ! leaked_fds
|
||||
cleanup;
|
@ -734,6 +734,8 @@ ob_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc, int xflags,
|
||||
fd = fd_lookup (loc->inode, 0);
|
||||
|
||||
open_and_resume (this, fd, stub);
|
||||
if (fd)
|
||||
fd_unref (fd);
|
||||
|
||||
return 0;
|
||||
err:
|
||||
@ -758,6 +760,8 @@ ob_rename (call_frame_t *frame, xlator_t *this, loc_t *src, loc_t *dst,
|
||||
fd = fd_lookup (dst->inode, 0);
|
||||
|
||||
open_and_resume (this, fd, stub);
|
||||
if (fd)
|
||||
fd_unref (fd);
|
||||
|
||||
return 0;
|
||||
err:
|
||||
|
Loading…
x
Reference in New Issue
Block a user