Re: [PATCH 0/5] ext4: direct IO via iomap infrastructure

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello Matthew,

On 8/12/19 6:22 PM, Matthew Bobrowski wrote:

This patch series converts the ext4 direct IO code paths to make use of the
iomap infrastructure and removes the old buffer_head direct-io based
implementation. The result is that ext4 is converted to the newer framework
and that it may _possibly_ gain a performance boost for O_SYNC | O_DIRECT IO.

These changes have been tested using xfstests in both DAX and non-DAX modes
using various configurations i.e. 4k, dioread_nolock, dax.

I had some minor review comments posted on Patch-4.
But the rest of the patch series looks good to me.
I will also do some basic testing of xfstests which I did for my patches and will revert back.

One query, could you please help answering below for my understanding :-

I was under the assumption that we need to maintain ext4_test_inode_state(inode, EXT4_STATE_DIO_UNWRITTEN) or atomic_read(&EXT4_I(inode)->i_unwritten)) in case of non-AIO directIO or AIO directIO case as well (when we may allocate unwritten extents), to protect with some kind of race with other parts of code(maybe truncate/bufferedIO/fallocate not sure?) which may call for ext4_can_extents_be_merged()
to check if extents can be merged or not.

Is it not the case?
Now that directIO code has no way of specifying that this inode has unwritten extent, will it not race with any other path, where this info was necessary (like
in above func ext4_can_extents_be_merged())?


Thanks
Ritesh


Matthew Bobrowski (5):
   ext4: introduce direct IO read code path using iomap infrastructure
   ext4: move inode extension/truncate code out from ext4_iomap_end()
   iomap: modify ->end_io() calling convention
   ext4: introduce direct IO write code path using iomap infrastructure
   ext4: clean up redundant buffer_head direct IO code

  fs/ext4/ext4.h        |   3 -
  fs/ext4/extents.c     |   8 +-
  fs/ext4/file.c        | 329 +++++++++++++++++++++++++++-------
  fs/ext4/inode.c       | 488 +++++---------------------------------------------
  fs/iomap/direct-io.c  |   9 +-
  fs/xfs/xfs_file.c     |  17 +-
  include/linux/iomap.h |   4 +-
  7 files changed, 322 insertions(+), 536 deletions(-)





[Index of Archives]     [Reiser Filesystem Development]     [Ceph FS]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux FS]     [Yosemite National Park]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Device Mapper]     [Linux Media]

  Powered by Linux