[Bugs] [Bug 1541264] New: dht_layout_t leak in dht_populate_inode_for_dentry

bugzilla at redhat.com bugzilla at redhat.com
Fri Feb 2 06:44:35 UTC 2018


https://bugzilla.redhat.com/show_bug.cgi?id=1541264

            Bug ID: 1541264
           Summary: dht_layout_t leak in dht_populate_inode_for_dentry
           Product: GlusterFS
           Version: mainline
         Component: distribute
          Assignee: bugs at gluster.org
          Reporter: nbalacha at redhat.com
                CC: bugs at gluster.org



Description of problem:
dht_populate_inode_for_dentry does not check if the inode already has a layout
set and overwrites the value each time without freeing the already existing
layout.
This happens only in non-distributed volumes (where dht has a single child
subvol).

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


How reproducible:
Consistently

Steps to Reproduce:

1.Create a 1x2 volume 
2.Fuse mount the volume and create 5 directories in the root of the volume.
mkdir dir-{1..5}
3. Take a statedump of the mount process.
4. Run ls -lR in a loop.
for i in {1..10000}; do ls -lR; done
5. After the loop completes, take another statedump of the mount process and
compare the values for usage-type gf_dht_mt_dht_layout_t memusage


Actual results:

With the latest upstream master:

Before:
======
[cluster/distribute.leak-dht - usage-type gf_dht_mt_dht_layout_t memusage]      
size=456                                                                        
num_allocs=8                                                                    
max_size=584                                                                    
max_num_allocs=10                                                               
total_allocs=21


After:
=====
[cluster/distribute.leak-dht - usage-type gf_dht_mt_dht_layout_t memusage]      
size=10240520                                                                   
num_allocs=160009                                                               
max_size=10240520                                                               
max_num_allocs=160009                                                           
total_allocs=160027 




Expected results:

No leak

Additional info:

----------------------------------------------------------------------
Results after commenting out the call to dht_populate_inode_for_dentry
----------------------------------------------------------------------

Before:
=======

[cluster/distribute.leak-dht - usage-type gf_dht_mt_dht_layout_t memusage]      
size=456                                                                        
num_allocs=8                                                                    
max_size=456                                                                    
max_num_allocs=8                                                                
total_allocs=8


After:
======
[cluster/distribute.leak-dht - usage-type gf_dht_mt_dht_layout_t memusage]      
size=456                                                                        
num_allocs=8                                                                    
max_size=456                                                                    
max_num_allocs=8                                                                
total_allocs=8 

--------------------------------------------------------------

-- 
You are receiving this mail because:
You are on the CC list for the bug.
You are the assignee for the bug.


More information about the Bugs mailing list