From: Greg KH <gregkh@linuxfoundation.org>
To: Dave Chinner <david@fromorbit.com>
Cc: linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org,
pjaroszynski@nvidia.com, william.kucharski@oracle.com,
stable@vger.kernel.org, hch@lst.de, akpm@linux-foundation.org,
torvalds@linux-foundation.org
Subject: Re: [PATCH] iomap: Revert "fs/iomap.c: get/put the page in iomap_page_create/release()"
Date: Thu, 20 Dec 2018 13:28:25 +0100 [thread overview]
Message-ID: <20181220122825.GA17138@kroah.com> (raw)
In-Reply-To: <20181220122324.17082-1-david@fromorbit.com>
On Thu, Dec 20, 2018 at 11:23:24PM +1100, Dave Chinner wrote:
> From: Dave Chinner <dchinner@redhat.com>
>
> This reverts commit 61c6de667263184125d5ca75e894fcad632b0dd3.
>
> The reverted commit added page reference counting to iomap page
> structures that are used to track block size < page size state. This
> was supposed to align the code with page migration page accounting
> assumptions, but what it has done instead is break XFS filesystems.
> Every fstests run I've done on sub-page block size XFS filesystems
> has since picking up this commit 2 days ago has failed with bad page
> state errors such as:
>
> # ./run_check.sh "-m rmapbt=1,reflink=1 -i sparse=1 -b size=1k" "generic/038"
> ....
> SECTION -- xfs
> FSTYP -- xfs (debug)
> PLATFORM -- Linux/x86_64 test1 4.20.0-rc6-dgc+
> MKFS_OPTIONS -- -f -m rmapbt=1,reflink=1 -i sparse=1 -b size=1k /dev/sdc
> MOUNT_OPTIONS -- /dev/sdc /mnt/scratch
>
> generic/038 454s ...
> run fstests generic/038 at 2018-12-20 18:43:05
> XFS (sdc): Unmounting Filesystem
> XFS (sdc): Mounting V5 Filesystem
> XFS (sdc): Ending clean mount
> BUG: Bad page state in process kswapd0 pfn:3a7fa
> page:ffffea0000ccbeb0 count:0 mapcount:0 mapping:ffff88800d9b6360 index:0x1
> flags: 0xfffffc0000000()
> raw: 000fffffc0000000 dead000000000100 dead000000000200 ffff88800d9b6360
> raw: 0000000000000001 0000000000000000 00000000ffffffff
> page dumped because: non-NULL mapping
> CPU: 0 PID: 676 Comm: kswapd0 Not tainted 4.20.0-rc6-dgc+ #915
> Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.11.1-1 04/01/2014
> Call Trace:
> dump_stack+0x67/0x90
> bad_page.cold.116+0x8a/0xbd
> free_pcppages_bulk+0x4bf/0x6a0
> free_unref_page_list+0x10f/0x1f0
> shrink_page_list+0x49d/0xf50
> shrink_inactive_list+0x19d/0x3b0
> shrink_node_memcg.constprop.77+0x398/0x690
> ? shrink_slab.constprop.81+0x278/0x3f0
> shrink_node+0x7a/0x2f0
> kswapd+0x34b/0x6d0
> ? node_reclaim+0x240/0x240
> kthread+0x11f/0x140
> ? __kthread_bind_mask+0x60/0x60
> ret_from_fork+0x24/0x30
> Disabling lock debugging due to kernel taint
> ....
>
> The failures are from anyway that frees pages and empties the
> per-cpu page magazines, so it's not a predictable failure or an easy
> to debug failure.
>
> generic/038 is a reliable reproducer of this problem - it has a 9 in
> 10 failure rate on one of my test machines. Failure on other
> machines have been at random points in fstests runs but every run
> has ended up tripping this problem. Hence generic/038 was used to
> bisect the failure because it was the most reliable failure.
>
> It is too close to the 4.20 release (not to mention holidays) to
> try to diagnose, fix and test the underlying cause of the problem,
> so reverting the commit is the only option we have right now. The
> revert has been tested against a current tot 4.20-rc7+ kernel across
> multiple machines running sub-page block size XFs filesystems and
> none of the bad page state failures have been seen.
>
> Signed-off-by: Dave Chinner <dchinner@redhat.com>
> ---
> fs/iomap.c | 7 -------
> 1 file changed, 7 deletions(-)
<formletter>
This is not the correct way to submit patches for inclusion in the
stable kernel tree. Please read:
https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html
for how to do this properly.
</formletter>
next prev parent reply other threads:[~2018-12-20 12:28 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-12-20 12:23 [PATCH] iomap: Revert "fs/iomap.c: get/put the page in iomap_page_create/release()" Dave Chinner
2018-12-20 12:28 ` Greg KH [this message]
2018-12-20 20:57 ` Dave Chinner
2018-12-21 7:40 ` Greg KH
2018-12-21 22:06 ` Eric Sandeen
2018-12-22 0:04 ` Sasha Levin
2018-12-20 17:41 ` Christoph Hellwig
2018-12-20 20:53 ` Dave Chinner
2018-12-20 22:42 ` Linus Torvalds
2018-12-21 9:39 ` Christoph Hellwig
2018-12-21 19:18 ` Linus Torvalds
2018-12-21 19:20 ` Christoph Hellwig
2018-12-21 19:26 ` Linus Torvalds
2018-12-21 21:58 ` Dave Chinner
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=20181220122825.GA17138@kroah.com \
--to=gregkh@linuxfoundation.org \
--cc=akpm@linux-foundation.org \
--cc=david@fromorbit.com \
--cc=hch@lst.de \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-xfs@vger.kernel.org \
--cc=pjaroszynski@nvidia.com \
--cc=stable@vger.kernel.org \
--cc=torvalds@linux-foundation.org \
--cc=william.kucharski@oracle.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.