[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <Zxnp8bma2KrMDg5m@li-bb2b2a4c-3307-11b2-a85c-8fa5c3a69313.ibm.com>
Date: Thu, 24 Oct 2024 12:02:17 +0530
From: Ojaswin Mujoo <ojaswin@...ux.ibm.com>
To: John Garry <john.g.garry@...cle.com>
Cc: axboe@...nel.dk, brauner@...nel.org, djwong@...nel.org,
viro@...iv.linux.org.uk, jack@...e.cz, dchinner@...hat.com, hch@....de,
cem@...nel.org, linux-block@...r.kernel.org,
linux-kernel@...r.kernel.org, linux-xfs@...r.kernel.org,
linux-fsdevel@...r.kernel.org, hare@...e.de,
martin.petersen@...cle.com, catherine.hoang@...cle.com,
mcgrof@...nel.org, ritesh.list@...il.com
Subject: Re: [PATCH v10 0/8] block atomic writes for xfs
On Sat, Oct 19, 2024 at 12:51:05PM +0000, John Garry wrote:
> This series expands atomic write support to filesystems, specifically
> XFS.
>
> Initially we will only support writing exactly 1x FS block atomically.
>
> Since we can now have FS block size > PAGE_SIZE for XFS, we can write
> atomically 4K+ blocks on x86.
>
> No special per-inode flag is required for enabling writing 1x F block.
> In future, to support writing more than one FS block atomically, a new FS
> XFLAG flag may then introduced - like FS_XFLAG_BIG_ATOMICWRITES. This
> would depend on a feature like forcealign.
>
> So if we format the FS for 16K FS block size:
> mkfs.xfs -b size=16384 /dev/sda
>
> The statx reports atomic write unit min/max = FS block size:
> $xfs_io -c statx filename
> ...
> stat.stx_atomic_write_unit_min = 16384
> stat.stx_atomic_write_unit_max = 16384
> stat.stx_atomic_write_segments_max = 1
> ...
>
> Baseline is 77bfe1b11ea0 (tag: xfs-6.12-fixes-3, xfs/xfs-6.12-fixesC,
> xfs/for-next) xfs: fix a typo
>
> Patches for this series can be found at:
> https://github.com/johnpgarry/linux/tree/atomic-writes-v6.12-fs-v10
>
> Changes since v9:
> - iomap doc fix (Darrick)
> - Add RB tags from Christoph and Darrick (Thanks!)
>
> Changes since v8:
> - Add bdev atomic write unit helpers (Christoph)
> - Add comment on FS block size limit (Christoph)
> - Stylistic improvements (Christoph)
> - Add RB tags from Christoph (thanks!)
>
> Changes since v7:
> - Drop FS_XFLAG_ATOMICWRITES
> - Reorder block/fs patches and add fixes tags (Christoph)
> - Add RB tag from Christoph (Thanks!)
> - Rebase
>
> John Garry (8):
> block/fs: Pass an iocb to generic_atomic_write_valid()
> fs/block: Check for IOCB_DIRECT in generic_atomic_write_valid()
> block: Add bdev atomic write limits helpers
> fs: Export generic_atomic_write_valid()
> fs: iomap: Atomic write support
> xfs: Support atomic write for statx
> xfs: Validate atomic writes
> xfs: Support setting FMODE_CAN_ATOMIC_WRITE
>
> .../filesystems/iomap/operations.rst | 12 ++++++
> block/fops.c | 22 ++++++-----
> fs/iomap/direct-io.c | 38 +++++++++++++++++--
> fs/iomap/trace.h | 3 +-
> fs/read_write.c | 16 +++++---
> fs/xfs/xfs_buf.c | 7 ++++
> fs/xfs/xfs_buf.h | 4 ++
> fs/xfs/xfs_file.c | 16 ++++++++
> fs/xfs/xfs_inode.h | 15 ++++++++
> fs/xfs/xfs_iops.c | 22 +++++++++++
> include/linux/blkdev.h | 16 ++++++++
> include/linux/fs.h | 2 +-
> include/linux/iomap.h | 1 +
> 13 files changed, 152 insertions(+), 22 deletions(-)
>
> --
Hi John,
I've tested the whole patchset on powerpc (64k pagesize) with 4k, 16k
and 64k blocksizes and it passes the tests. My tests basically check
following scenarios:
Statx behavior:
# 1.1 bs > unit_max
# 1.2 bs < unit_max
# 1.3 bs == unit_max
# 1.4 dev deosn't support
pwrite tests:
# 3.1 len < fsmin
# 3.2 len > fsmax
# 3.3 write not naturally aligned
# 3.4 Atomic write abiding to all rule
For the whole patchset, feel free to add:
Tested-by: Ojaswin Mujoo <ojaswin@...ux.ibm.com> #On ppc64
Thanks,
Ojaswin
> 2.31.1
>
Powered by blists - more mailing lists