Re: [f2fs-dev] [PATCH 01/14] f2fs: extend folio state for large folio write path

From: Nanzhe Zhao

Date: Mon Sep 07 2026 - 05:44:02 EST


On Thu, 27 Aug 2026 13:51:06 -0700, Daeho Jeong wrote:
> + ffs->private_flags |= flags;
>
> Is this field protected by holding a lock properly?

Thanks for the review.
No, it doesn't. Thanks for pointing out.

I want to change this using per-field atomic read-modify-write ops
instead, to avoid taking state_lock, like below:

diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
@@ f2fs_folio_get_private_flags() (f2fs.h:2719)
if (f2fs_folio_has_ffs(folio)) {
struct f2fs_folio_state *ffs = folio->private;

- return ffs->private_flags;
+ return READ_ONCE(ffs->private_flags);
}
@@ f2fs_folio_set_private_flags() (f2fs.h:2730)
if (f2fs_folio_has_ffs(folio)) {
struct f2fs_folio_state *ffs = folio->private;

- ffs->private_flags |= flags;
+ if (flags)
+ __atomic_or_fetch(&ffs->private_flags, flags,
+ __ATOMIC_RELAXED);
return;
}
@@ f2fs_folio_clear_private_flags() (f2fs.h:2746)
if (f2fs_folio_has_ffs(folio)) {
struct f2fs_folio_state *ffs = folio->private;

- ffs->private_flags &= ~flags;
+ if (flags)
+ __atomic_and_fetch(&ffs->private_flags, ~flags,
+ __ATOMIC_RELAXED);
return;
}

Please let me know if this lock-free approach looks acceptable.

Thanks,
Nanzhe