[PATCH v3 0/4] ext4: Add atomic writes support for DIO

Ritesh Harjani (IBM) posted 4 patches 3 weeks, 4 days ago
There is a newer version of this series
fs/ext4/ext4.h  |  9 +++++++++
fs/ext4/file.c  | 24 ++++++++++++++++++++++++
fs/ext4/inode.c | 28 +++++++++++++++++++++++-----
fs/ext4/super.c | 31 +++++++++++++++++++++++++++++++
4 files changed, 87 insertions(+), 5 deletions(-)
[PATCH v3 0/4] ext4: Add atomic writes support for DIO
Posted by Ritesh Harjani (IBM) 3 weeks, 4 days ago
v2 -> v3:
==========
1. Patch-1 adds an "experimental" string in dmesg log during mount when EXT4
   detects that it is capable of doing DIO atomic writes on a given device
   with min and max unit details.
2. Patch-4 has been updated to avoid returning -ENOTBLK (in ext4_iomap_end)
   if the request belongs to atomic write. This patch also adds a WARN_ON_ONCE()
   if atomic write ever fallback to buffered-io (to catch any unwanted bugs in the future).
   More details in the commit log of patch-4.
3. Collected RBs tag from John for Patch 2 & 3.

[v2]: https://lore.kernel.org/linux-ext4/cover.1729944406.git.ritesh.list@gmail.com/

Previous cover letter log:

In v2, we had split the series and this one only takes care of
atomic writes for single fsblock.
That means for now this gets only enabled on bs < ps systems on ext4.
Enablement of atomic writes for bigalloc (multi-fsblock support) is still
under discussion and may require general consensus within the filesystem
community [1].

This series adds the base feature support to enable atomic writes in
direct-io path for ext4. We advertise the minimum and the maximum atomic
write unit sizes via statx on a regular file.

This series allows users to utilize atomic write support using -
1. on bs < ps systems via - mkfs.ext4 -F -b 16384 /dev/sda

This can then be utilized using -
	xfs_io -fdc "pwrite -V 1 -A -b16k 0 16k" /mnt/f1

This is built on top of John's DIO atomic write series for XFS [2].
The VFS and block layer enablement for atomic writes were merged already.


[1]: https://lore.kernel.org/linux-ext4/87jzdvmqfz.fsf@gmail.com
[2]: https://lore.kernel.org/linux-xfs/20241019125113.369994-1-john.g.garry@oracle.com/


Changelogs:
===========
PATCH -> PATCH v2:
- addressed review comments from John and Darrick.
- renamed ext4_sb_info variables names: fs_awu* -> s_awu*
- [PATCH]: https://lore.kernel.org/linux-ext4/cover.1729825985.git.ritesh.list@gmail.com/

RFC -> PATCH:
- Dropped RFC tag
- Last RFC was posted a while ago but back then a lot of VFS and block layer
  interfaces were still not merged. Those are now merged, thanks to John and
  everyone else.
- [RFC] - https://lore.kernel.org/linux-ext4/cover.1709356594.git.ritesh.list@gmail.com/



Ritesh Harjani (IBM) (4):
  ext4: Add statx support for atomic writes
  ext4: Check for atomic writes support in write iter
  ext4: Support setting FMODE_CAN_ATOMIC_WRITE
  ext4: Do not fallback to buffered-io for DIO atomic write

 fs/ext4/ext4.h  |  9 +++++++++
 fs/ext4/file.c  | 24 ++++++++++++++++++++++++
 fs/ext4/inode.c | 28 +++++++++++++++++++++++-----
 fs/ext4/super.c | 31 +++++++++++++++++++++++++++++++
 4 files changed, 87 insertions(+), 5 deletions(-)

--
2.46.0
Re: [PATCH v3 0/4] ext4: Add atomic writes support for DIO
Posted by Darrick J. Wong 3 weeks, 3 days ago
On Wed, Oct 30, 2024 at 09:27:37PM +0530, Ritesh Harjani (IBM) wrote:

Assuming Ted acks this series, I have a fun question: Can we merge this
for 6.13 alongside the single-fsblock xfs implementation?

And how do we want to merge this?  It looks like Jens took only the
first three patches from John's series, leaving this:

https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git/log/?h=for-6.13/block-atomic

[PATCH v10 4/8] fs: Export generic_atomic_write_valid() John Garry
[PATCH v10 5/8] fs: iomap: Atomic write support John Garry
[PATCH v10 6/8] xfs: Support atomic write for statx John Garry
[PATCH v10 7/8] xfs: Validate atomic writes John Garry
[PATCH v10 8/8] xfs: Support setting FMODE_CAN_ATOMIC_WRITE John Garry

Note the fs and iomap stuff is not in that branch.

So should xfs create a 6.13 merge branch from block-atomic containing
all of its new stuff including the xfs atomic writes changes?  And then
I guess merge the ext4 changes too??  ext4 code coming in via xfs, yuck.

Or should cem just create a 6.13 merge branch with everything *except*
the atomic writes stuff?  Call that branch "xfs-6.13-merge".  Then one
of us with commit privileges creates a separate branch off of
block-atomic, add both the xfs series and then the ext4 series?  Call
that branch "fs-atomic-writes".

Then I guess cem could create a third branch from xfs-6.13-merge, merge
the fs-atomic-writes branch into that third branch, and push that third
branch to for-next on git.kernel.org so it can get picked up by
rothwell's for-next and fs-next?

(Note that Ted could do likewise with ext4; cem doesn't have to be part
of this.)

Does that work for people?  The "sending multiple branches to linus" way
is the best method I can think of, though it's more release manager
work.

--D

> v2 -> v3:
> ==========
> 1. Patch-1 adds an "experimental" string in dmesg log during mount when EXT4
>    detects that it is capable of doing DIO atomic writes on a given device
>    with min and max unit details.
> 2. Patch-4 has been updated to avoid returning -ENOTBLK (in ext4_iomap_end)
>    if the request belongs to atomic write. This patch also adds a WARN_ON_ONCE()
>    if atomic write ever fallback to buffered-io (to catch any unwanted bugs in the future).
>    More details in the commit log of patch-4.
> 3. Collected RBs tag from John for Patch 2 & 3.
> 
> [v2]: https://lore.kernel.org/linux-ext4/cover.1729944406.git.ritesh.list@gmail.com/
> 
> Previous cover letter log:
> 
> In v2, we had split the series and this one only takes care of
> atomic writes for single fsblock.
> That means for now this gets only enabled on bs < ps systems on ext4.
> Enablement of atomic writes for bigalloc (multi-fsblock support) is still
> under discussion and may require general consensus within the filesystem
> community [1].
> 
> This series adds the base feature support to enable atomic writes in
> direct-io path for ext4. We advertise the minimum and the maximum atomic
> write unit sizes via statx on a regular file.
> 
> This series allows users to utilize atomic write support using -
> 1. on bs < ps systems via - mkfs.ext4 -F -b 16384 /dev/sda
> 
> This can then be utilized using -
> 	xfs_io -fdc "pwrite -V 1 -A -b16k 0 16k" /mnt/f1
> 
> This is built on top of John's DIO atomic write series for XFS [2].
> The VFS and block layer enablement for atomic writes were merged already.
> 
> 
> [1]: https://lore.kernel.org/linux-ext4/87jzdvmqfz.fsf@gmail.com
> [2]: https://lore.kernel.org/linux-xfs/20241019125113.369994-1-john.g.garry@oracle.com/
> 
> 
> Changelogs:
> ===========
> PATCH -> PATCH v2:
> - addressed review comments from John and Darrick.
> - renamed ext4_sb_info variables names: fs_awu* -> s_awu*
> - [PATCH]: https://lore.kernel.org/linux-ext4/cover.1729825985.git.ritesh.list@gmail.com/
> 
> RFC -> PATCH:
> - Dropped RFC tag
> - Last RFC was posted a while ago but back then a lot of VFS and block layer
>   interfaces were still not merged. Those are now merged, thanks to John and
>   everyone else.
> - [RFC] - https://lore.kernel.org/linux-ext4/cover.1709356594.git.ritesh.list@gmail.com/
> 
> 
> 
> Ritesh Harjani (IBM) (4):
>   ext4: Add statx support for atomic writes
>   ext4: Check for atomic writes support in write iter
>   ext4: Support setting FMODE_CAN_ATOMIC_WRITE
>   ext4: Do not fallback to buffered-io for DIO atomic write
> 
>  fs/ext4/ext4.h  |  9 +++++++++
>  fs/ext4/file.c  | 24 ++++++++++++++++++++++++
>  fs/ext4/inode.c | 28 +++++++++++++++++++++++-----
>  fs/ext4/super.c | 31 +++++++++++++++++++++++++++++++
>  4 files changed, 87 insertions(+), 5 deletions(-)
> 
> --
> 2.46.0
> 
>