I am just going to be blunt and assume that my trace is wrong. I am tracing the bug , https://bugzilla.kernel.org/show_bug.cgi?id=72291. Here are my trace steps 1.Start in _break_lease and find locks_insert_block and trace into that function 2. In that function we hit the internal function, _locks_insert_block and I trace into that function 3. When I trace into that function , I get see we are using the same spinlocks as the other functions and come to the conclusion we are not holding the right spinlock and are looping indefinitely 4. This comment , /* Must be called with i_lock held. */ seems to a value thing to check if we are holding the i_lock spinlock 5.I trace back to where we are calling in the function, _break_lease and we are calling like this, locks_insert_block(flock, new_fl); I known that flock is the lock that we are calling with and logically needs the i_lock 6. flock = inode->i_flock; is clearly not the right lock and we are already holding it in another spinlock as part of this function , spin_lock(&inode->i_lock); This means that we are looping forever trying to get the i_lock that is already held by another spinlock, causing us to loop forever when we call _break_lease. Nick _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies