This patch series tries to solve two deadlock.

In first commit it fixes a potential deadlock in ext4_nonda_switch().  Although we don't hit it in our product system.  The second and third patches try to fix a deadlock which has been met but we couldn't reproduce it in sand box until now.  But from the analysis we can see that these patches can fix the problem.  So just back port them and hope it can be fixed.