Bug 801582

Summary: ACL memory leak
Product: [Red Hat Storage] Red Hat Gluster Storage Reporter: Brian Foster <bfoster>
Component: glusterfsAssignee: Brian Foster <bfoster>
Status: CLOSED CURRENTRELEASE QA Contact: Anush Shetty <ashetty>
Severity: high Docs Contact:
Priority: high    
Version: 2.0CC: gluster-bugs, rwheeler, sdharane, vbellur
Target Milestone: Beta   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: glusterfs-3.4.0qa2-1 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2015-08-10 07:46:49 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Brian Foster 2012-03-08 22:10:06 UTC
Description of problem:

A memory leak occurs when ACLs are continuously removed and re-added.

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

How reproducible: 100%

Steps to Reproduce:
1. Mount a gluster volume with ACLs enabled.
2. Create a file.
3. Run the following command on the file:

while [ true ]
do 
        setfacl -x u:test /mnt/test
        setfacl -m u:test:r /mnt/test
done

4. Run 'top -p <pidofglusterfs>' and observe RES.
  
Actual results: Resident set size increases to consume all memory.

Expected results: RSS remains stable.

Comment 1 Amar Tumballi 2012-03-21 10:45:34 UTC
Brian, does your patch to upstream fix the issue? should this be moved to "ON_QA"?

Comment 2 Brian Foster 2012-03-21 12:00:56 UTC
Amar,

Unfortunately no, this is a separate issue. I ran this test before (to make sure I wasn't introducing the problem) and after the refcount change and still saw increasing RSS.

Comment 3 Brian Foster 2012-03-21 12:13:29 UTC
To be precise, I should also point out I don't have any evidence to suggest that the memory leak here is necessarily in the ACL code...

Comment 4 Brian Foster 2012-04-12 20:11:04 UTC
I found and resolved a similar leak reproducible as follows:

while [ true ]
do 
        getfattr -n user.test /mnt/test
done

I then determined the root cause is the same for this bug. The root cause is an extra dict_ref() inside of mdc_inode_xatt_update() in md-cache. Posting a fix shortly...

Comment 5 Brian Foster 2012-04-12 20:30:02 UTC
http://review.gluster.com/3138

Comment 6 Anand Avati 2012-04-12 21:21:46 UTC
CHANGE: http://review.gluster.com/3138 (md-cache: fix dict memory leak in mdc_inode_xatt_update) merged in master by Anand Avati (avati)

Comment 8 Anush Shetty 2013-08-07 11:03:37 UTC
Verified with glusterfs-3.4.0.17rhs-1.el6rhs.x86_64