From: David Sterba <dave@jikos.cz>
To: Simon Kirby <sim@hostway.ca>
Cc: linux-btrfs@vger.kernel.org
Subject: Re: warning and bug on 3.2-rc4 + for-linus from yesterday
Date: Mon, 12 Dec 2011 01:30:31 +0100 [thread overview]
Message-ID: <20111212003031.GA7322@twin.jikos.cz> (raw)
In-Reply-To: <20111209203948.GA12378@hostway.ca>
Hi,
On Fri, Dec 09, 2011 at 12:39:48PM -0800, Simon Kirby wrote:
> ------------[ cut here ]------------
> WARNING: at mm/page-writeback.c:1763 __set_page_dirty_nobuffers+0x17b/0x190()
> Hardware name: PowerEdge 1950
> Modules linked in: ipmi_devintf ipmi_si ipmi_msghandler aoe bnx2
> Pid: 14299, comm: btrfs-delalloc- Tainted: G W 3.2.0-rc4-hw+ #71
> Call Trace:
> [<ffffffff810dec2b>] ? __set_page_dirty_nobuffers+0x17b/0x190
> [<ffffffff8105b050>] warn_slowpath_common+0x80/0xc0
> [<ffffffff8105b0a5>] warn_slowpath_null+0x15/0x20
> [<ffffffff810dec2b>] __set_page_dirty_nobuffers+0x17b/0x190
> [<ffffffff81303b95>] compress_file_range+0x535/0x5e0
> [<ffffffff811174ee>] ? kfree+0xee/0x120
> [<ffffffff81303c70>] async_cow_start+0x30/0x50
> [<ffffffff813220a3>] worker_loop+0x173/0x530
> [<ffffffff81321f30>] ? btrfs_queue_worker+0x310/0x310
> [<ffffffff81321f30>] ? btrfs_queue_worker+0x310/0x310
> [<ffffffff8107c7f6>] kthread+0x96/0xb0
> [<ffffffff816e09b4>] kernel_thread_helper+0x4/0x10
> [<ffffffff8107c760>] ? kthread_worker_fn+0x190/0x190
> [<ffffffff816e09b0>] ? gs_change+0x13/0x13
> ---[ end trace 52453f1ad38744b8 ]---
>
> (several hours later)
1761 if (mapping2) { /* Race with truncate? */
1762 BUG_ON(mapping2 != mapping);
1763 WARN_ON_ONCE(!PagePrivate(page) && !PageUptodate(page));
^^^^
1764 account_page_dirtied(page, mapping);
1765 radix_tree_tag_set(&mapping->page_tree,
1766 page_index(page), PAGECACHE_TAG_DIRTY);
1767 }
The warning pops up just the first time, so I think it may happen more
often, would be interesting to verify this.
> ------------[ cut here ]------------
> kernel BUG at fs/btrfs/inode.c:1587!
> invalid opcode: 0000 [#1] SMP
> CPU 2
> Modules linked in: ipmi_devintf ipmi_si ipmi_msghandler aoe bnx2
>
> Pid: 4477, comm: btrfs-fixup-0 Tainted: G W 3.2.0-rc4-hw+ #71 Dell Inc. PowerEdge 1950/0NK937
> RIP: 0010:[<ffffffff812fbe10>] [<ffffffff812fbe10>] btrfs_writepage_fixup_worker+0x160/0x170
I was chasing this BUG last week with 3.1+cmason/for-linus and I'm able
to trigger it quite reliably with looped xfstests/209 and low writeback
activity like looped make all & clean in kernel tree (reliably means
like from 10 minutes to 1 day).
Chris told me to instrument SetPageDirty and based on a similar tracing
patchset (http://lwn.net/Articles/315511/) I tried but to no avail, the
instrumentation must have significantly changed timing and the bug did not fire
at all.
I skip the details of my debugging results for now, the first
stacktrace contains something I was hoping for :)
async_cow_start -- calls compress_file_range directly,
compress_file_range+0x535
(gdb) l *(compress_file_range+0x535)
0x31605 is in compress_file_range (fs/btrfs/inode.c:540).
535 * for the async work queue to run cow_file_range to do
536 * the normal delalloc dance
537 */
538 if (page_offset(locked_page) >= start &&
539 page_offset(locked_page) <= end) {
540 __set_page_dirty_nobuffers(locked_page);
541 /* unlocked later on in the async handlers */
542 }
543 add_async_extent(async_cow, start, end - start + 1,
544 0, NULL, 0, BTRFS_COMPRESS_NONE);
this code is reached from (or in a general case when compression is not done):
356 /*
357 * we don't want to send crud past the end of i_size through
358 * compression, that's just a waste of CPU time. So, if the
359 * end of the file is before the start of our current
360 * requested range of bytes, we bail out to the uncompressed
361 * cleanup code that can deal with all of this.
362 *
363 * It isn't really the fastest way to fix things, but this is a
364 * very uncommon corner.
365 */
366 if (actual_end <= start)
367 goto cleanup_and_bail_uncompressed;
... but seems that 'uncommon' happens and could trigger the bug in fixup
worker if there is some race with truncate.
I'll try to put together details and logs from my debugging.
david
next prev parent reply other threads:[~2011-12-12 0:30 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-12-09 20:39 warning and bug on 3.2-rc4 + for-linus from yesterday Simon Kirby
2011-12-10 2:21 ` Simon Kirby
2011-12-12 0:30 ` David Sterba [this message]
2011-12-13 0:18 ` Simon Kirby
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20111212003031.GA7322@twin.jikos.cz \
--to=dave@jikos.cz \
--cc=linux-btrfs@vger.kernel.org \
--cc=sim@hostway.ca \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).