From: Ross Zwisler <ross.zwisler@linux.intel.com>
To: Dave Chinner <david@fromorbit.com>
Cc: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org,
carsteno@de.ibm.com, matthew.r.wilcox@intel.com,
andreas.dilger@intel.com
Subject: Re: [PATCH v2 2/4] ext4: Add XIP functionality
Date: Sun, 08 Dec 2013 20:16:04 -0700 [thread overview]
Message-ID: <1386558964.6872.14.camel@gala> (raw)
In-Reply-To: <20131206031354.GS10988@dastard>
On Fri, 2013-12-06 at 14:13 +1100, Dave Chinner wrote:
> On Thu, Dec 05, 2013 at 01:02:46PM -0700, Ross Zwisler wrote:
> > This is a port of the XIP functionality found in the current version of
> > ext2. This patch set is intended to achieve feature parity with XIP in
> > ext2 rather than non-XIP in ext4. In particular, it lacks support for
> > splice and AIO. We'll be submitting patches in the future to add that
> > functionality, but we think this is a good start.
> >
> > The motivation behind this work is that we believe that the XIP feature
> > will begin to find new uses as various persistent memory devices and
> > technologies come on to the market. Having direct, byte-addressable
> > access to persistent memory without having an additional copy in the
> > page cache can be a win in terms of I/O latency and overall memory
> > usage.
> >
> > This patch applies cleanly to v3.13-rc2, and was tested using brd as our
> > block driver.
>
> I think I see a significant problem here with XIP write support:
> unwritten extents.
>
> xip_file_write() has no concept of post IO completion processing -
> it assumes that all that is necessary is to memcpy() the data into
> the backing memory obtained by ->get_xip_mem(), and that's all it
> needs to do.
>
> For ext4 (and other filesystems that use unwritten extents) they
> need a callback - normally done from bio completion - to run
> transactions to convert extent status from unwritten to written, or
> run other post-IO completion operations.
>
> I don't see any hooks into ext4 to turn off preallocation (e.g.
> fallocate is explicitly hooked up for XIP) when XIP is in use, so I
> can't see how XIP can work with such filesystem requirements without
> further infrastructure being added. i.e. bypassing the need for the
> page cache does not remove the need to post-IO completion
> notification to the filesystem....
>
> Indeed, for making filesystems like XFS be able to use XIP, we're
> going to need such facilities to be provided by the XIP
> infrastructure....
>
> Cheers,
>
> Dave.
Hi Dave,
You're absolutely correct, unwritten extents are an issue that was
overlooked. Thank you very much for pointing this out!
My best guess on how to fix this (as proposed by Matthew) is to wrap the
generic code in ext4 specific code that deals with unwritten extents.
For writes, I think that we need to potentially split the unwritten
extent in to up to three extents (two unwritten, one written), in the
spirit of the ext4_split_unwritten_extents().
For reads, I think we will probably have to zero the extent, mark it as
written, and then return the data normally.
For mmap, we can probably add code to the page fault handler which will
zero the unwritten extent and mark it as written, similar to what is
done for read.
My hope is that we can do this all inline in the XIP wrappers for ext4,
and avoid having to deal with callbacks.
Does this all sound generally correct? I'll start work on an example
implementation.
Regarding fragmentation on XIP, yep, this is also an issue, but one I
was hoping to address in a future patch set.
Thanks,
- Ross
next prev parent reply other threads:[~2013-12-09 3:16 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-12-05 20:02 [PATCH v2 0/4] ext4: Add XIP functionality Ross Zwisler
2013-12-05 20:02 ` [PATCH v2 1/4] Fix XIP fault vs truncate race Ross Zwisler
2013-12-05 20:02 ` [PATCH v2 2/4] ext4: Add XIP functionality Ross Zwisler
2013-12-06 3:13 ` Dave Chinner
2013-12-06 4:07 ` Matthew Wilcox
2013-12-06 5:28 ` Dave Chinner
2013-12-06 20:58 ` Dilger, Andreas
2013-12-09 3:16 ` Ross Zwisler [this message]
2013-12-09 8:19 ` Dave Chinner
2013-12-10 16:22 ` Matthew Wilcox
2013-12-10 23:09 ` Dave Chinner
2013-12-05 20:02 ` [PATCH v2 3/4] xip: Add xip_zero_page_range Ross Zwisler
2013-12-05 20:02 ` [PATCH v2 4/4] ext4: Add xip hole punching Ross Zwisler
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=1386558964.6872.14.camel@gala \
--to=ross.zwisler@linux.intel.com \
--cc=andreas.dilger@intel.com \
--cc=carsteno@de.ibm.com \
--cc=david@fromorbit.com \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=matthew.r.wilcox@intel.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;
as well as URLs for NNTP newsgroup(s).