From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wu Fengguang Subject: Re: xfstests 073 regression Date: Fri, 29 Jul 2011 22:21:21 +0800 Message-ID: <20110729142121.GA21149@localhost> References: <20110728164105.GA18258@infradead.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: "linux-fsdevel@vger.kernel.org" To: Christoph Hellwig Return-path: Received: from mga03.intel.com ([143.182.124.21]:54637 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750789Ab1G2OVX (ORCPT ); Fri, 29 Jul 2011 10:21:23 -0400 Content-Disposition: inline In-Reply-To: <20110728164105.GA18258@infradead.org> Sender: linux-fsdevel-owner@vger.kernel.org List-ID: Christoph, On Fri, Jul 29, 2011 at 12:41:05AM +0800, Christoph Hellwig wrote: > Current mainline hangs in xfstests 073, which does heavy I/O on a loop > device. Bisection points to "writeback: remove writeback_control.more_io" > as a likely culprit. I cannot reproduce the bug. However looking through the code, I find the only possible place that may keep wb_writeback() looping with wb->list_lock grabbed is the below requeue_io() call. Would you try the patch? Note that even if it fixed the soft lockup, it may not be suitable as the final fix. Thanks, Fengguang --- --- linux.orig/fs/fs-writeback.c 2011-07-29 22:14:18.000000000 +0800 +++ linux/fs/fs-writeback.c 2011-07-29 22:14:24.000000000 +0800 @@ -618,7 +618,7 @@ static long __writeback_inodes_wb(struct struct super_block *sb = inode->i_sb; if (!grab_super_passive(sb)) { - requeue_io(inode, wb); + redirty_tail(inode, wb); continue; } wrote += writeback_sb_inodes(sb, wb, work);