From: Dave Chinner <david@fromorbit.com>
To: Christoph Hellwig <hch@infradead.org>
Cc: "Darrick J. Wong" <darrick.wong@oracle.com>, linux-xfs@vger.kernel.org
Subject: Re: XFS_IOC_FSEMAP requirements
Date: Fri, 23 Dec 2016 07:07:29 +1100 [thread overview]
Message-ID: <20161222200729.GT4326@dastard> (raw)
In-Reply-To: <20161222085716.GA23054@infradead.org>
On Thu, Dec 22, 2016 at 12:57:16AM -0800, Christoph Hellwig wrote:
> On Tue, Dec 20, 2016 at 05:48:16PM -0800, Darrick J. Wong wrote:
> > As for project ideas, I can think of a handful of them -- reworking the
> > in-core extent tree not to require large contiguous memory allocations,
> > sorting out reflink+dax,
>
> FYI, I have significant work done on both of them. I just need to sort
> out the ENOSPC issues (just got another report where we're running into
> ENOSPC for inobt updates, so there might be even more dragons there)
> and the DAX DIO rework, which is 90% of the work for reflink+DAX.
>
> For the extent tree I played around with a simple rbtree, but I need
> to finish abstracting away the access the the extent list - the first
> pile of that landed for 4.10, but there is a lot more to be done before
> I can easily change the representation. I'm also not sure anymore
> that the rbtree is the best choice.
And extent per rbtree node is almost certainly not the right choice
because of the object count requirement - we do not want to a
kmalloc for every extent we add to the list. At I was looking at
replacing the indirect array with an rbtree - potentially the
interval tree variant - so that we still have pages of extents and
increments/walking is still mainly just pointer increments.
That was before I found out how easy it is to use the rhashtable
code and how much faster it is for large lists than an rbtree.
That's the way I've been thinking recently, anyway...
> > and stomping out the rest of the buffer head
> > usage,
>
> The next for that is the switch bmap and buffered reads for iomap,
> I have a version that works for blocksize == page_size, just need
> to finish the blocksize < pagesize case. Once get_blocks is gone
> we should be able to just kill buffer_heads trivially for the blocksize
> == pagesize case, it's just the small block size that will require
> a significant effort. My initial plan was to just keep buffer_heads
> for those as the first step while not using them for the common
> blocksize == pagesize case.
My plan for the blocksize < page size was simply to track dirtines
on pages and forget about sub-page dirtiness. That way the
IO path is simply iterates entire pages to cover all the
mapped regions of the page. iomap already does that for us, and I
started on making writepage work that way, too. Haven't got to
working writepage code yet, though.
Cheers,
Dave.
--
Dave Chinner
david@fromorbit.com
next prev parent reply other threads:[~2016-12-22 20:08 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-12-20 10:29 XFS_IOC_FSEMAP requirements Carlos Maiolino
2016-12-21 1:48 ` Darrick J. Wong
2016-12-22 8:57 ` Christoph Hellwig
2016-12-22 20:07 ` Dave Chinner [this message]
2016-12-22 20:24 ` Christoph Hellwig
2016-12-22 9:28 ` Carlos Maiolino
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=20161222200729.GT4326@dastard \
--to=david@fromorbit.com \
--cc=darrick.wong@oracle.com \
--cc=hch@infradead.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).