linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Christoph Hellwig <hch@lst.de>
To: Dave Chinner <david@fromorbit.com>
Cc: 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@vger.kernel.org
Subject: Re: [PATCH 11/12] iomap: move the xfs writeback code to iomap.c
Date: Mon, 1 Jul 2019 08:43:33 +0200	[thread overview]
Message-ID: <20190701064333.GA20778@lst.de> (raw)
In-Reply-To: <20190701000859.GL7777@dread.disaster.area>

On Mon, Jul 01, 2019 at 10:08:59AM +1000, Dave Chinner wrote:
> > Why do you assume you have to test it?  Back when we shared
> > generic_file_read with everyone you also didn't test odd change to
> > it with every possible fs.
> 
> I'm not sure what function you are referring to here. Can you
> clarify?

Right now it is generic_file_read_iter(), but before iter it was
generic_file_readv, generic_file_read, etc.

> > If you change iomap.c, you'll test it
> > with XFS, and Cc other maintainers so that they get a chance to
> > also test it and comment on it, just like we do with other shared
> > code in the kernel.
> 
> Which is why we've had problems with the generic code paths in the
> past and other filesystems just copy and paste then before making
> signficant modifications. e.g. both ext4 and btrfs re-implement
> write_cache_pages() rather than use the generic writeback code
> because they have slightly different requirements and those
> developers don't want to have to worry about other filesystems every
> time there is an internal filesystem change that affects their
> writeback constraints...
> 
> That's kinda what I'm getting at here: writeback isn't being shared
> by any of the major filesystems for good reasons...

I very fundamentally disagree.  It is not shared for a bad reasons,
and that is people not understanding the mess that the buffer head
based code is, and not wanting to understand it.  So they come up
with their own piecemeal "improvements" for it making the situation
worse.  Writeback is fundamentally not fs specific in any way.  Different
file system might use different optional features like unwrittent
extents, delalloc, data checksums, but once they implement them the
behavior should be uniform.

And I'd much rather fix this than going down the copy an paste and
slightly tweak it while fucking up something else route.

> > stone age.  Very little is about XFS itself, most of it has been
> > about not being stupid in a fairly generic way.  And every since
> > I got rid of buffer heads xfs_aops.c has been intimately tied
>   ^^^^^^^^^^^^^^^^^^^^^^^^^
> 
> *cough*
> 
> Getting rid of bufferheads in writeback was largely a result of work
> I did over a period of several years, thank you very much. Yes, work
> you did over the same time period also got us there, but it's not
> all your work.

Sorry Dave - this isn't avoud taking credit of past work.  But ever
since I finally got rid of bufferhads and introduced struct iomap_page
we have this intimate tie up, which is the point here.

> e.g. XFS requires COW fork manipulation on ioend submission
> (xfs_submit_ioend() calls xfs_reflink_convert_cow()) and this has
> some nasty memory allocation requirements (potential deadlock
> situation). So the generic code has a hook for this XFS specific
> functionality, even though no other filesystem if likely to ever
> need this. And this is something we've been discussion getting rid
> of from the XFS writeback path. i.e. reworking how we do all
> the COW fork interactions in writeback. So some of these hooks are
> suspect even now, and we're already trying to work out how to
> re-work the XFS writeback path to sort out problems we have with it.

Every file system that writes out of place will need some sort of
hook here with the same issue, no matter if they call it COW fork
or manipulate some all integrated data structure like btrfs.  Moreover
btrfs will also have to deal with their data checksum in exactly this
place.

> That's the point I'm trying to make - the whole "generic" iomap
> writeback API proposal is based around exactly the functionality XFS
> - and only XFS - requires at this point in time. There are no other
> users of this API and until there are, we've got no idea how
> generic this functionality really is and just how much overhead
> making fundamental changes to the XFS writeback code are going to
> entail in future.

No, it is based around generalizing what we have in xfs so that we
can use it elsewhere.  With zonefs and gfs2 as the prime users
initially, and other like btrfs hopefully to not far away.

  reply	other threads:[~2019-07-01  6:43 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 [this message]
2019-07-01 23:09               ` Dave Chinner
2019-06-28 22:27         ` Luis Chamberlain
2019-07-11 21:31           ` Brendan Higgins
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=20190701064333.GA20778@lst.de \
    --to=hch@lst.de \
    --cc=Damien.LeMoal@wdc.com \
    --cc=agruenba@redhat.com \
    --cc=darrick.wong@oracle.com \
    --cc=david@fromorbit.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-xfs@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).