All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jiucheng Xu via B4 Relay via Linux-f2fs-devel <linux-f2fs-devel@lists.sourceforge.net>
To: Jaegeuk Kim <jaegeuk@kernel.org>, Chao Yu <chao@kernel.org>
Cc: Jiucheng Xu via B4 Relay
	<devnull+jiucheng.xu.amlogic.com@kernel.org>,
	jianxin.pan@amlogic.com, tuan.zhang@amlogic.com,
	linux-kernel@vger.kernel.org,
	linux-f2fs-devel@lists.sourceforge.net, tao.zeng@amlogic.com
Subject: [f2fs-dev] [PATCH] f2fs: force out-place update for all writes on compressed file
Date: Wed, 26 Aug 2026 16:48:56 +0800	[thread overview]
Message-ID: <20260826-origin-dev-v1-1-c21271a82100@amlogic.com> (raw)

From: Jiucheng Xu <jiucheng.xu@amlogic.com>

For compressed file, compressed write may fail and fall back to raw
write.
If in-place update(IPU) is allowed, raw data could be written into disk
before cluster metadata is updated from compressed state to raw state.
Sudden power-cut during this window will result in inconsistency:
raw data on disk but metadata still expects compressed content,
which causes decompression failure when reading the file later.

To eliminate this risk completely, force out-place update for all
write operations on compressed file, so IPU will never be used.

Signed-off-by: Jiucheng Xu <jiucheng.xu@amlogic.com>
---
 fs/f2fs/data.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c
index 6ae0eb37d20f96ed51a8124f59ba90dabf632fb5..aaeea561dcd30681b9b37f2f6f0493ed58ec2fe0 100644
--- a/fs/f2fs/data.c
+++ b/fs/f2fs/data.c
@@ -2973,10 +2973,12 @@ bool f2fs_should_update_outplace(struct inode *inode, struct f2fs_io_info *fio)
 		return true;
 	if (f2fs_used_in_atomic_write(inode))
 		return true;
-	/* rewrite low ratio compress data w/ OPU mode to avoid fragmentation */
-	if (f2fs_compressed_file(inode) &&
-		F2FS_OPTION(sbi).compress_mode == COMPR_MODE_USER &&
-		is_inode_flag_set(inode, FI_ENABLE_COMPRESS))
+	/*
+	 * rewrite low ratio compress data w/ OPU mode to avoid fragmentation.
+	 * If IO comes from compressed write path and fallback to raw write,
+	 * force out‑place to prevent metadata‑data inconsistency.
+	 */
+	if (f2fs_compressed_file(inode))
 		return true;
 
 	/* swap file is migrating in aligned write mode */

---
base-commit: 0a1703eba23707e3b2edfa2a2329352e7abc0ffa
change-id: 20260818-origin-dev-0e8c63e2145a

Best regards,
-- 
Jiucheng Xu <jiucheng.xu@amlogic.com>




_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

WARNING: multiple messages have this Message-ID (diff)
From: Jiucheng Xu via B4 Relay <devnull+jiucheng.xu.amlogic.com@kernel.org>
To: Jaegeuk Kim <jaegeuk@kernel.org>, Chao Yu <chao@kernel.org>
Cc: linux-f2fs-devel@lists.sourceforge.net,
	linux-kernel@vger.kernel.org,  jianxin.pan@amlogic.com,
	tao.zeng@amlogic.com, tuan.zhang@amlogic.com,
	 Jiucheng Xu <jiucheng.xu@amlogic.com>
Subject: [PATCH] f2fs: force out-place update for all writes on compressed file
Date: Wed, 26 Aug 2026 16:48:56 +0800	[thread overview]
Message-ID: <20260826-origin-dev-v1-1-c21271a82100@amlogic.com> (raw)

From: Jiucheng Xu <jiucheng.xu@amlogic.com>

For compressed file, compressed write may fail and fall back to raw
write.
If in-place update(IPU) is allowed, raw data could be written into disk
before cluster metadata is updated from compressed state to raw state.
Sudden power-cut during this window will result in inconsistency:
raw data on disk but metadata still expects compressed content,
which causes decompression failure when reading the file later.

To eliminate this risk completely, force out-place update for all
write operations on compressed file, so IPU will never be used.

Signed-off-by: Jiucheng Xu <jiucheng.xu@amlogic.com>
---
 fs/f2fs/data.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c
index 6ae0eb37d20f96ed51a8124f59ba90dabf632fb5..aaeea561dcd30681b9b37f2f6f0493ed58ec2fe0 100644
--- a/fs/f2fs/data.c
+++ b/fs/f2fs/data.c
@@ -2973,10 +2973,12 @@ bool f2fs_should_update_outplace(struct inode *inode, struct f2fs_io_info *fio)
 		return true;
 	if (f2fs_used_in_atomic_write(inode))
 		return true;
-	/* rewrite low ratio compress data w/ OPU mode to avoid fragmentation */
-	if (f2fs_compressed_file(inode) &&
-		F2FS_OPTION(sbi).compress_mode == COMPR_MODE_USER &&
-		is_inode_flag_set(inode, FI_ENABLE_COMPRESS))
+	/*
+	 * rewrite low ratio compress data w/ OPU mode to avoid fragmentation.
+	 * If IO comes from compressed write path and fallback to raw write,
+	 * force out‑place to prevent metadata‑data inconsistency.
+	 */
+	if (f2fs_compressed_file(inode))
 		return true;
 
 	/* swap file is migrating in aligned write mode */

---
base-commit: 0a1703eba23707e3b2edfa2a2329352e7abc0ffa
change-id: 20260818-origin-dev-0e8c63e2145a

Best regards,
-- 
Jiucheng Xu <jiucheng.xu@amlogic.com>



WARNING: multiple messages have this Message-ID (diff)
From: Jiucheng Xu <jiucheng.xu@amlogic.com>
To: Jaegeuk Kim <jaegeuk@kernel.org>, Chao Yu <chao@kernel.org>
Cc: linux-f2fs-devel@lists.sourceforge.net,
	linux-kernel@vger.kernel.org,  jianxin.pan@amlogic.com,
	tao.zeng@amlogic.com, tuan.zhang@amlogic.com,
	 Jiucheng Xu <jiucheng.xu@amlogic.com>
Subject: [PATCH] f2fs: force out-place update for all writes on compressed file
Date: Wed, 26 Aug 2026 16:48:56 +0800	[thread overview]
Message-ID: <20260826-origin-dev-v1-1-c21271a82100@amlogic.com> (raw)

For compressed file, compressed write may fail and fall back to raw
write.
If in-place update(IPU) is allowed, raw data could be written into disk
before cluster metadata is updated from compressed state to raw state.
Sudden power-cut during this window will result in inconsistency:
raw data on disk but metadata still expects compressed content,
which causes decompression failure when reading the file later.

To eliminate this risk completely, force out-place update for all
write operations on compressed file, so IPU will never be used.

Signed-off-by: Jiucheng Xu <jiucheng.xu@amlogic.com>
---
 fs/f2fs/data.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c
index 6ae0eb37d20f96ed51a8124f59ba90dabf632fb5..aaeea561dcd30681b9b37f2f6f0493ed58ec2fe0 100644
--- a/fs/f2fs/data.c
+++ b/fs/f2fs/data.c
@@ -2973,10 +2973,12 @@ bool f2fs_should_update_outplace(struct inode *inode, struct f2fs_io_info *fio)
 		return true;
 	if (f2fs_used_in_atomic_write(inode))
 		return true;
-	/* rewrite low ratio compress data w/ OPU mode to avoid fragmentation */
-	if (f2fs_compressed_file(inode) &&
-		F2FS_OPTION(sbi).compress_mode == COMPR_MODE_USER &&
-		is_inode_flag_set(inode, FI_ENABLE_COMPRESS))
+	/*
+	 * rewrite low ratio compress data w/ OPU mode to avoid fragmentation.
+	 * If IO comes from compressed write path and fallback to raw write,
+	 * force out‑place to prevent metadata‑data inconsistency.
+	 */
+	if (f2fs_compressed_file(inode))
 		return true;
 
 	/* swap file is migrating in aligned write mode */

---
base-commit: 0a1703eba23707e3b2edfa2a2329352e7abc0ffa
change-id: 20260818-origin-dev-0e8c63e2145a

Best regards,
-- 
Jiucheng Xu <jiucheng.xu@amlogic.com>


             reply	other threads:[~2026-08-26  8:55 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-26  8:48 Jiucheng Xu via B4 Relay via Linux-f2fs-devel [this message]
2026-08-26  8:48 ` [PATCH] f2fs: force out-place update for all writes on compressed file Jiucheng Xu
2026-08-26  8:48 ` Jiucheng Xu via B4 Relay
  -- strict thread matches above, loose matches on Subject: below --
2026-09-07 11:35 [f2fs-dev] " Jiucheng Xu via B4 Relay via Linux-f2fs-devel
2026-09-08  0:15 ` Chao Yu via Linux-f2fs-devel

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=20260826-origin-dev-v1-1-c21271a82100@amlogic.com \
    --to=linux-f2fs-devel@lists.sourceforge.net \
    --cc=chao@kernel.org \
    --cc=devnull+jiucheng.xu.amlogic.com@kernel.org \
    --cc=jaegeuk@kernel.org \
    --cc=jianxin.pan@amlogic.com \
    --cc=jiucheng.xu@amlogic.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=tao.zeng@amlogic.com \
    --cc=tuan.zhang@amlogic.com \
    /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.