On Thu 31-03-11 22:36:46, Yongqiang Yang wrote: > On Thu, Mar 31, 2011 at 10:04 PM, Eric Sandeen <sandeen@xxxxxxxxxx> wrote: > > On 3/31/11 3:37 AM, Yongqiang Yang wrote: > > > >> in ext3, ext3_freeze() prevents journal from being updated by > >> lock_journal_updates(), ext3_unfreeze() allow journal to be updated by > >> unlock_journal_updates(). > >> > >> in ext4, however, before ext4_freeze() returns, it unlock journal, and > >> ext4 prevents journal from being updated by s_frozen. s_frozen is in > >> an upper layer, so it is out control of ext4 and deadlock is easy to > >> happen. > >> > >> Could someone explain why ext4 does like above but not follow ext3? > >> > >> Yongqiang. > > > > That was me, I think ... > > Thank you, Eric. > > I think ext4_journal_start() should check if current thread has an > active handle before vfs_check_frozen(), if so, current handle will > be returned. Thus, we can avoid deadlocks. > > Do you agree with me? If I am right, I will send a patch. Yes, definitely. This was exactly what I wanted to propose as well. Thanks for looking into this. Honza -- Jan Kara <jack@xxxxxxx> SUSE Labs, CR -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html