From mboxrd@z Thu Jan 1 00:00:00 1970 From: Greg Edwards Date: Fri, 13 May 2005 17:58:14 +0000 Subject: Re: xfs Oops 2.6.12-rc4 Badness in xfs_page_state_convert Message-Id: <20050513175814.GA2131@sgi.com> List-Id: References: <20050513155729.GC31449@cse.unsw.EDU.AU> In-Reply-To: <20050513155729.GC31449@cse.unsw.EDU.AU> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable To: linux-ia64@vger.kernel.org On Sat, May 14, 2005 at 01:57:29AM +1000, Darren Williams wrote: | Hi all | I have been benchmarking on an Altix 350 4way and upon | upgrading from 2.6.12-rc3 -> rc4 Git tree-id=20 | eed337ef5e9ae7d62caa84b7974a11fddc7f06e0 using the sn2_defconfig | with # CONFIG_MODULES is not set, I am seeing a constant stream of | the following Oops: |=20 | Badness in xfs_page_state_convert at=20 | /usr/src/dsw/SanJose/git-linux/fs/xfs/linux-2.6/xfs_aops.c:889 |=20 | Call Trace: | [] show_stack+0x80/0xa0 | sp=E00000b0f608f8f0 bsp=E00000b0f6089380 | [] dump_stack+0x30/0x60 | sp=E00000b0f608fac0 bsp=E00000b0f6089368 | [] xfs_page_state_convert+0x530/0xac0 | sp=E00000b0f608fac0 bsp=E00000b0f6089290 | [] linvfs_writepage+0x120/0x240 | sp=E00000b0f608fc00 bsp=E00000b0f6089258 | [] mpage_writepages+0x530/0x7e0 | sp=E00000b0f608fc10 bsp=E00000b0f6089178 | [] do_writepages+0xe0/0x100 | sp=E00000b0f608fcb0 bsp=E00000b0f6089150 | [] __sync_single_inode+0xb0/0x500 | sp=E00000b0f608fcb0 bsp=E00000b0f60890e8 | [] __writeback_single_inode+0x120/0x320 | sp=E00000b0f608fcb0 bsp=E00000b0f60890a0 | [] sync_sb_inodes+0x4a0/0x6e0 | sp=E00000b0f608fd30 bsp=E00000b0f6088fd8 | [] writeback_inodes+0x2d0/0x300 | sp=E00000b0f608fd30 bsp=E00000b0f6088f80 | [] wb_kupdate+0x220/0x320 | sp=E00000b0f608fd30 bsp=E00000b0f6088f28 | [] __pdflush+0x240/0x420 | sp=E00000b0f608fda0 bsp=E00000b0f6088e90 | [] pdflush+0x40/0x60 | sp=E00000b0f608fda0 bsp=E00000b0f6088e78 | [] kthread+0x1f0/0x200 | sp=E00000b0f608fdd0 bsp=E00000b0f6088e38 | [] kernel_thread_helper+0xd0/0x100 | sp=E00000b0f608fe30 bsp=E00000b0f6088e10 | [] start_kernel_thread+0x20/0x40 | sp=E00000b0f608fe30 bsp=E00000b0f6088e10 | =20 | This patch introduces the WARN_ON | http://www.kernel.org/git/gitweb.cgi?p=3Dlinux/kernel/git/torvalds/linux-= 2.6.git;a=3Dcommitdiff;h$e17b5fb99d4d1b47fe0847a3a801e36d431ff6 We hit this internally as well with our tests. Christoph suggested the following: We're trylocking now if wbc->sync_mode is WB_SYNC_NONE, so having page_dirty set on startio isn't fatal. It should go away with the patch below: Index: linux-2.6/fs/xfs/linux-2.6/xfs_aops.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D--- linux-2.6.orig/fs/xfs/linux-2.6/xfs_aops.c 2005= -05-06 13:36:10.000000000 +0200 +++ linux-2.6/fs/xfs/linux-2.6/xfs_aops.c 2005-05-10 10:33:37.000000000 +0200 @@ -886,7 +886,7 @@ SetPageUptodate(page); =20 if (startio) { - WARN_ON(page_dirty); + WARN_ON(page_dirty && wbc->sync_mode !=3D WB_SYNC_NONE); xfs_submit_page(page, wbc, bh_arr, cnt, 0, !page_dirty); }