From: "Darrick J. Wong" <darrick.wong@oracle.com>
To: Christoph Hellwig <hch@infradead.org>
Cc: Christoph Hellwig <hch@lst.de>, xfs@oss.sgi.com
Subject: Re: [PATCH 3/3] xfs: cancel COW in xfs_cancel_ioend
Date: Wed, 6 Jan 2016 16:32:27 -0800 [thread overview]
Message-ID: <20160107003227.GB8015@birch.djwong.org> (raw)
In-Reply-To: <20160105104214.GA16310@infradead.org>
On Tue, Jan 05, 2016 at 02:42:14AM -0800, Christoph Hellwig wrote:
> On Mon, Jan 04, 2016 at 05:43:10PM -0800, Darrick J. Wong wrote:
> > Hmm. This might be the cause of the occasional complaints I've been seeing
> > where allocated blocks remain in the COW fork when the inode is being cleared
> > out. That said, the xfs_reflink_end_cow_failed() is apparently missing a
> > xfs_bunmapi_cow() to actually clean out the COW fork.
>
> I can still reproduce xfs_reflink_cancel_pending_cow tripping over
> allocated blocks in the COW fork over NFS. generic/154 reproduces
> it 100% over NFS, although when adding a delay before the cleanup
> it disappears. I'm currently trying to figure out why.
Ok. I spent a couple of days trying to find all the places where we need to
delete CoW reservations (hole punch, truncate, etc.) and found some places
where the code was leaving reservations behind in the CoW fork (most notable
truncate). I also made the inode eviction code purge any CoW leftovers, so
that should all go away.
I also wrote some more xfstests that try to hit all the CoW-cancelling code
paths (fpunch, fzero, fcollapse, finsert, truncate, -EIO) to smoke test all
that. By the way, do you have a testcase handy for the "non-blocking writeback
EAGAIN" case? I'm guessing that we could hit that pretty easily by lowering
dirty_background_* and dirtying a lot of pages while reflinking?
(Will push new code to github in a day or two.)
--D
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
next prev parent reply other threads:[~2016-01-07 0:33 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-03 12:07 reflink fixes Christoph Hellwig
2016-01-03 12:07 ` [PATCH 1/3] xfs: pass inode instead of file to xfs_reflink_dirty_range Christoph Hellwig
2016-01-05 1:23 ` Darrick J. Wong
2016-01-03 12:07 ` [PATCH 2/3] xfs: only end a COW operation in xfs_zero_remaining_bytes if we started one Christoph Hellwig
2016-01-05 1:28 ` Darrick J. Wong
2016-01-03 12:07 ` [PATCH 3/3] xfs: cancel COW in xfs_cancel_ioend Christoph Hellwig
2016-01-05 1:43 ` Darrick J. Wong
2016-01-05 10:42 ` Christoph Hellwig
2016-01-07 0:32 ` Darrick J. Wong [this message]
2016-01-07 15:25 ` Christoph Hellwig
2016-01-08 10:09 ` Darrick J. Wong
2016-01-08 13:47 ` Christoph Hellwig
2016-01-09 21:17 ` Darrick J. Wong
2016-01-10 7:54 ` Christoph Hellwig
2016-01-10 22:48 ` Darrick J. Wong
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=20160107003227.GB8015@birch.djwong.org \
--to=darrick.wong@oracle.com \
--cc=hch@infradead.org \
--cc=hch@lst.de \
--cc=xfs@oss.sgi.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox