From: Christoph Hellwig <hch@lst.de>
To: John Garry <john.g.garry@oracle.com>
Cc: axboe@kernel.dk, brauner@kernel.org, djwong@kernel.org,
viro@zeniv.linux.org.uk, jack@suse.cz, dchinner@redhat.com,
hch@lst.de, cem@kernel.org, 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,
mcgrof@kernel.org, ritesh.list@gmail.com, ojaswin@linux.ibm.com
Subject: Re: [PATCH v8 5/7] xfs: Support atomic write for statx
Date: Tue, 15 Oct 2024 14:15:39 +0200 [thread overview]
Message-ID: <20241015121539.GB32583@lst.de> (raw)
In-Reply-To: <20241015090142.3189518-6-john.g.garry@oracle.com>
On Tue, Oct 15, 2024 at 09:01:40AM +0000, John Garry wrote:
> Support providing info on atomic write unit min and max for an inode.
>
> For simplicity, currently we limit the min at the FS block size. As for
> max, we limit also at FS block size, as there is no current method to
> guarantee extent alignment or granularity for regular files.
>
> Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>
> Signed-off-by: John Garry <john.g.garry@oracle.com>
> ---
> fs/xfs/xfs_buf.c | 7 +++++++
> fs/xfs/xfs_buf.h | 3 +++
> fs/xfs/xfs_inode.h | 15 +++++++++++++++
> fs/xfs/xfs_iops.c | 25 +++++++++++++++++++++++++
> 4 files changed, 50 insertions(+)
>
> diff --git a/fs/xfs/xfs_buf.c b/fs/xfs/xfs_buf.c
> index aa4dbda7b536..e279e5e139ff 100644
> --- a/fs/xfs/xfs_buf.c
> +++ b/fs/xfs/xfs_buf.c
> @@ -2115,6 +2115,13 @@ xfs_alloc_buftarg(
> btp->bt_daxdev = fs_dax_get_by_bdev(btp->bt_bdev, &btp->bt_dax_part_off,
> mp, ops);
>
> + if (bdev_can_atomic_write(btp->bt_bdev)) {
> + struct request_queue *q = bdev_get_queue(btp->bt_bdev);
> +
> + btp->bt_bdev_awu_min = queue_atomic_write_unit_min_bytes(q);
> + btp->bt_bdev_awu_max = queue_atomic_write_unit_max_bytes(q);
Consumers of the block layer should never see request_queue. While there
is a few leftovers still I've cleaned most of this up. Please add
bdev_atomic_write_unit_min_bytes and bdev_atomic_write_unit_max_bytes
helpers for use by file systems and stacking drivers, similar to the
other queue limits.
> + /* Atomic write unit values */
> + unsigned int bt_bdev_awu_min, bt_bdev_awu_max;
Nit: While having two struct members declare on the same line using the
same type specification is perfectly valid C, it looks odd and we avoid
it in XFS (and most of the kernel). Please split this into two lines.
> + struct xfs_mount *mp = ip->i_mount;
> + struct xfs_sb *sbp = &mp->m_sb;
> +
> + if (!xfs_inode_can_atomicwrite(ip)) {
> + *unit_min = *unit_max = 0;
> + return;
> + }
> +
> + *unit_min = *unit_max = sbp->sb_blocksize;
Nit: I'd do with the single use sbp local variable here.
> +}
> +
> STATIC int
> xfs_vn_getattr(
> struct mnt_idmap *idmap,
> @@ -643,6 +660,14 @@ xfs_vn_getattr(
> stat->dio_mem_align = bdev_dma_alignment(bdev) + 1;
> stat->dio_offset_align = bdev_logical_block_size(bdev);
> }
> + if (request_mask & STATX_WRITE_ATOMIC) {
> + unsigned int unit_min, unit_max;
Nit: XFS (unlike the rest of the kernel) uses tab alignments for
variables.
Otherwise this looks good:
Reviewed-by: Christoph Hellwig <hch@lst.de>
next prev parent reply other threads:[~2024-10-15 12:15 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-15 9:01 [PATCH v8 0/7] block atomic writes for xfs John Garry
2024-10-15 9:01 ` [PATCH v8 1/7] block/fs: Pass an iocb to generic_atomic_write_valid() John Garry
2024-10-15 9:01 ` [PATCH v8 2/7] fs/block: Check for IOCB_DIRECT in generic_atomic_write_valid() John Garry
2024-10-15 9:01 ` [PATCH v8 3/7] fs: Export generic_atomic_write_valid() John Garry
2024-10-15 9:01 ` [PATCH v8 4/7] fs: iomap: Atomic write support John Garry
2024-10-15 12:12 ` Christoph Hellwig
2024-10-15 12:24 ` John Garry
2024-10-15 9:01 ` [PATCH v8 5/7] xfs: Support atomic write for statx John Garry
2024-10-15 12:15 ` Christoph Hellwig [this message]
2024-10-15 12:22 ` John Garry
2024-10-15 12:33 ` Christoph Hellwig
2024-10-15 9:01 ` [PATCH v8 6/7] xfs: Validate atomic writes John Garry
2024-10-15 12:16 ` Christoph Hellwig
2024-10-15 12:25 ` John Garry
2024-10-15 9:01 ` [PATCH v8 7/7] xfs: Support setting FMODE_CAN_ATOMIC_WRITE John Garry
2024-10-15 12:16 ` Christoph Hellwig
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=20241015121539.GB32583@lst.de \
--to=hch@lst.de \
--cc=axboe@kernel.dk \
--cc=brauner@kernel.org \
--cc=catherine.hoang@oracle.com \
--cc=cem@kernel.org \
--cc=dchinner@redhat.com \
--cc=djwong@kernel.org \
--cc=hare@suse.de \
--cc=jack@suse.cz \
--cc=john.g.garry@oracle.com \
--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=mcgrof@kernel.org \
--cc=ojaswin@linux.ibm.com \
--cc=ritesh.list@gmail.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).