From: John Garry <john.g.garry@oracle.com>
To: axboe@kernel.dk, brauner@kernel.org, djwong@kernel.org,
viro@zeniv.linux.org.uk, jack@suse.cz, chandan.babu@oracle.com,
dchinner@redhat.com, hch@lst.de
Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org,
hare@suse.de, martin.petersen@oracle.com,
catherine.hoang@oracle.com, kbusch@kernel.org,
John Garry <john.g.garry@oracle.com>
Subject: [PATCH v5 0/7] block atomic writes for xfs
Date: Sat, 17 Aug 2024 09:47:53 +0000 [thread overview]
Message-ID: <20240817094800.776408-1-john.g.garry@oracle.com> (raw)
This series expands atomic write support to filesystems, specifically
XFS. Extent alignment is based on new feature forcealign.
Flag FS_XFLAG_ATOMICWRITES is added as an enabling flag for atomic writes.
XFS can be formatted for atomic writes as follows:
mkfs.xfs -i forcealign=1 -d extsize=16384 -d atomic-writes=1 /dev/sda
atomic-writes=1 just enables atomic writes in the SB, but does not auto-
enable atomic writes for each file.
Support can be enabled through xfs_io command:
$xfs_io -c "lsattr -v" filename
[extsize, force-align]
$xfs_io -c "extsize" filename
[16384] filename
$xfs_io -c "chattr +W" filename
$xfs_io -c "lsattr -v" filename
[extsize, force-align, atomic-writes] filename
$xfs_io -c statx filename
...
stat.stx_atomic_write_unit_min = 4096
stat.stx_atomic_write_unit_max = 16384
stat.stx_atomic_write_segments_max = 1
...
New in this series is a re-work of the iomap bio creation, in that we now
produce a single bio, which may cover multiple extents. Extent-based
zeroing is dropped.
Baseline is following series:
https://lore.kernel.org/linux-xfs/20240813163638.3751939-1-john.g.garry@oracle.com/T/#t
Basic xfsprogs support at:
https://github.com/johnpgarry/xfsprogs-dev/tree/forcealign_and_atomicwrites_for_v4_xfs_block_atomic_writes
Patches for this series can be found at:
https://github.com/johnpgarry/linux/tree/atomic-writes-v6.11-fs-v5
Changes since v4:
- Drop iomap extent-based zeroing and use single bio to cover multiple
extents
- Move forcealign to another series
- Various change in ioctl, sb, inode validation
- Add patch to tweak generic_atomic_write_valid() API
Changes since v3:
https://lore.kernel.org/linux-xfs/20240429174746.2132161-1-john.g.garry@oracle.com/T/#m9424b3cd1ccfde795d04474fdb4456520b6b4242
- Only enforce forcealign extsize is power-of-2 for atomic writes
- Re-org some validation code
- Fix xfs_bmap_process_allocated_extent() for forcealign
- Support iomap->io_block_size and make each fs support it
- Add !power-of-2 iomap support for io_block_size
- Make iomap dio iter handle atomic write failure properly by zeroing the
remaining io_block_size
John Garry (7):
block/fs: Pass an iocb to generic_atomic_write_valid()
fs: Export generic_atomic_write_valid()
fs: iomap: Atomic write support
xfs: Support FS_XFLAG_ATOMICWRITES for forcealign
xfs: Support atomic write for statx
xfs: Validate atomic writes
xfs: Support setting FMODE_CAN_ATOMIC_WRITE
block/fops.c | 8 +--
fs/iomap/direct-io.c | 122 ++++++++++++++++++++++++++++-----
fs/iomap/trace.h | 3 +-
fs/read_write.c | 5 +-
fs/xfs/libxfs/xfs_format.h | 11 ++-
fs/xfs/libxfs/xfs_inode_buf.c | 52 ++++++++++++++
fs/xfs/libxfs/xfs_inode_util.c | 4 ++
fs/xfs/libxfs/xfs_sb.c | 2 +
fs/xfs/xfs_buf.c | 15 +++-
fs/xfs/xfs_buf.h | 4 +-
fs/xfs/xfs_buf_mem.c | 2 +-
fs/xfs/xfs_file.c | 27 +++++++-
fs/xfs/xfs_inode.h | 5 ++
fs/xfs/xfs_ioctl.c | 52 ++++++++++++++
fs/xfs/xfs_iops.c | 28 ++++++++
fs/xfs/xfs_mount.h | 2 +
fs/xfs/xfs_super.c | 12 ++++
include/linux/fs.h | 2 +-
include/linux/iomap.h | 1 +
include/uapi/linux/fs.h | 1 +
20 files changed, 325 insertions(+), 33 deletions(-)
--
2.31.1
next reply other threads:[~2024-08-17 9:48 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-17 9:47 John Garry [this message]
2024-08-17 9:47 ` [PATCH v5 1/7] block/fs: Pass an iocb to generic_atomic_write_valid() John Garry
2024-08-20 17:28 ` Darrick J. Wong
2024-08-17 9:47 ` [PATCH v5 2/7] fs: Export generic_atomic_write_valid() John Garry
2024-08-20 17:28 ` Darrick J. Wong
2024-08-17 9:47 ` [PATCH v5 3/7] fs: iomap: Atomic write support John Garry
2024-08-21 16:58 ` Darrick J. Wong
2024-08-22 15:29 ` John Garry
2024-08-22 20:30 ` Darrick J. Wong
2024-08-30 15:48 ` John Garry
2024-08-30 23:56 ` Darrick J. Wong
2024-09-03 12:43 ` John Garry
2024-08-17 9:47 ` [PATCH v5 4/7] xfs: Support FS_XFLAG_ATOMICWRITES for forcealign John Garry
2024-08-21 17:07 ` Darrick J. Wong
2024-08-22 17:45 ` John Garry
2024-08-22 20:38 ` Darrick J. Wong
2024-08-23 8:39 ` John Garry
2024-08-23 16:03 ` Darrick J. Wong
2024-08-17 9:47 ` [PATCH v5 5/7] xfs: Support atomic write for statx John Garry
2024-08-21 17:09 ` Darrick J. Wong
2024-08-17 9:47 ` [PATCH v5 6/7] xfs: Validate atomic writes John Garry
2024-08-21 17:10 ` Darrick J. Wong
2024-08-17 9:48 ` [PATCH v5 7/7] xfs: Support setting FMODE_CAN_ATOMIC_WRITE John Garry
2024-08-21 17:11 ` Darrick J. Wong
2024-08-22 18:04 ` John Garry
2024-08-22 20:44 ` Darrick J. Wong
2024-08-23 10:41 ` John Garry
2024-08-23 15:52 ` Darrick J. Wong
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240817094800.776408-1-john.g.garry@oracle.com \
--to=john.g.garry@oracle.com \
--cc=axboe@kernel.dk \
--cc=brauner@kernel.org \
--cc=catherine.hoang@oracle.com \
--cc=chandan.babu@oracle.com \
--cc=dchinner@redhat.com \
--cc=djwong@kernel.org \
--cc=hare@suse.de \
--cc=hch@lst.de \
--cc=jack@suse.cz \
--cc=kbusch@kernel.org \
--cc=linux-block@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-xfs@vger.kernel.org \
--cc=martin.petersen@oracle.com \
--cc=viro@zeniv.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.