From: Andrea Arcangeli <aarcange@redhat.com>
To: Christoph Hellwig <hch@infradead.org>
Cc: Shane Shrybman <shrybman@teksavvy.com>,
linux-btrfs <linux-btrfs@vger.kernel.org>,
Chris Mason <chris.mason@oracle.com>,
linux-mm@kvack.org, linux-fsdevel@vger.kernel.org
Subject: Re: Oops while rebalancing, now unmountable.
Date: Sun, 14 Nov 2010 23:12:22 +0100 [thread overview]
Message-ID: <20101114221222.GX6809@random.random> (raw)
In-Reply-To: <20101114220018.GA4512@infradead.org>
On Sun, Nov 14, 2010 at 05:00:18PM -0500, Christoph Hellwig wrote:
> On Sun, Nov 14, 2010 at 09:42:06PM +0100, Andrea Arcangeli wrote:
> > btrfs misses this:
> >
> > + .migratepage = btree_migratepage,
> >
> > It's a bug that can trigger upstream too (not only with THP) if there
> > are hugepage allocations (like while incrasing nr_hugepages). Chris
> > already fixed it with an experimental patch.
>
> If the lack of an obscure method causes data corruption something
> is seriously wrong with THP. At least from the 10.000 foot view
I just wrote above that it can happen upstream without THP. It's not
THP related at all. THP is the consumer, this is a problem in migrate
that will trigger as well with migrate_pages or all other possible
migration APIs.
If more people would be using hugetlbfs they would have noticed
without THP.
> I can't quite figure what the exact issue is, though.
> fallback_migrate_page seems to do the right thing to me for that
> case.
>
> Btw, there's also another issue with the page migration code when used
> for filesystem pages. If directly calls into ->writepage instead
> of using the flusher threads. On most filesystems this will
> "only" cause nasty I/O patterns, but on ext4 for example it will
> be more nasty as ext3 doesn't do conversions from delayed allocations to
> real ones. So unless you're doing a lot of overwrites it will be
> hard to make any progress in writeout().
+static int btree_migratepage(struct address_space *mapping,
+ struct page *newpage, struct page *page)
+{
+ /*
+ * we can't safely write a btree page from here,
+ * we haven't done the locking hook
+ */
+ if (PageDirty(page))
+ return -EAGAIN;
fallback_migrate_page would call writeout() which is apparently not
ok in btrfs for locking issues leading to corruption.
> Btw, what codepath does THP call migrate_pages from? If you don't
> use an explicit thread writeout will be a no-op on btrfs and XFS, too.
THP never calls migrate_pages, it's memory compaction that calls it
from inside alloc_pages(order=9). It got noticed only with THP because
it makes more frequent hugepage allocations than nr_hugepages in
hugetlbfs (and maybe there are more THP users already).
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Fight unfair telecom policy in Canada: sign http://dissolvethecrtc.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2010-11-14 22:12 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-11-08 17:10 Oops while rebalancing, now unmountable Shane Shrybman
2010-11-08 17:55 ` Chris Mason
2010-11-08 20:39 ` Shane Shrybman
2010-11-08 21:04 ` Chris Mason
2010-11-08 21:25 ` Shane Shrybman
2010-11-09 13:42 ` Chris Mason
2010-11-09 18:21 ` Shane Shrybman
2010-11-14 19:55 ` Shane Shrybman
2010-11-14 20:42 ` Andrea Arcangeli
2010-11-14 22:00 ` Christoph Hellwig
2010-11-14 22:00 ` Christoph Hellwig
2010-11-14 22:12 ` Andrea Arcangeli [this message]
2010-11-15 18:23 ` Christoph Hellwig
2010-11-15 18:23 ` Christoph Hellwig
2010-11-15 18:46 ` Chris Mason
2010-11-15 18:46 ` Chris Mason
2010-11-15 19:03 ` Christoph Hellwig
2010-11-15 19:03 ` Christoph Hellwig
2010-11-16 21:48 ` Shane Shrybman
2010-11-16 21:48 ` Shane Shrybman
2010-11-15 18:46 ` Andrea Arcangeli
2010-11-15 19:03 ` Chris Mason
2010-11-15 19:03 ` Chris Mason
2010-11-15 19:16 ` Andrea Arcangeli
2010-11-15 19:12 ` Christoph Hellwig
2010-11-15 19:12 ` Christoph Hellwig
2010-11-15 19:18 ` Chris Mason
2010-11-15 19:18 ` Chris Mason
2010-11-15 19:29 ` Andrea Arcangeli
2010-11-15 20:54 ` Christoph Hellwig
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=20101114221222.GX6809@random.random \
--to=aarcange@redhat.com \
--cc=chris.mason@oracle.com \
--cc=hch@infradead.org \
--cc=linux-btrfs@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=shrybman@teksavvy.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.