From: Dave Chinner <david@fromorbit.com>
To: Christoph Hellwig <hch@lst.de>
Cc: linux-xfs@vger.kernel.org
Subject: Re: delalloc and reflink fixes & tweaks
Date: Wed, 19 Sep 2018 09:00:57 +1000 [thread overview]
Message-ID: <20180918230057.GK27618@dastard> (raw)
In-Reply-To: <20180918181728.GA7171@lst.de>
On Tue, Sep 18, 2018 at 08:17:28PM +0200, Christoph Hellwig wrote:
> On Tue, Sep 18, 2018 at 07:23:23AM +1000, Dave Chinner wrote:
> > Do you have any numbers that demonstrate the performance impact of
> > the preallocation change? We've always intended to fix this exposure
> > issue as you've done, I'm just interested in the sort of impact it
> > has (if any).
>
> For the absolute worst case - completely random 4k writes to a sparse
> file I see a slowdown of about 3%. Which is less than the improvement
> that we saw from removing buffer heads.
Nice! I didn't expect a huge hit, and this is right in the ballpark
of what I was expecting. I think we can live with this.
> > Also, with this change to use unwritten extents for all delalloc
> > extents, we can start doing speculative preallocation for writes
> > into holes inside EOF without leaving uninitialised/unzeroed blocks
> > laying around.
>
> Careful. We already have issues because delalloc blocks before EOF don't
> ever get reclaimed. This triggers up on xfs/442 with 1k blocksize for
> me. I actually have a fix for that now, but that will require dropping
> one of the cleanup patches from this series, so expect a respin.
Yeah, I didn't say everything already worked, just that using
preallocation for delalloc gets rid of the stale data exposure
problem that has prevented us from doing this in the past.
(Technically speaking, it has already been done in the past - ~1999,
IIRC - but that got yanked pretty quickly when the stale data
exposure problems were reported ;)
> If we want to more generic preallocation I guess we should follow the
> example of the COW direct I/O path and mark all preallocated extents
> as unwritten - that way we know delalloc extents that have the unwritten
> bit set can be safely reclaimed. But that is more work than I want
> to do for this merge window at least.
That's sounds like a good idea, and a good direction to head
towards. No immediate hurry, just trying to understand where you
might be going with these changes.
Cheers,
Dave.
--
Dave Chinner
david@fromorbit.com
next prev parent reply other threads:[~2018-09-19 4:35 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-09-17 20:53 delalloc and reflink fixes & tweaks Christoph Hellwig
2018-09-17 20:53 ` [PATCH 01/10] xfs: fix transaction leak in xfs_reflink_allocate_cow() Christoph Hellwig
2018-09-17 23:51 ` Darrick J. Wong
2018-09-17 20:53 ` [PATCH 02/10] xfs: don't bring in extents in xfs_bmap_punch_delalloc_range Christoph Hellwig
2018-09-20 20:23 ` Darrick J. Wong
2018-09-17 20:53 ` [PATCH 03/10] xfs: remove XFS_IO_INVALID Christoph Hellwig
2018-09-20 20:31 ` Darrick J. Wong
2018-09-27 18:38 ` Christoph Hellwig
2018-09-17 20:53 ` [PATCH 04/10] xfs: simplify the IOMAP_ZERO check in xfs_file_iomap_begin a bit Christoph Hellwig
2018-09-20 20:31 ` Darrick J. Wong
2018-09-26 15:17 ` Brian Foster
2018-09-27 18:40 ` Christoph Hellwig
2018-09-17 20:53 ` [PATCH 05/10] xfs: handle zeroing in xfs_file_iomap_begin_delay Christoph Hellwig
2018-09-17 20:53 ` [PATCH 06/10] xfs: always allocate blocks as unwritten for file data Christoph Hellwig
2018-09-17 20:53 ` [PATCH 07/10] xfs: handle extent size hints in xfs_file_iomap_begin_delay Christoph Hellwig
2018-09-26 15:17 ` Brian Foster
2018-10-01 12:38 ` Christoph Hellwig
2018-09-17 20:53 ` [PATCH 08/10] xfs: remove the unused shared argument to xfs_reflink_reserve_cow Christoph Hellwig
2018-09-17 20:53 ` [PATCH 09/10] xfs: remove the unused trimmed argument from xfs_reflink_trim_around_shared Christoph Hellwig
2018-09-17 20:53 ` [PATCH 10/10] xfs: use a separate iomap_ops for delalloc writes Christoph Hellwig
2018-09-26 15:18 ` Brian Foster
2018-10-01 12:40 ` Christoph Hellwig
2018-09-17 21:23 ` delalloc and reflink fixes & tweaks Dave Chinner
2018-09-18 18:17 ` Christoph Hellwig
2018-09-18 23:00 ` Dave Chinner [this message]
2018-09-19 5:40 ` 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=20180918230057.GK27618@dastard \
--to=david@fromorbit.com \
--cc=hch@lst.de \
--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).