Re: (NFS) BUG: at page-writeback.c:829 [Was: 2.6.22-rc1-mm1]

From: Nick Piggin
Date: Wed May 16 2007 - 08:47:59 EST


Jiri Slaby wrote:
Nick Piggin napsal(a):

Jiri Slaby wrote:

Andrew Morton napsal(a):


ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.22-rc1/2.6.22-rc1-mm1/



I've got this in dmesg:

BUG: at /local/xslaby/xxx/mm/page-writeback.c:829
__set_page_dirty_nobuffers()
[<c010531e>] dump_trace+0x1ce/0x200
[<c010536a>] show_trace_log_lvl+0x1a/0x30
[<c0106012>] show_trace+0x12/0x20
[<c0106086>] dump_stack+0x16/0x20
[<c015566d>] __set_page_dirty_nobuffers+0x11d/0x130
[<c0155690>] redirty_page_for_writepage+0x10/0x20
[<c01938fc>] __block_write_full_page+0x20c/0x330
[<c0193b0a>] block_write_full_page+0xea/0x100
[<c0196c82>] blkdev_writepage+0x12/0x20
[<c015539e>] __writepage+0xe/0x30
[<c01558c2>] write_cache_pages+0x222/0x340
[<c0155a03>] generic_writepages+0x23/0x30
[<c0155a3e>] do_writepages+0x2e/0x50
[<c018decb>] __writeback_single_inode+0x8b/0x470
[<c018e75b>] generic_sync_sb_inodes+0x24b/0x470
[<c018e9a7>] sync_sb_inodes+0x27/0x30
[<c018ec33>] writeback_inodes+0xb3/0xe0
[<c01560f2>] wb_kupdate+0x82/0xf0
[<c015660b>] pdflush+0xeb/0x1b0
[<c0132e72>] kthread+0x42/0x70
[<c0104d4b>] kernel_thread_helper+0x7/0x1c

Do you have any messages before this one? Seems like it is probably
metadata,
but we've only caught it at the last minute...


No other messages before that. Bazillion through-nfs stacks after this...

Does this patch fix NFS?

--
SUSE Labs, Novell Inc.
Index: linux-2.6/mm/page-writeback.c
===================================================================
--- linux-2.6.orig/mm/page-writeback.c
+++ linux-2.6/mm/page-writeback.c
@@ -826,7 +826,7 @@ int __set_page_dirty_nobuffers(struct pa
mapping2 = page_mapping(page);
if (mapping2) { /* Race with truncate? */
BUG_ON(mapping2 != mapping);
- WARN_ON(!PageUptodate(page));
+ WARN_ON(!PagePrivate(page) && !PageUptodate(page));
if (mapping_cap_account_dirty(mapping)) {
__inc_zone_page_state(page, NR_FILE_DIRTY);
task_io_account_write(PAGE_CACHE_SIZE);