Bug 794618

Summary: [glusterfs-3.3.0qa22]: fd leak in fuse resolve
Product: [Community] GlusterFS Reporter: Raghavendra Bhat <rabhat>
Component: fuseAssignee: Raghavendra Bhat <rabhat>
Status: CLOSED UPSTREAM QA Contact:
Severity: unspecified Docs Contact:
Priority: high    
Version: mainlineCC: gluster-bugs
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2012-02-22 06:20:46 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: glusterfs-3.3.0qa23 Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:

Description Raghavendra Bhat 2012-02-17 06:35:53 UTC
Description of problem:
There is a fd leak while doing resolve in fd because of which fd's are not getting unrefed and causing too many open fds.

Its because this part of the code

int
fuse_resolve_fd_init (fuse_state_t *state, fuse_resolve_t *resolve,
                      fd_t *fd)
{
        resolve->fd = fd_ref (fd);

	return 0;
}

Here we are refing the fd to resolve fd, but while freeing resolve, we are not unrefing the fd which leads to fd leak.

Version-Release number of selected component (if applicable):


How reproducible:

always
Steps to Reproduce:
1.touch a file
2.do lsof -n | grep glusterfs
3.the file that was touched can be seen in the open file list
  
Actual results:

fds are leaked which when exceeds certain limit, the kernel complains that maximum open file limit has been reached.

Expected results:

fd's should be closed properly without any leak.

Additional info:

VFS: file-max limit 198110 reached
VFS: file-max limit 198110 reached
VFS: file-max limit 198110 reached
VFS: file-max limit 198110 reached
VFS: file-max limit 198110 reached
VFS: file-max limit 198110 reached
VFS: file-max limit 198110 reached
VFS: file-max limit 198110 reached
VFS: file-max limit 198110 reached
VFS: file-max limit 198110 reached


lsof -n | grep glusterfs :

lusterfs 14805      root *258u      REG               8,17     688128  204956140 /export-xfs/mirror/.glusterfs/61/98/6198d10e-3c1d-4238-8d98-bf394e3712c3 (deleted)
glusterfs 14805      root *259u      REG               8,17     688128  204956142 /export-xfs/mirror/.glusterfs/c3/c5/c3c5de18-e1cd-4918-aabb-917dc73caac4 (deleted)
glusterfs 14805      root *260u      REG               8,17     688128  204956143 /export-xfs/mirror/.glusterfs/b6/bf/b6bf873e-2f57-49ed-9858-7c790a978cdd (deleted)
glusterfs 14805      root *261u      REG               8,17     688128  204956144 /export-xfs/mirror/.glusterfs/f5/df/f5df1c98-95ae-488e-9319-106bdf257545 (deleted)
glusterfs 14805      root *262u      REG               8,17     688128  204956145 /export-xfs/mirror/.glusterfs/01/5e/015ee620-aa7d-4632-adde-0af6c54b99a5 (deleted)
glusterfs 14805      root *263u      REG               8,17     688128  204956147 /export-xfs/mirror/.glusterfs/02/00/0200aea7-6bc2-4061-a8a1-fef07fca2a19 (deleted)
glusterfs 14805      root *264u      REG               8,17     688128  204956148 /export-xfs/mirror/.glusterfs/69/aa/69aab854-e20f-4347-9036-e9e6c72fa845 (deleted)
glusterfs 14805      root *265u      REG               8,17     688128  204956149 /export-xfs/mirror/.glusterfs/d4/48/d4483920-2208-4a80-a0df-ac6399b5fa20 (deleted)
glusterfs 14805      root *266u      REG               8,17     688128  204956151 /export-xfs/mirror/.glusterfs/86/8d/868d87d0-1d7d-4192-b72c-475a3beb3d21 (deleted)
glusterfs 14805      root *267u      REG               8,17     688128  204956152 /export-xfs/mirror/.glusterfs/71/9b/719bdf0b-eec6-4ebd-808c-afd1cc054ca4 (deleted)
glusterfs 14805      root *268u      REG               8,17     688128  204956153 /export-xfs/mirror/.glusterfs/03/42/03427c66-0dea-4922-b68a-5367c60adaf9 (deleted)
glusterfs 14805      root *269u      REG               8,17     688128  204956154 /export-xfs/mirror/.glusterfs/fa/7e/fa7e78fc-cfd6-4707-8e55-d862edbd5584 (deleted)
glusterfs 14805      root *270u      REG               8,17     688128  204956155 /export-xfs/mirror/.glusterfs/30/9c/309cc77d-6a8c-4fe5-b6a7-d8333d2c9599 (deleted)
glusterfs 14805      root *271u      REG               8,17     688128  204956157 /export-xfs/mirror/.glusterfs/82/d7/82d72302-1ae6-47a5-946a-f21e07c7e8c3 (deleted)
glusterfs 14805      root *272u      REG               8,17     688128  204956159 /export-xfs/mirror/.glusterfs/18/e3/18e3d82e-2e25-41e7-8e83-21db48f90c56 (deleted)
glusterfs 14805      root *273u      REG               8,17     688128  204956158 /export-xfs/mirror/.glusterfs/d8/f2/d8f201a1-ab9b-4f91-a969-33ce496a3611 (deleted)
glusterfs 14805      root *274u      REG               8,17     688128  204956674 /export-xfs/mirror/.glusterfs/40/f7/40f7954e-bb6e-49e6-9728-909299f9ff39 (deleted)
glusterfs 14805      root *275u      REG               8,17     688128  204956676 /export-xfs/mirror/.glusterfs/6a/bb/6abb954b-cc6f-4488-9da8-c568f678ebcf (deleted)
glusterfs 14805      root *276u      REG               8,17     688128  204956677 /export-xfs/mirror/.glusterfs/ee/ed/eeed7d69-5c48-4fb7-9892-4aa769938211 (deleted)
glusterfs 14805      root *277u      REG               8,17     688128  204956679 /export-xfs/mirror/.glusterfs/72/75/7275f01a-4ce9-4b2b-8ce1-9e6efa582fa7 (deleted)
glusterfs 14805      root *278u      REG               8,17     688128  204956681 /export-xfs/mirror/.glusterfs/44/52/44521268-b04b-46ab-b2ed-d68a63d54736 (deleted)
glusterfs 14805      root *279u      REG               8,17     688128  204956683 /export-xfs/mirror/.glusterfs/26/6d/266da74f-e3f4-415a-8935-8dd773ba058c (deleted)
glusterfs 14805      root *280u      REG               8,17     688128  204956685 /export-xfs/mirror/.glusterfs/46/a4/46a43b52-a74f-4b57-89e5-55402a976e51 (deleted)

Comment 1 Anand Avati 2012-02-17 12:20:27 UTC
CHANGE: http://review.gluster.com/2760 (mount/fuse: unref the fd from resolve to avoid fd leak) merged in master by Vijay Bellur (vijay)

Comment 2 Raghavendra Bhat 2012-02-22 06:20:46 UTC
Checked with glusterfs-3.3.0qa23. Its not leaking fd since the fd that was refed in resolve is unrefed while freeing resolve structure.

Comment 3 Raghavendra Bhat 2012-02-22 08:59:31 UTC
Checked with glusterfs-3.3.0qa23. Its not leaking fd since the fd that was refed in resolve is unrefed while freeing resolve structure.