Re: [PATCH v10 0/8] block atomic writes for xfs

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

 



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@xxxxxxxxxxxxx> 	 #On ppc64

Thanks,
Ojaswin

> 2.31.1
> 




[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux