From: Darrick J. Wong <djwong@kernel.org>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] RFC: switch iomap to an iterator model
Date: Mon, 19 Jul 2021 10:57:56 -0700 [thread overview]
Message-ID: <20210719175756.GM22357@magnolia> (raw)
In-Reply-To: <20210719103520.495450-1-hch@lst.de>
On Mon, Jul 19, 2021 at 12:34:53PM +0200, Christoph Hellwig wrote:
> Hi all,
>
> this series replies the existing callback-based iomap_apply to an iter based
> model. The prime aim here is to simply the DAX reflink support, which
> requires iterating through two inodes, something that is rather painful
> with the apply model. It also helps to kill an indirect call per segment
> as-is. Compared to the earlier patchset from Matthew Wilcox that this
> series is based upon it does not eliminate all indirect calls, but as the
> upside it does not change the file systems at all (except for the btrfs
> and gfs2 hooks which have slight prototype changes).
FWIW patches 9-20 look ok to me, modulo the discussion I started in
patch 8 about defining a distinct type for iomap byte lengths instead of
the combination of int/ssize_t/u64 that we use now.
> This passes basic testing on XFS for block based file systems. The DAX
> changes are entirely untested as I haven't managed to get pmem work in
> recent qemu.
This gets increasingly difficult as time goes by.
Right now I have the following bits of libvirt xml in the vm
definitions:
<maxMemory slots='32' unit='KiB'>1073741824</maxMemory>
<devices>
<memory model='nvdimm' access='shared'>
<source>
<path>/run/g.mem</path>
</source>
<target>
<size unit='KiB'>10487808</size>
<node>0</node>
</target>
<address type='dimm' slot='0'/>
</memory>
</devices>
Which seems to translate to:
-machine pc-q35-4.2,accel=kvm,usb=off,vmport=off,dump-guest-core=off,nvdimm=on
-object memory-backend-file,id=memnvdimm0,prealloc=no,mem-path=/run/g.mem,share=yes,size=10739515392,align=128M
-device nvdimm,memdev=memnvdimm0,id=nvdimm0,slot=0,label-size=2M
Evidently something was added to the pmem code(?) that makes it fussy if
the memory region doesn't align to a 128M boundary or the label isn't
big enough for ... whatever gets written into them.
The file /run/g.mem is intended to provide 10GB of pmem to the VM, with
an additional 2M allocated for the label.
--D
> Diffstat:
> b/fs/btrfs/inode.c | 5
> b/fs/buffer.c | 4
> b/fs/dax.c | 578 ++++++++++++++++++++++-------------------------
> b/fs/gfs2/bmap.c | 5
> b/fs/internal.h | 4
> b/fs/iomap/Makefile | 2
> b/fs/iomap/buffered-io.c | 344 +++++++++++++--------------
> b/fs/iomap/direct-io.c | 162 ++++++-------
> b/fs/iomap/fiemap.c | 101 +++-----
> b/fs/iomap/iter.c | 74 ++++++
> b/fs/iomap/seek.c | 88 +++----
> b/fs/iomap/swapfile.c | 38 +--
> b/fs/iomap/trace.h | 35 +-
> b/include/linux/iomap.h | 73 ++++-
> fs/iomap/apply.c | 99 --------
> 15 files changed, 777 insertions(+), 835 deletions(-)
next prev parent reply other threads:[~2021-07-19 17:57 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-19 10:34 [Cluster-devel] RFC: switch iomap to an iterator model Christoph Hellwig
2021-07-19 10:34 ` [Cluster-devel] [PATCH 01/27] iomap: fix a trivial comment typo in trace.h Christoph Hellwig
2021-07-19 16:00 ` Darrick J. Wong
2021-07-19 10:34 ` [Cluster-devel] [PATCH 02/27] iomap: remove the iomap arguments to ->page_{prepare, done} Christoph Hellwig
2021-07-19 16:04 ` Darrick J. Wong
2021-07-19 10:34 ` [Cluster-devel] [PATCH 03/27] iomap: mark the iomap argument to iomap_sector const Christoph Hellwig
2021-07-19 16:08 ` Darrick J. Wong
2021-07-20 9:52 ` Nikolay Borisov
2021-07-26 8:12 ` Christoph Hellwig
2021-07-19 10:34 ` [Cluster-devel] [PATCH 04/27] fs: mark the iomap argument to __block_write_begin_int const Christoph Hellwig
2021-07-19 17:35 ` Darrick J. Wong
2021-07-19 10:34 ` [Cluster-devel] [PATCH 05/27] fsdax: mark the iomap argument to dax_iomap_sector as const Christoph Hellwig
2021-07-19 17:35 ` Darrick J. Wong
2021-07-19 10:34 ` [Cluster-devel] [PATCH 06/27] iomap: mark the iomap argument to iomap_read_inline_data const Christoph Hellwig
2021-07-19 17:35 ` Darrick J. Wong
2021-07-19 10:35 ` [Cluster-devel] [PATCH 07/27] iomap: mark the iomap argument to iomap_read_page_sync const Christoph Hellwig
2021-07-19 17:35 ` Darrick J. Wong
2021-07-19 10:35 ` [Cluster-devel] [PATCH 08/27] iomap: add the new iomap_iter model Christoph Hellwig
2021-07-19 16:56 ` Darrick J. Wong
2021-07-26 8:15 ` Christoph Hellwig
2021-07-19 21:48 ` Dave Chinner
2021-07-26 8:17 ` Christoph Hellwig
2021-07-19 10:35 ` [Cluster-devel] [PATCH 09/27] iomap: switch readahead and readpage to use iomap_iter Christoph Hellwig
2021-07-19 10:35 ` [Cluster-devel] [PATCH 10/27] iomap: switch iomap_file_buffered_write " Christoph Hellwig
2021-07-19 10:35 ` [Cluster-devel] [PATCH 11/27] iomap: switch iomap_file_unshare " Christoph Hellwig
2021-07-19 10:35 ` [Cluster-devel] [PATCH 12/27] iomap: switch iomap_zero_range " Christoph Hellwig
2021-07-19 10:35 ` [Cluster-devel] [PATCH 13/27] iomap: switch iomap_page_mkwrite " Christoph Hellwig
2021-07-19 10:35 ` [Cluster-devel] [PATCH 14/27] iomap: switch __iomap_dio_rw " Christoph Hellwig
2021-07-19 10:35 ` [Cluster-devel] [PATCH 15/27] iomap: switch iomap_fiemap " Christoph Hellwig
2021-07-19 10:35 ` [Cluster-devel] [PATCH 16/27] iomap: switch iomap_bmap " Christoph Hellwig
2021-07-19 17:05 ` Darrick J. Wong
2021-07-26 8:19 ` Christoph Hellwig
2021-07-26 16:39 ` Darrick J. Wong
2021-07-27 6:31 ` Christoph Hellwig
2021-07-27 14:32 ` Darrick J. Wong
2021-07-19 10:35 ` [Cluster-devel] [PATCH 17/27] iomap: switch iomap_seek_hole " Christoph Hellwig
2021-07-19 17:22 ` Darrick J. Wong
2021-07-26 8:22 ` Christoph Hellwig
2021-07-26 16:41 ` Darrick J. Wong
2021-07-19 10:35 ` [Cluster-devel] [PATCH 18/27] iomap: switch iomap_seek_data " Christoph Hellwig
2021-07-19 10:35 ` [Cluster-devel] [PATCH 19/27] iomap: switch iomap_swapfile_activate " Christoph Hellwig
2021-07-19 10:35 ` [Cluster-devel] [PATCH 20/27] fsdax: switch dax_iomap_rw " Christoph Hellwig
2021-07-19 22:10 ` Dave Chinner
2021-07-26 8:25 ` Christoph Hellwig
2021-07-19 10:35 ` [Cluster-devel] [PATCH 21/27] iomap: remove iomap_apply Christoph Hellwig
2021-07-19 17:48 ` Darrick J. Wong
2021-07-19 10:35 ` [Cluster-devel] [PATCH 22/27] iomap: pass an iomap_iter to various buffered I/O helpers Christoph Hellwig
2021-07-19 17:48 ` Darrick J. Wong
2021-07-19 10:35 ` [Cluster-devel] [PATCH 23/27] iomap: rework unshare flag Christoph Hellwig
2021-07-19 17:44 ` Darrick J. Wong
2021-07-19 10:35 ` [Cluster-devel] [PATCH 24/27] fsdax: factor out helpers to simplify the dax fault code Christoph Hellwig
2021-07-19 10:35 ` [Cluster-devel] [PATCH 25/27] fsdax: factor out a dax_fault_actor() helper Christoph Hellwig
2021-07-19 10:35 ` [Cluster-devel] [PATCH 26/27] fsdax: switch the fault handlers to use iomap_iter Christoph Hellwig
2021-07-19 17:35 ` Darrick J. Wong
2021-07-19 10:35 ` [Cluster-devel] [PATCH 27/27] iomap: constify iomap_iter_srcmap Christoph Hellwig
2021-07-19 17:44 ` Darrick J. Wong
2021-07-19 17:57 ` Darrick J. Wong [this message]
2021-07-29 20:33 ` [Cluster-devel] RFC: switch iomap to an iterator model 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=20210719175756.GM22357@magnolia \
--to=djwong@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).