[Ocfs2-devel] ocfs2: Should move ocfs2_start_trans out of lock_page

Joseph Qi joseph.qi at huawei.com
Mon Jun 24 01:55:20 PDT 2013


Any different opinion?

On 2013/6/19 16:17, Joseph Qi wrote:
> Currently ocfs2_start_trans/ocfs2_commit_trans are in
> lock_page/unlock_page. This may cause dead lock.
> 
> Here is the situation:
> write -> lock_page -> ocfs2_start_trans -> ocfs2_commit_trans -> unlock_page
> ocfs2_start_trans/ocfs2_commit_trans calls
> jbd2_journal_start/jbd2_journal_stop which may also call lock_page. So
> if the page operated is unfortunately the same with the page to be
> committed, dead lock happens.
> 
> In ext4, lock_page/unlock_page are in
> ext4_journal_start/ext4_journal_stop, this can avoid such kind of dead
> lock. So I think we should move ocfs2_start_trans/ocfs2_commit_trans out
> of lock_page/unlock_page.
> 
> Totally there are 5 related functions:
> ocfs2_write_begin_nolock
> ocfs2_write_begin_inline
> ocfs2_write_end_nolock
> ocfs2_write_zero_page
> ocfs2_convert_inline_data_to_extents
> 
> 
> _______________________________________________
> Ocfs2-devel mailing list
> Ocfs2-devel at oss.oracle.com
> https://oss.oracle.com/mailman/listinfo/ocfs2-devel
> 
> 





More information about the Ocfs2-devel mailing list