linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Darrick J. Wong" <darrick.wong@oracle.com>
To: Sasha Levin <sashal@kernel.org>
Cc: Greg KH <gregkh@linuxfoundation.org>,
	Dave Chinner <david@fromorbit.com>,
	stable@vger.kernel.org, linux-kernel@vger.kernel.org,
	Dave Chinner <dchinner@redhat.com>,
	linux-fsdevel@vger.kernel.org, xfs <linux-xfs@vger.kernel.org>
Subject: Re: [PATCH AUTOSEL 4.14 25/35] iomap: sub-block dio needs to zeroout beyond EOF
Date: Fri, 30 Nov 2018 12:35:27 -0800	[thread overview]
Message-ID: <20181130203527.GP8125@magnolia> (raw)
In-Reply-To: <20181130101441.GA213156@sasha-vm>

On Fri, Nov 30, 2018 at 05:14:41AM -0500, Sasha Levin wrote:
> On Fri, Nov 30, 2018 at 09:22:03AM +0100, Greg KH wrote:
> > On Fri, Nov 30, 2018 at 09:40:19AM +1100, Dave Chinner wrote:
> > > I stopped my tests at 5 billion ops yesterday (i.e. 20 billion ops
> > > aggregate) to focus on testing the copy_file_range() changes, but
> > > Darrick's tests are still ongoing and have passed 40 billion ops in
> > > aggregate over the past few days.
> > > 
> > > The reason we are running these so long is that we've seen fsx data
> > > corruption failures after 12+ hours of runtime and hundreds of
> > > millions of ops. Hence the testing for backported fixes will need to
> > > replicate these test runs across multiple configurations for
> > > multiple days before we have any confidence that we've actually
> > > fixed the data corruptions and not introduced any new ones.
> > > 
> > > If you pull only a small subset of the fixes, the fsx will still
> > > fail and we have no real way of actually verifying that there have
> > > been no regression introduced by the backport.  IOWs, there's a
> > > /massive/ amount of QA needed for ensuring that these backports work
> > > correctly.
> > > 
> > > Right now the XFS developers don't have the time or resources
> > > available to validate stable backports are correct and regression
> > > fre because we are focussed on ensuring the upstream fixes we've
> > > already made (and are still writing) are solid and reliable.

I feel the need to contribute my own interpretation of what's been going
on the last four months:

What you're seeing is not the usual level of reluctance to backport
fixes to LTS kernels, it's our own frustrations at the kernel
community's systemic inability to QA new fs features properly.

Four months ago (prior to 4.19) Zorro started digging into periodic test
failures with shared/010, which resulted in some fixes to the btrfs
dedupe and clone range ioctl implementations.  He then saw the same
failures on XFS.

Dave and I stared at the btrfs patches for a while, then started looking
at the xfs counterparts, and realized that nobody had ever added those
commands to the fstests stressor programs, nor had anyone ever encoded
into a test the side effects of a file remap (mtime update, removal of
suid).  Nor were there any tests to ensure that these ioctls couldn't be
abused to violate system security and stability constraints.

That's why I refactored a whole ton of vfs file remap code for 4.20, and
(with the help of Dave and Brian and others) worked on fixing all the
problems where fsx and fsstress demonstrate file corruption problems.

Then we started asking the same questions of the copy_file_range system
call, and discovered that yes, we have all of the same problems.  We
also discovered several failure cases that aren't mentioned in any
documentation, which has complicated the generation of automatable
tests.  Worse yet, the stressor programs fell over even sooner with the
fallback splice implementation.

TLDR: New features show up in the vfs without a lot of design
documentation, incomplete userspace interface manuals, and not much
beyond trivial testing.

So the problem I'm facing here is that the XFS team are singlehandedly
trying to pay off years of accumulated technical debt in the vfs.  We
definitely had a role in adding to that debt, so we're fixing it.

Dave is now refactoring the copy_file_range backend to implement all the
necessary security and stability checks, and I'm still QAing all the
stuff we've added to 4.20.

We're not finished, where "finished" means that we can get /one/ kernel
tree to go ~100 billion fsxops without burping up failures, and we've
written fstests to check that said kernel can handle correctly all the
weird side cases.

Until all those fstests go upstream, I don't want to spread out into
backporting and testing LTS kernels, even with test automation.  By the
time we're done with all our upstream work you ought to be able to
autosel backport the whole mess into the LTS kernels /and/ fstests will
be able to tell you if the autosel has succeeded without causing any
obvious regressions.

> > Ok, that's fine, so users of XFS should wait until the 4.20 release
> > before relying on it?  :)

At the rate we're going, we're not going to finish until 4.21, but yes,
let's wait until 4.20 is closer to release to start in on porting all of
its fixes to 4.14/4.19.

> It's getting to the point that with the amount of known issues with XFS
> on LTS kernels it makes sense to mark it as CONFIG_BROKEN.

These aren't all issues specific to XFS; some plague every fs in subtle
weird ways that only show up with extreme testing.  We need the extreme
testing to flush out as many bugs as we can before enabling the feature
by default.  XFS reflink is not enabled by default and due to all this
is not likely to get it any time soon.

(That copy_file_range syscall should have been rigorously tested before
it was turned on in the kernel...)

> > I understand your reluctance to want to backport anything, but it really
> > feels like you are not even allowing for fixes that are "obviously
> > right" to be backported either, even after they pass testing.  Which
> > isn't ok for your users.
> 
> Do the XFS maintainers expect users to always use the latest upstream
> kernel?

For features that are EXPERIMENTAL or aren't enabled by default, yes,
they should be.

--D

> 
> --
> Thanks,
> Sasha

  reply	other threads:[~2018-11-30 20:35 UTC|newest]

Thread overview: 59+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-29  6:00 [PATCH AUTOSEL 4.14 01/35] media: omap3isp: Unregister media device as first Sasha Levin
2018-11-29  6:00 ` [PATCH AUTOSEL 4.14 02/35] iommu/vt-d: Fix NULL pointer dereference in prq_event_thread() Sasha Levin
2018-11-29  6:00 ` [PATCH AUTOSEL 4.14 03/35] brcmutil: really fix decoding channel info for 160 MHz bandwidth Sasha Levin
2018-11-29  6:00 ` [PATCH AUTOSEL 4.14 04/35] iommu/ipmmu-vmsa: Fix crash on early domain free Sasha Levin
2018-11-29  6:00 ` [PATCH AUTOSEL 4.14 05/35] can: rcar_can: Fix erroneous registration Sasha Levin
2018-11-29  6:00 ` [PATCH AUTOSEL 4.14 06/35] test_firmware: fix error return getting clobbered Sasha Levin
2018-11-29  6:00 ` [PATCH AUTOSEL 4.14 07/35] HID: input: Ignore battery reported by Symbol DS4308 Sasha Levin
2018-11-29  6:00 ` [PATCH AUTOSEL 4.14 08/35] batman-adv: Use explicit tvlv padding for ELP packets Sasha Levin
2018-11-29  6:00 ` [PATCH AUTOSEL 4.14 09/35] batman-adv: Expand merged fragment buffer for full packet Sasha Levin
2018-11-29  6:00 ` [PATCH AUTOSEL 4.14 10/35] amd/iommu: Fix Guest Virtual APIC Log Tail Address Register Sasha Levin
2018-11-29  6:00 ` [PATCH AUTOSEL 4.14 11/35] bnx2x: Assign unique DMAE channel number for FW DMAE transactions Sasha Levin
2018-11-29  6:00 ` [PATCH AUTOSEL 4.14 12/35] qed: Fix PTT leak in qed_drain() Sasha Levin
2018-11-29  6:00 ` [PATCH AUTOSEL 4.14 13/35] qed: Fix reading wrong value in loop condition Sasha Levin
2018-11-29  6:00 ` [PATCH AUTOSEL 4.14 14/35] Revert "usb: gadget: ffs: Fix BUG when userland exits with submitted AIO transfers" Sasha Levin
2018-11-29  6:00 ` [PATCH AUTOSEL 4.14 15/35] net/mlx4_core: Zero out lkey field in SW2HW_MPT fw command Sasha Levin
2018-11-29  6:00 ` [PATCH AUTOSEL 4.14 16/35] net/mlx4_core: Fix uninitialized variable compilation warning Sasha Levin
2018-11-29  6:00 ` [PATCH AUTOSEL 4.14 17/35] net/mlx4: Fix UBSAN warning of signed integer overflow Sasha Levin
2018-11-29  6:00 ` [PATCH AUTOSEL 4.14 18/35] gpio: mockup: fix indicated direction Sasha Levin
2018-11-29  6:00 ` [PATCH AUTOSEL 4.14 19/35] mtd: rawnand: qcom: Namespace prefix some commands Sasha Levin
2018-11-29  6:00 ` [PATCH AUTOSEL 4.14 20/35] exec: make de_thread() freezable Sasha Levin
2018-11-29  6:00 ` [PATCH AUTOSEL 4.14 21/35] HID: multitouch: Add pointstick support for Cirque Touchpad Sasha Levin
2018-11-29  6:00 ` [PATCH AUTOSEL 4.14 22/35] mtd: spi-nor: Fix Cadence QSPI page fault kernel panic Sasha Levin
2018-11-29  6:00 ` [PATCH AUTOSEL 4.14 23/35] qed: Fix bitmap_weight() check Sasha Levin
2018-11-29  6:00 ` [PATCH AUTOSEL 4.14 24/35] qed: Fix QM getters to always return a valid pq Sasha Levin
2018-11-29  6:00 ` [PATCH AUTOSEL 4.14 25/35] iomap: sub-block dio needs to zeroout beyond EOF Sasha Levin
2018-11-29 12:14   ` Dave Chinner
2018-11-29 12:47     ` Greg KH
2018-11-29 22:40       ` Dave Chinner
2018-11-30  8:22         ` Greg KH
2018-11-30 10:14           ` Sasha Levin
2018-11-30 20:35             ` Darrick J. Wong [this message]
2018-11-30 21:50             ` Dave Chinner
2018-12-01  7:49               ` Sasha Levin
2018-12-01  9:09                 ` XFS patches for stable Amir Goldstein
2018-12-02 15:25                   ` Sasha Levin
2018-12-02 16:10                     ` Christoph Hellwig
2018-12-02 20:08                       ` Greg KH
2018-12-03 14:41                         ` Richard Weinberger
2018-12-03 16:56                           ` Sasha Levin
2018-12-02 23:23                 ` [PATCH AUTOSEL 4.14 25/35] iomap: sub-block dio needs to zeroout beyond EOF Dave Chinner
2018-12-03  7:11                   ` Amir Goldstein
2018-12-03  9:22                   ` Sasha Levin
2018-12-03 21:23                     ` Thomas Backlund
2018-12-04  7:28                       ` Greg KH
2018-12-04  8:12                       ` Sasha Levin
2018-12-28  8:06                       ` Pavel Machek
2018-12-29 23:35                         ` Dave Chinner
2018-11-30 21:45           ` Dave Chinner
2018-12-02 20:11             ` Greg KH
2018-11-29  6:01 ` [PATCH AUTOSEL 4.14 26/35] net: faraday: ftmac100: remove netif_running(netdev) check before disabling interrupts Sasha Levin
2018-11-29  6:01 ` [PATCH AUTOSEL 4.14 27/35] iommu/vt-d: Use memunmap to free memremap Sasha Levin
2018-11-29  6:01 ` [PATCH AUTOSEL 4.14 28/35] flexfiles: use per-mirror specified stateid for IO Sasha Levin
2018-11-29  6:01 ` [PATCH AUTOSEL 4.14 29/35] net: thunderx: set xdp_prog to NULL if bpf_prog_add fails Sasha Levin
2018-11-29  6:01 ` [PATCH AUTOSEL 4.14 30/35] ibmvnic: Fix RX queue buffer cleanup Sasha Levin
2018-11-29  6:01 ` [PATCH AUTOSEL 4.14 31/35] virtio-net: disable guest csum during XDP set Sasha Levin
2018-11-29  6:01 ` [PATCH AUTOSEL 4.14 32/35] virtio-net: fail XDP set if guest csum is negotiated Sasha Levin
2018-11-29  6:01 ` [PATCH AUTOSEL 4.14 33/35] team: no need to do team_notify_peers or team_mcast_rejoin when disabling port Sasha Levin
2018-11-29  6:01 ` [PATCH AUTOSEL 4.14 34/35] net: amd: add missing of_node_put() Sasha Levin
2018-11-29  6:01 ` [PATCH AUTOSEL 4.14 35/35] net: thunderx: set tso_hdrs pointer to NULL in nicvf_free_snd_queue Sasha Levin

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=20181130203527.GP8125@magnolia \
    --to=darrick.wong@oracle.com \
    --cc=david@fromorbit.com \
    --cc=dchinner@redhat.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-xfs@vger.kernel.org \
    --cc=sashal@kernel.org \
    --cc=stable@vger.kernel.org \
    /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).