On 06/06/2014 10:47 AM, Pranith Kumar
Karampuri wrote:
Consider the following scenario: There are two granted locks L1, L2 from C1, C2 clients respectively on same inode. C1 gets disconnected. C2 issues a unlock. This is the sequence of steps: 1) C1 executes first loop, increments in_cleanup to 1 2) C2 executes pl_inode_setlk and removed L2 from granted list. It is now just before grant_blocked_inode_locks() 3) C1 starts 3rd for loop and unrefs L1, decrements in_cleanup to 0 4) C2 executes grant_blocked_inode_locks() and decrements the refkeepr, sets it to NULL and unwinds. This destroys the inode so pl_inode is freed. 5) C1 calls grant_blocked_inode_locks with pl_inode which is free'd Pranith
|
_______________________________________________ Gluster-devel mailing list Gluster-devel@xxxxxxxxxxx http://supercolony.gluster.org/mailman/listinfo/gluster-devel