Bug 1344425

Summary: fd leak in disperse
Product: [Red Hat Storage] Red Hat Gluster Storage Reporter: Pranith Kumar K <pkarampu>
Component: disperseAssignee: Ashish Pandey <aspandey>
Status: CLOSED CURRENTRELEASE QA Contact: Matt Zywusko <mzywusko>
Severity: medium Docs Contact:
Priority: unspecified    
Version: rhgs-3.1CC: aspandey, bugs, jahernan, pkarampu, rhs-bugs
Target Milestone: ---Keywords: Triaged, ZStream
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: glusterfs-3.9.0 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: 1344396 Environment:
Last Closed: 2017-08-17 08:26:44 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 1344396    
Bug Blocks:    

Description Pranith Kumar K 2016-06-09 15:56:14 UTC
+++ This bug was initially created as a clone of Bug #1344396 +++

Description of problem:

The disperse xlator uses __fd_unref() to release references to the fd. However this function doesn't make the cleanup of the fd resources if this was the last reference.

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


How reproducible:


Steps to Reproduce:
1.
2.
3.

Actual results:


Expected results:


Additional info:

--- Additional comment from Pranith Kumar K on 2016-06-09 11:21:24 EDT ---

Could you give a reference to the function you are referring to where this cleanup is not happening as we intend it to?

--- Additional comment from Xavier Hernandez on 2016-06-09 11:27:19 EDT ---

In function ec_lock_update_fd() we choose the newest fd to keep it in the lock structure. If there's already an fd assigned, we release it using __fd_unref(). We use this function because we are already inside a region protected bye inode->lock, so we cannot call fd_unref().

The problem is that this function doesn't do any cleanup. It only decrements the ref counter. All cleanup is made in fd_unref().

--- Additional comment from Vijay Bellur on 2016-06-09 11:35:30 EDT ---

REVIEW: http://review.gluster.org/14683 (cluster/ec: Fix invalid __fd_unref() call) posted (#1) for review on master by Xavier Hernandez (xhernandez)