From: "Darrick J. Wong" <djwong@kernel.org>
To: Christoph Hellwig <hch@lst.de>
Cc: Carlos Maiolino <cem@kernel.org>,
Hans Holmberg <hans.holmberg@wdc.com>,
linux-xfs@vger.kernel.org
Subject: Re: [PATCH 05/10] xfs: use WRITE_ONCE/READ_ONCE for m_errortag
Date: Tue, 27 Jan 2026 17:36:08 -0800 [thread overview]
Message-ID: <20260128013608.GE5945@frogsfrogsfrogs> (raw)
In-Reply-To: <20260127160619.330250-6-hch@lst.de>
On Tue, Jan 27, 2026 at 05:05:45PM +0100, Christoph Hellwig wrote:
> There is no synchronization for updating m_errortag, which is fine as
> it's just a debug tool. It would still be nice to fully avoid the
> theoretical case of torn values, so use WRITE_ONCE and READ_ONCE to
> access the members.
>
> Signed-off-by: Christoph Hellwig <hch@lst.de>
Looks fine,
Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>
--D
> ---
> fs/xfs/xfs_error.c | 23 ++++++++++++++---------
> 1 file changed, 14 insertions(+), 9 deletions(-)
>
> diff --git a/fs/xfs/xfs_error.c b/fs/xfs/xfs_error.c
> index a6f160a4d0e9..53704f1ed791 100644
> --- a/fs/xfs/xfs_error.c
> +++ b/fs/xfs/xfs_error.c
> @@ -50,17 +50,18 @@ xfs_errortag_attr_store(
> {
> struct xfs_mount *mp = to_mp(kobject);
> unsigned int error_tag = to_attr(attr)->tag;
> + unsigned int val;
> int ret;
>
> if (strcmp(buf, "default") == 0) {
> - mp->m_errortag[error_tag] =
> - xfs_errortag_random_default[error_tag];
> + val = xfs_errortag_random_default[error_tag];
> } else {
> - ret = kstrtouint(buf, 0, &mp->m_errortag[error_tag]);
> + ret = kstrtouint(buf, 0, &val);
> if (ret)
> return ret;
> }
>
> + WRITE_ONCE(mp->m_errortag[error_tag], val);
> return count;
> }
>
> @@ -71,9 +72,9 @@ xfs_errortag_attr_show(
> char *buf)
> {
> struct xfs_mount *mp = to_mp(kobject);
> - unsigned int error_tag = to_attr(attr)->tag;
>
> - return snprintf(buf, PAGE_SIZE, "%u\n", mp->m_errortag[error_tag]);
> + return snprintf(buf, PAGE_SIZE, "%u\n",
> + READ_ONCE(mp->m_errortag[to_attr(attr)->tag]));
> }
>
> static const struct sysfs_ops xfs_errortag_sysfs_ops = {
> @@ -134,7 +135,7 @@ xfs_errortag_test(
> {
> unsigned int randfactor;
>
> - randfactor = mp->m_errortag[error_tag];
> + randfactor = READ_ONCE(mp->m_errortag[error_tag]);
> if (!randfactor || get_random_u32_below(randfactor))
> return false;
>
> @@ -151,7 +152,7 @@ xfs_errortag_delay(
> int line,
> unsigned int error_tag)
> {
> - unsigned int delay = mp->m_errortag[error_tag];
> + unsigned int delay = READ_ONCE(mp->m_errortag[error_tag]);
>
> might_sleep();
>
> @@ -183,7 +184,8 @@ xfs_errortag_add(
> break;
> }
>
> - mp->m_errortag[error_tag] = xfs_errortag_random_default[error_tag];
> + WRITE_ONCE(mp->m_errortag[error_tag],
> + xfs_errortag_random_default[error_tag]);
> return 0;
> }
>
> @@ -191,7 +193,10 @@ int
> xfs_errortag_clearall(
> struct xfs_mount *mp)
> {
> - memset(mp->m_errortag, 0, sizeof(unsigned int) * XFS_ERRTAG_MAX);
> + unsigned int i;
> +
> + for (i = 0; i < XFS_ERRTAG_MAX; i++)
> + WRITE_ONCE(mp->m_errortag[i], 0);
> return 0;
> }
> #endif /* DEBUG */
> --
> 2.47.3
>
>
next prev parent reply other threads:[~2026-01-28 1:36 UTC|newest]
Thread overview: 61+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-27 16:05 stats and error injection for zoned GC Christoph Hellwig
2026-01-27 16:05 ` [PATCH 01/10] xfs: fix the errno sign for the xfs_errortag_{add,clearall} stubs Christoph Hellwig
2026-01-28 1:31 ` Darrick J. Wong
2026-01-28 10:50 ` Carlos Maiolino
2026-01-28 12:12 ` Hans Holmberg
2026-01-27 16:05 ` [PATCH 02/10] xfs: allocate m_errortag early Christoph Hellwig
2026-01-28 1:32 ` Darrick J. Wong
2026-01-28 3:42 ` Christoph Hellwig
2026-01-28 11:02 ` Carlos Maiolino
2026-01-28 12:12 ` Hans Holmberg
2026-01-27 16:05 ` [PATCH 03/10] xfs: don't validate error tags in the I/O path Christoph Hellwig
2026-01-28 1:33 ` Darrick J. Wong
2026-01-28 11:08 ` Carlos Maiolino
2026-01-28 12:14 ` Hans Holmberg
2026-01-27 16:05 ` [PATCH 04/10] xfs: move the guts of XFS_ERRORTAG_DELAY out of line Christoph Hellwig
2026-01-28 1:35 ` Darrick J. Wong
2026-01-28 3:44 ` Christoph Hellwig
2026-01-28 5:02 ` Darrick J. Wong
2026-01-28 5:03 ` Christoph Hellwig
2026-01-28 11:18 ` Carlos Maiolino
2026-01-28 14:10 ` Christoph Hellwig
2026-01-28 16:09 ` Darrick J. Wong
2026-01-28 17:43 ` Carlos Maiolino
2026-01-28 11:13 ` Carlos Maiolino
2026-01-28 12:14 ` Hans Holmberg
2026-01-27 16:05 ` [PATCH 05/10] xfs: use WRITE_ONCE/READ_ONCE for m_errortag Christoph Hellwig
2026-01-28 1:36 ` Darrick J. Wong [this message]
2026-01-28 11:21 ` Carlos Maiolino
2026-01-28 12:15 ` Hans Holmberg
2026-01-27 16:05 ` [PATCH 06/10] xfs: allow setting errortags at mount time Christoph Hellwig
2026-01-28 1:37 ` Darrick J. Wong
2026-01-28 3:45 ` Christoph Hellwig
2026-01-28 5:07 ` Darrick J. Wong
2026-01-28 5:12 ` Christoph Hellwig
2026-01-28 11:30 ` Carlos Maiolino
2026-01-28 14:11 ` Christoph Hellwig
2026-01-28 16:11 ` Darrick J. Wong
2026-01-28 16:13 ` Christoph Hellwig
2026-01-28 16:16 ` Darrick J. Wong
2026-01-28 17:48 ` Carlos Maiolino
2026-01-28 12:15 ` Hans Holmberg
2026-01-27 16:05 ` [PATCH 07/10] xfs: don't mark all discard issued by zoned GC as sync Christoph Hellwig
2026-01-28 1:38 ` Darrick J. Wong
2026-01-28 3:47 ` Christoph Hellwig
2026-01-28 11:30 ` Carlos Maiolino
2026-01-28 12:15 ` Hans Holmberg
2026-01-27 16:05 ` [PATCH 08/10] xfs: refactor zone reset handling Christoph Hellwig
2026-01-28 1:39 ` Darrick J. Wong
2026-01-28 11:34 ` Carlos Maiolino
2026-01-28 12:16 ` Hans Holmberg
2026-01-27 16:05 ` [PATCH 09/10] xfs: add zone reset error injection Christoph Hellwig
2026-01-28 1:39 ` Darrick J. Wong
2026-01-28 11:35 ` Carlos Maiolino
2026-01-28 12:19 ` Hans Holmberg
2026-01-27 16:05 ` [PATCH 10/10] xfs: add sysfs stats for zoned GC Christoph Hellwig
2026-01-28 1:40 ` Darrick J. Wong
2026-01-28 11:37 ` Carlos Maiolino
2026-01-28 12:53 ` Hans Holmberg
2026-01-28 14:12 ` hch
2026-01-28 15:11 ` Hans Holmberg
2026-01-28 15:12 ` hch
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=20260128013608.GE5945@frogsfrogsfrogs \
--to=djwong@kernel.org \
--cc=cem@kernel.org \
--cc=hans.holmberg@wdc.com \
--cc=hch@lst.de \
--cc=linux-xfs@vger.kernel.org \
/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