[Linux-cluster] Freeze with cluster-2.03.11

Wendy Cheng s.wendy.cheng at gmail.com
Fri Apr 3 03:59:52 UTC 2009


>> Kadlecsik Jozsef wrote:
>>     
>>> - commit 82d176ba485f2ef049fd303b9e41868667cebbdb
>>>   gfs_drop_inode as .drop_inode replacing .put_inode.
>>>   .put_inode was called without holding a lock, but .drop_inode
>>>   is called under inode_lock held. Might it be a problem
>>>       
Based on code reading ...
1. iput() gets inode_lock (a spin lock)
2. iput() calls iput_final()
3. iput_final() calls filesystem drop_inode(), followed by 
generic_drop_inode()
4. generic_drop_inode() unlock inode_lock after doing all sorts of fun 
things with the inode

So look to me that generic_drop_inode() statement within 
gfs_drop_inode() should be removed. Otherwise you would get double 
unlock and double list free.

In short, *remove* line #73 from gfs-kernel/src/gfs/ops_super.c in your 
source and let us know how it goes.

-- Wendy






More information about the Linux-cluster mailing list