[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <cover.1572255424.git.mbobrowski@mbobrowski.org>
Date: Mon, 28 Oct 2019 21:50:03 +1100
From: Matthew Bobrowski <mbobrowski@...browski.org>
To: tytso@....edu, jack@...e.cz, adilger.kernel@...ger.ca
Cc: linux-ext4@...r.kernel.org, linux-fsdevel@...r.kernel.org,
hch@...radead.org, david@...morbit.com, darrick.wong@...cle.com
Subject: [PATCH v6 00/11] ext4: port direct I/O to iomap infrastructure
Hi!
OK, so I think we're now coming very close to having this patch series
ready, if not already there. I've made some slight amendments to this
patch series as a result of the last round of feedback. This patch
series is based off Darrick's iomap-for-next branch, as there are some
iomap API changes there that we're dependent on here.
Changes since v5:
- Fixed up calling into __generic_file_fsync() from
ext4_sync_file(). Previously this caused a recursive lock situation
when the filesystem was created without a journal.
- Rolled up the orphan handling code from ext4_dio_write_iter() into
ext4_handle_inode_extension().
- Dropped redundant conditional statement and expression from
ext4_iomap_is_delalloc().
- Fixed up a couple comments, changelogs, as well as some other
really minor grammatical corrections.
This patch series ports the ext4 direct I/O paths over to the iomap
infrastructure. The legacy buffer_head based direct I/O implementation
has subsequently been removed as it's no longer in use. The result of
this change is that ext4 now uses the newer iomap framework for direct
I/O read/write operations. Overall, this results in a much cleaner
direct I/O implementation and keeps this code isolated from the
buffer_head internals. In addition to this, a slight performance boost
may be expected while using O_SYNC | O_DIRECT.
The changes within this patch series have been tested via xfstests in
both DAX and non-DAX modes using the various filesystem configuration
options, including: 4k, dioread_nolock, nojournal.
Matthew Bobrowski (11):
ext4: reorder map.m_flags checks within ext4_iomap_begin()
ext4: update direct I/O read lock pattern for IOCB_NOWAIT
ext4: iomap that extends beyond EOF should be marked dirty
ext4: move set iomap routines into a separate helper ext4_set_iomap()
ext4: split IOMAP_WRITE branch in ext4_iomap_begin() into helper
ext4: introduce new callback for IOMAP_REPORT
ext4: introduce direct I/O read using iomap infrastructure
ext4: move inode extension/truncate code out from ->iomap_end()
callback
ext4: move inode extension check out from ext4_iomap_alloc()
ext4: update ext4_sync_file() to not use __generic_file_fsync()
ext4: introduce direct I/O write using iomap infrastructure
fs/ext4/ext4.h | 4 +-
fs/ext4/extents.c | 11 +-
fs/ext4/file.c | 387 ++++++++++++++++++++-----
fs/ext4/fsync.c | 72 +++--
fs/ext4/inode.c | 714 +++++++++++-----------------------------------
5 files changed, 537 insertions(+), 651 deletions(-)
--
2.20.1
Powered by blists - more mailing lists