mbox series

[v5,0/8] make statx() return DIO alignment information

Message ID 20220827065851.135710-1-ebiggers@kernel.org
Headers show
Series make statx() return DIO alignment information | expand

Message

Eric Biggers Aug. 27, 2022, 6:58 a.m. UTC
This patchset makes the statx() system call return direct I/O (DIO)
alignment information.  This allows userspace to easily determine
whether a file supports DIO, and if so with what alignment restrictions.

Patch 1 adds the basic VFS support for STATX_DIOALIGN.  Patch 2 wires it
up for all block device files.  The remaining patches wire it up for
regular files on ext4, f2fs, and xfs.  Support for regular files on
other filesystems can be added later.

I've also written a man-pages patch, which I sent separately:
https://lore.kernel.org/r/20220722074229.148925-1-ebiggers@kernel.org

Note, f2fs has a corner case where DIO reads are allowed but not DIO
writes.  The proposed statx fields can't represent this.  The current
proposal just reports that DIO is unsupported in this case.

This patchset applies to v6.0-rc2.

Changed in v5:
   - Accounted for the DIO changes in 6.0 by setting dio_mem_align to
     the DMA alignment instead of the logical block size where needed.

   - Dropped the patch "f2fs: don't allow DIO reads but not DIO writes".

   - Added some Reviewed-by and Acked-by tags.

Changed in v4:
   - Added xfs support.

   - Moved the helper function for block devices into block/bdev.c.
   
   - Adjusted the ext4 patch to not introduce a bug where misaligned DIO
     starts being allowed on encrypted files when it gets combined with
     the patch "iomap: add support for dma aligned direct-io" that is
     queued in the block tree for 5.20.

   - Made a simplification in fscrypt_dio_supported().

Changed in v3:
   - Dropped the stx_offset_align_optimal field, since its purpose
     wasn't clearly distinguished from the existing stx_blksize.

   - Renamed STATX_IOALIGN to STATX_DIOALIGN, to reflect the new focus
     on DIO only.

   - Similarly, renamed stx_{mem,offset}_align_dio to
     stx_dio_{mem,offset}_align, to reflect the new focus on DIO only.

   - Wired up STATX_DIOALIGN on block device files.

Changed in v2:
   - No changes.

Eric Biggers (8):
  statx: add direct I/O alignment information
  vfs: support STATX_DIOALIGN on block devices
  fscrypt: change fscrypt_dio_supported() to prepare for STATX_DIOALIGN
  ext4: support STATX_DIOALIGN
  f2fs: move f2fs_force_buffered_io() into file.c
  f2fs: simplify f2fs_force_buffered_io()
  f2fs: support STATX_DIOALIGN
  xfs: support STATX_DIOALIGN

 block/bdev.c              | 23 ++++++++++++++++++
 fs/crypto/inline_crypt.c  | 49 +++++++++++++++++++--------------------
 fs/ext4/ext4.h            |  1 +
 fs/ext4/file.c            | 37 ++++++++++++++++++++---------
 fs/ext4/inode.c           | 37 +++++++++++++++++++++++++++++
 fs/f2fs/f2fs.h            | 40 --------------------------------
 fs/f2fs/file.c            | 43 +++++++++++++++++++++++++++++++++-
 fs/stat.c                 | 14 +++++++++++
 fs/xfs/xfs_iops.c         | 10 ++++++++
 include/linux/blkdev.h    |  4 ++++
 include/linux/fscrypt.h   |  7 ++----
 include/linux/stat.h      |  2 ++
 include/uapi/linux/stat.h |  4 +++-
 13 files changed, 188 insertions(+), 83 deletions(-)


base-commit: 1c23f9e627a7b412978b4e852793c5e3c3efc555

Comments

Eric Biggers Sept. 6, 2022, 10:08 p.m. UTC | #1
On Fri, Aug 26, 2022 at 11:58:43PM -0700, Eric Biggers wrote:
> This patchset makes the statx() system call return direct I/O (DIO)
> alignment information.  This allows userspace to easily determine
> whether a file supports DIO, and if so with what alignment restrictions.

Al, any thoughts on this patchset, and do you plan to apply it for 6.1?  Ideally
this would go through the VFS tree.  If not, I suppose I'll need to have it
added to linux-next and send the pull request myself.

- Eric
Eric Biggers Sept. 12, 2022, 12:54 a.m. UTC | #2
On Tue, Sep 06, 2022 at 03:08:51PM -0700, Eric Biggers wrote:
> On Fri, Aug 26, 2022 at 11:58:43PM -0700, Eric Biggers wrote:
> > This patchset makes the statx() system call return direct I/O (DIO)
> > alignment information.  This allows userspace to easily determine
> > whether a file supports DIO, and if so with what alignment restrictions.
> 
> Al, any thoughts on this patchset, and do you plan to apply it for 6.1?  Ideally
> this would go through the VFS tree.  If not, I suppose I'll need to have it
> added to linux-next and send the pull request myself.
> 
> - Eric

Seems that it's up to me, then.

Stephen, can you add my git branch for this patchset to linux-next?

URL: https://git.kernel.org/pub/scm/linux/kernel/git/ebiggers/linux.git
Branch: statx-dioalign

This is targeting the 6.1 merge window with a pull request to Linus.

Thanks!

- Eric
Stephen Rothwell Sept. 12, 2022, 8:30 p.m. UTC | #3
Hi Eric,

On Sun, 11 Sep 2022 19:54:12 -0500 Eric Biggers <ebiggers@kernel.org> wrote:
>
> On Tue, Sep 06, 2022 at 03:08:51PM -0700, Eric Biggers wrote:
> > On Fri, Aug 26, 2022 at 11:58:43PM -0700, Eric Biggers wrote:  
> > > This patchset makes the statx() system call return direct I/O (DIO)
> > > alignment information.  This allows userspace to easily determine
> > > whether a file supports DIO, and if so with what alignment restrictions.  
> > 
> > Al, any thoughts on this patchset, and do you plan to apply it for 6.1?  Ideally
> > this would go through the VFS tree.  If not, I suppose I'll need to have it
> > added to linux-next and send the pull request myself.
> > 
> > - Eric  
> 
> Seems that it's up to me, then.
> 
> Stephen, can you add my git branch for this patchset to linux-next?
> 
> URL: https://git.kernel.org/pub/scm/linux/kernel/git/ebiggers/linux.git
> Branch: statx-dioalign
> 
> This is targeting the 6.1 merge window with a pull request to Linus.

Added from today.

Thanks for adding your subsystem tree as a participant of linux-next.  As
you may know, this is not a judgement of your code.  The purpose of
linux-next is for integration testing and to lower the impact of
conflicts between subsystems in the next merge window. 

You will need to ensure that the patches/commits in your tree/series have
been:
     * submitted under GPL v2 (or later) and include the Contributor's
        Signed-off-by,
     * posted to the relevant mailing list,
     * reviewed by you (or another maintainer of your subsystem tree),
     * successfully unit tested, and 
     * destined for the current or next Linux merge window.

Basically, this should be just what you would send to Linus (or ask him
to fetch).  It is allowed to be rebased if you deem it necessary.
Stephen Rothwell Oct. 18, 2022, 4:55 a.m. UTC | #4
Hi Eric,

On Tue, 13 Sep 2022 06:30:25 +1000 Stephen Rothwell <sfr@canb.auug.org.au> wrote:
> 
> On Sun, 11 Sep 2022 19:54:12 -0500 Eric Biggers <ebiggers@kernel.org> wrote:
> >
> > Stephen, can you add my git branch for this patchset to linux-next?
> > 
> > URL: https://git.kernel.org/pub/scm/linux/kernel/git/ebiggers/linux.git
> > Branch: statx-dioalign
> > 
> > This is targeting the 6.1 merge window with a pull request to Linus.  
> 
> Added from today.

I notice that this branch has been removed.  Are you finished with it
(i.e. should I remove it from linux-next)?
Eric Biggers Oct. 18, 2022, 7:07 a.m. UTC | #5
On Tue, Oct 18, 2022 at 03:55:24PM +1100, Stephen Rothwell wrote:
> Hi Eric,
> 
> On Tue, 13 Sep 2022 06:30:25 +1000 Stephen Rothwell <sfr@canb.auug.org.au> wrote:
> > 
> > On Sun, 11 Sep 2022 19:54:12 -0500 Eric Biggers <ebiggers@kernel.org> wrote:
> > >
> > > Stephen, can you add my git branch for this patchset to linux-next?
> > > 
> > > URL: https://git.kernel.org/pub/scm/linux/kernel/git/ebiggers/linux.git
> > > Branch: statx-dioalign
> > > 
> > > This is targeting the 6.1 merge window with a pull request to Linus.  
> > 
> > Added from today.
> 
> I notice that this branch has been removed.  Are you finished with it
> (i.e. should I remove it from linux-next)?
> 

Yes, I think so.  This patchset has been merged upstream.  Any more patches
related to STATX_DIOALIGN should go in through the VFS or filesystem-specific
trees.

- Eric
Stephen Rothwell Oct. 18, 2022, 8:08 p.m. UTC | #6
Hi Eric,

On Tue, 18 Oct 2022 00:07:57 -0700 Eric Biggers <ebiggers@kernel.org> wrote:
>
> On Tue, Oct 18, 2022 at 03:55:24PM +1100, Stephen Rothwell wrote:
> > 
> > I notice that this branch has been removed.  Are you finished with it
> > (i.e. should I remove it from linux-next)?
> >   
> 
> Yes, I think so.  This patchset has been merged upstream.  Any more patches
> related to STATX_DIOALIGN should go in through the VFS or filesystem-specific
> trees.

OK, I have removed it.