Re: xfs Oops 2.6.12-rc4 Badness in xfs_page_state_convert

From: Greg Edwards <edwardsg_at_sgi.com>
Date: 2005-05-14 03:58:14
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 
| eed337ef5e9ae7d62caa84b7974a11fddc7f06e0 using the sn2_defconfig
| with # CONFIG_MODULES is not set, I am seeing a constant stream of
| the following Oops:
| 
| Badness in xfs_page_state_convert at 
| /usr/src/dsw/SanJose/git-linux/fs/xfs/linux-2.6/xfs_aops.c:889
| 
| Call Trace:
|  [<a000000100010280>] show_stack+0x80/0xa0
|                                 sp=e00000b0f608f8f0 bsp=e00000b0f6089380
|  [<a0000001000102d0>] dump_stack+0x30/0x60
|                                 sp=e00000b0f608fac0 bsp=e00000b0f6089368
|  [<a0000001003a0cf0>] xfs_page_state_convert+0x530/0xac0
|                                 sp=e00000b0f608fac0 bsp=e00000b0f6089290
|  [<a0000001003a1fa0>] linvfs_writepage+0x120/0x240
|                                 sp=e00000b0f608fc00 bsp=e00000b0f6089258
|  [<a00000010018c5d0>] mpage_writepages+0x530/0x7e0
|                                 sp=e00000b0f608fc10 bsp=e00000b0f6089178
|  [<a0000001000fa760>] do_writepages+0xe0/0x100
|                                 sp=e00000b0f608fcb0 bsp=e00000b0f6089150
|  [<a0000001001888d0>] __sync_single_inode+0xb0/0x500
|                                 sp=e00000b0f608fcb0 bsp=e00000b0f60890e8
|  [<a000000100188e40>] __writeback_single_inode+0x120/0x320
|                                 sp=e00000b0f608fcb0 bsp=e00000b0f60890a0
|  [<a0000001001894e0>] sync_sb_inodes+0x4a0/0x6e0
|                                 sp=e00000b0f608fd30 bsp=e00000b0f6088fd8
|  [<a0000001001899f0>] writeback_inodes+0x2d0/0x300
|                                 sp=e00000b0f608fd30 bsp=e00000b0f6088f80
|  [<a0000001000fa140>] wb_kupdate+0x220/0x320
|                                 sp=e00000b0f608fd30 bsp=e00000b0f6088f28
|  [<a0000001000fb8a0>] __pdflush+0x240/0x420
|                                 sp=e00000b0f608fda0 bsp=e00000b0f6088e90
|  [<a0000001000fbac0>] pdflush+0x40/0x60
|                                 sp=e00000b0f608fda0 bsp=e00000b0f6088e78
|  [<a0000001000d5d70>] kthread+0x1f0/0x200
|                                 sp=e00000b0f608fdd0 bsp=e00000b0f6088e38
|  [<a0000001000125d0>] kernel_thread_helper+0xd0/0x100
|                                 sp=e00000b0f608fe30 bsp=e00000b0f6088e10
|  [<a000000100009120>] start_kernel_thread+0x20/0x40
|                                 sp=e00000b0f608fe30 bsp=e00000b0f6088e10
|   
| This patch introduces the WARN_ON
| http://www.kernel.org/git/gitweb.cgi?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=24e17b5fb99d4d1b47fe0847a3a801e36d431ff6

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
===================================================================
--- 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);
 
 	if (startio) {
-		WARN_ON(page_dirty);
+		WARN_ON(page_dirty && wbc->sync_mode != WB_SYNC_NONE);
 		xfs_submit_page(page, wbc, bh_arr, cnt, 0, !page_dirty);
 	}
-
To unsubscribe from this list: send the line "unsubscribe linux-ia64" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Received on Fri May 13 13:59:07 2005

This archive was generated by hypermail 2.1.8 : 2005-08-02 09:20:38 EST