Re: [patch 07/15] ocfs2: fix journal commit deadlock

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Dec 15, 2014 at 02:51:09PM -0800, Andrew Morton wrote:
> From: Junxiao Bi <junxiao.bi@xxxxxxxxxx>
> Subject: ocfs2: fix journal commit deadlock
> 
> For buffer write, page lock will be got in write_begin and released in
> write_end, in ocfs2_write_end_nolock(), before it unlock the page in
> ocfs2_free_write_ctxt(), it calls ocfs2_run_deallocs(), this will ask for
> the read lock of journal->j_trans_barrier.  Holding page lock and ask for
> journal->j_trans_barrier breaks the locking order.
> 
> This will cause a deadlock with journal commit threads, ocfs2cmt will get
> write lock of journal->j_trans_barrier first, then it wakes up kjournald2
> to do the commit work, at last it waits until done.  To commit journal,
> kjournald2 needs flushing data first, it needs get the cache page lock.
> 
> Since some ocfs2 cluster locks are holding by write process, this
> deadlock may hung the whole cluster.
> 
> unlock pages before ocfs2_run_deallocs() can fix the locking order, also
> put unlock before ocfs2_commit_trans() to make page lock is unlocked
> before j_trans_barrier to preserve unlocking order.
> 
> Signed-off-by: Junxiao Bi <junxiao.bi@xxxxxxxxxx>
> Reviewed-by: Wengang Wang <wen.gang.wang@xxxxxxxxxx>
> Cc: <stable@xxxxxxxxxxxxxxx>
> Cc: Mark Fasheh <mfasheh@xxxxxxxx>
> Cc: Joel Becker <jlbec@xxxxxxxxxxxx>
> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>

Reviewed-by: Mark Fasheh <mfasheh@xxxxxxx>
	--Mark

--
Mark Fasheh
--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]