From: Brendan Higgins <brendanhiggins@google.com>
To: Luis Chamberlain <mcgrof@kernel.org>
Cc: Dave Chinner <david@fromorbit.com>,
Christoph Hellwig <hch@lst.de>,
"Darrick J . Wong" <darrick.wong@oracle.com>,
Damien Le Moal <Damien.LeMoal@wdc.com>,
Andreas Gruenbacher <agruenba@redhat.com>,
linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 11/12] iomap: move the xfs writeback code to iomap.c
Date: Thu, 11 Jul 2019 14:31:15 -0700 [thread overview]
Message-ID: <CAFd5g46kRfQYkobqXta8GJibkEnUDv2oWXp+JZurRtydotbsuA@mail.gmail.com> (raw)
In-Reply-To: <20190628222756.GM19023@42.do-not-panic.com>
On Fri, Jun 28, 2019 at 3:28 PM Luis Chamberlain <mcgrof@kernel.org> wrote:
>
> On Fri, Jun 28, 2019 at 10:45:42AM +1000, Dave Chinner wrote:
> > On Tue, Jun 25, 2019 at 12:10:20PM +0200, Christoph Hellwig wrote:
> > > On Tue, Jun 25, 2019 at 09:43:04AM +1000, Dave Chinner wrote:
> > > > I'm a little concerned this is going to limit what we can do
> > > > with the XFS IO path because now we can't change this code without
> > > > considering the direct impact on other filesystems. The QA burden of
> > > > changing the XFS writeback code goes through the roof with this
> > > > change (i.e. we can break multiple filesystems, not just XFS).
> > >
> > > Going through the roof is a little exaggerated.
> >
> > You've already mentioned two new users you want to add. I don't even
> > have zone capable hardware here to test one of the users you are
> > indicating will use this code, and I suspect that very few people
> > do. That's a non-trivial increase in testing requirements for
> > filesystem developers and distro QA departments who will want to
> > change and/or validate this code path.
>
> A side topic here:
>
> Looking towards the future of prosects here with regards to helping QA
> and developers with more confidence in API changes (kunit is one
> prospect we're evaluating)...
>
> If... we could somehow... codify what XFS *requires* from the API
> precisely... would that help alleviate concerns or bring confidence in
> the prospect of sharing code?
>
> Or is it simply an *impossibility* to address these concerns in question by
> codifying tests for the promised API?
>
> Ie, are the concerns something which could be addressed with strict
> testing on adherence to an API, or are the concerns *unknown* side
> dependencies which could not possibly be codified?
Thanks for pointing this out, Luis. This is a really important
distinction. In the former case, I think as has become apparent in
your example below; KUnit has a strong potential to be able to
formally specify API behavior and guarantee compliance.
However, as you point out there are many *unknown* dependencies which
always have a way of sneaking into API informal specifications. I have
some colleagues working on this problem for unknown server API
dependencies; nevertheless, to my knowledge this is an unsolved
problem.
One partial solution I have seen is to put a system in place to record
live traffic so that it can be later replayed in a test environment.
Another partial solution is a modified form of fuzz testing similar to
what Haskell's QuickCheck[1] does, which basically attempts to allow
users to specify the kinds of data they expect to handle in such a way
that QuickCheck is able to generate random data, pass it into the API,
and verify the results satisfy the contract. I actually wrote a
prototype of this for KUnit, but haven't publicly shared it yet since
I thought it was kind of an out there idea (plus KUnit was pretty far
away from being merged at the time).
Still, a QuickCheck style test will always have the problem that the
contract will likely underspecify things, and if not, the test may
still never run long enough to cover all interesting cases. I have
heard of attempts to solve this problem by combining the two prior
approaches in novel ways (like using a QuckCheck style specification
to mutate real recorded data).
Anyway, sorry for the tangent, but I would be really interested to
know whether you think the problem is more of the just testing the
formally specified contract or the problem lies in unknown
dependencies that Luis mentioned, and in either case whether you would
find any of these ideas useful.
> As an example of the extent possible to codify API promise (although
> I beleive it was unintentional at first), see:
>
> http://lkml.kernel.org/r/20190626021744.GU19023@42.do-not-panic.com
[1] http://www.cse.chalmers.se/~rjmh/QuickCheck/manual.html
Cheers!
next prev parent reply other threads:[~2019-07-11 21:31 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-06-24 5:52 lift the xfs writepage code into iomap Christoph Hellwig
2019-06-24 5:52 ` [PATCH 01/12] list.h: add a list_pop helper Christoph Hellwig
2019-06-24 14:53 ` Darrick J. Wong
2019-06-24 15:51 ` Matthew Wilcox
2019-06-25 10:06 ` Christoph Hellwig
2019-06-24 5:52 ` [PATCH 02/12] xfs: simplify xfs_chain_bio Christoph Hellwig
2019-06-24 15:14 ` Darrick J. Wong
2019-06-24 5:52 ` [PATCH 03/12] xfs: fix a comment typo in xfs_submit_ioend Christoph Hellwig
2019-06-24 14:53 ` Darrick J. Wong
2019-06-24 5:52 ` [PATCH 04/12] xfs: initialize ioma->flags in xfs_bmbt_to_iomap Christoph Hellwig
2019-06-24 14:57 ` Darrick J. Wong
2019-06-25 10:07 ` Christoph Hellwig
2019-06-25 15:13 ` Darrick J. Wong
2019-06-25 15:21 ` Christoph Hellwig
2019-06-24 5:52 ` [PATCH 05/12] xfs: use a struct iomap in xfs_writepage_ctx Christoph Hellwig
2019-06-24 15:50 ` Darrick J. Wong
2019-06-24 5:52 ` [PATCH 06/12] xfs: remove XFS_TRANS_NOFS Christoph Hellwig
2019-06-24 15:58 ` Darrick J. Wong
2019-06-24 22:59 ` Dave Chinner
2019-06-25 10:12 ` Christoph Hellwig
2019-06-24 5:52 ` [PATCH 07/12] xfs: don't preallocate a transaction for file size updates Christoph Hellwig
2019-06-24 16:17 ` Darrick J. Wong
2019-06-24 23:15 ` Dave Chinner
2019-06-25 10:25 ` Christoph Hellwig
2019-06-27 22:23 ` Dave Chinner
2019-06-24 5:52 ` [PATCH 08/12] xfs: simplify xfs_ioend_can_merge Christoph Hellwig
2019-06-24 16:00 ` Darrick J. Wong
2019-06-24 5:52 ` [PATCH 09/12] xfs: refactor the ioend merging code Christoph Hellwig
2019-06-24 16:04 ` Darrick J. Wong
2019-06-24 16:06 ` Nikolay Borisov
2019-06-25 10:14 ` Christoph Hellwig
2019-06-25 12:42 ` Nikolay Borisov
2019-06-25 14:45 ` Darrick J. Wong
2019-06-24 5:52 ` [PATCH 10/12] xfs: remove the fork fields in the writepage_ctx and ioend Christoph Hellwig
2019-06-24 16:08 ` Darrick J. Wong
2019-06-24 5:52 ` [PATCH 11/12] iomap: move the xfs writeback code to iomap.c Christoph Hellwig
2019-06-24 15:46 ` Darrick J. Wong
2019-06-25 10:08 ` Christoph Hellwig
2019-06-24 23:43 ` Dave Chinner
2019-06-25 10:10 ` Christoph Hellwig
2019-06-28 0:45 ` Dave Chinner
2019-06-28 5:33 ` Christoph Hellwig
2019-07-01 0:08 ` Dave Chinner
2019-07-01 6:43 ` Christoph Hellwig
2019-07-01 23:09 ` Dave Chinner
2019-06-28 22:27 ` Luis Chamberlain
2019-07-11 21:31 ` Brendan Higgins [this message]
2019-06-24 5:52 ` [PATCH 12/12] iomap: add tracing for the address space operations Christoph Hellwig
2019-06-24 23:49 ` Dave Chinner
2019-06-25 10:15 ` Christoph Hellwig
2019-06-25 14:47 ` Darrick J. Wong
2019-06-27 22:35 ` 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=CAFd5g46kRfQYkobqXta8GJibkEnUDv2oWXp+JZurRtydotbsuA@mail.gmail.com \
--to=brendanhiggins@google.com \
--cc=Damien.LeMoal@wdc.com \
--cc=agruenba@redhat.com \
--cc=darrick.wong@oracle.com \
--cc=david@fromorbit.com \
--cc=hch@lst.de \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-xfs@vger.kernel.org \
--cc=mcgrof@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).