FAILED: patch "[PATCH] f2fs: fix to propagate error from f2fs_enable_checkpoint()" failed to apply to 6.1-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 6.1-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-6.1.y
git checkout FETCH_HEAD
git cherry-pick -x be112e7449a6e1b54aa9feac618825d154b3a5c7
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2025122947-gully-quickness-659f@gregkh' --subject-prefix 'PATCH 6.1.y' HEAD^..
Possible dependencies:
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From be112e7449a6e1b54aa9feac618825d154b3a5c7 Mon Sep 17 00:00:00 2001
From: Chao Yu <[email protected]>
Date: Mon, 27 Oct 2025 14:35:33 +0800
Subject: [PATCH] f2fs: fix to propagate error from f2fs_enable_checkpoint()
In order to let userspace detect such error rather than suffering silent failure.
fs/f2fs/super.c +16 -10
@@ -2632,10 +2632,11 @@ static int f2fs_disable_checkpoint(struct f2fs_sb_info *sbi)return err; } -static void f2fs_enable_checkpoint (struct f2fs_sb_info *sbi) +static int f2fs_enable_checkpoint (struct f2fs_sb_info *sbi) {unsigned int nr_pages =get_pages (sbi,F2FS_DIRTY_DATA ) /16 ;long long start, writeback, end; +int ret; f2fs_info(sbi, "f2fs_enable_checkpoint() starts, meta: %lld, node: %lld, data: %lld", get_pages(sbi, F2FS_DIRTY_META),
@@ -2669,7 +2670,9 @@ static void f2fs_enable_checkpoint(struct f2fs_sb_info *sbi)set_sbi_flag (sbi,SBI_IS_DIRTY );f2fs_up_write (&sbi->gc_lock); -f2fs_sync_fs (sbi->sb,1 ); + ret =f2fs_sync_fs (sbi->sb,1 ); +if (ret) +f2fs_err (sbi,"%s sync_fs failed, ret: %d" , __func__, ret);/* Let's ensure there's no pending checkpoint anymore */ f2fs_flush_ckpt_thread (sbi);
@@ -2679,6 +2682,7 @@ static void f2fs_enable_checkpoint(struct f2fs_sb_info *sbi)f2fs_info (sbi,"f2fs_enable_checkpoint() finishes, writeback:%llu, sync:%llu" ,ktime_ms_delta (writeback, start),ktime_ms_delta (end, writeback)); +return ret; }static int __f2fs_remount (struct fs_context *fc,struct super_block *sb)
@@ -2892,7 +2896,9 @@ static int __f2fs_remount(struct fs_context *fc, struct super_block *sb) goto restore_discard; need_enable_checkpoint = true; }else { -f2fs_enable_checkpoint (sbi); + err =f2fs_enable_checkpoint (sbi); +if (err) + goto restore_discard; need_disable_checkpoint = true; } }
@@ -2935,7 +2941,8 @@ static int __f2fs_remount(struct fs_context *fc, struct super_block *sb)return 0 ; restore_checkpoint:if (need_enable_checkpoint) { -f2fs_enable_checkpoint (sbi); +if (f2fs_enable_checkpoint (sbi)) +f2fs_warn (sbi,"checkpoint has not been enabled" ); }else if (need_disable_checkpoint) {if (f2fs_disable_checkpoint (sbi))f2fs_warn (sbi,"checkpoint has not been disabled" );
@@ -5212,13 +5219,12 @@ static int f2fs_fill_super(struct super_block *sb, struct fs_context *fc)if (err) goto sync_free_meta; -if (test_opt (sbi,DISABLE_CHECKPOINT )) { +if (test_opt (sbi,DISABLE_CHECKPOINT )) err =f2fs_disable_checkpoint (sbi); -if (err) - goto sync_free_meta; - }else if (is_set_ckpt_flags (sbi,CP_DISABLED_FLAG )) { -f2fs_enable_checkpoint (sbi); - } +else if (is_set_ckpt_flags (sbi,CP_DISABLED_FLAG )) + err =f2fs_enable_checkpoint (sbi); +if (err) + goto sync_free_meta;/* * If filesystem is not mounted as read-only then
Sasha Levin
maintainerPATCH 1/1 f2fs: fix to propagate error from f2fs_enable_checkpoint()
From: Chao Yu <[email protected]>
[ Upstream commit be112e7449a6e1b54aa9feac618825d154b3a5c7 ]
In order to let userspace detect such error rather than suffering silent failure.
--- fs/f2fs/super.c | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-)
fs/f2fs/super.c +15 -9
@@ -2219,9 +2219,10 @@ static int f2fs_disable_checkpoint(struct f2fs_sb_info *sbi)return err; } -static void f2fs_enable_checkpoint (struct f2fs_sb_info *sbi) +static int f2fs_enable_checkpoint (struct f2fs_sb_info *sbi) {int retry =DEFAULT_RETRY_IO_COUNT ; +int ret;/* we should flush all the data to keep data consistency */ do {
@@ -2239,10 +2240,14 @@ static void f2fs_enable_checkpoint(struct f2fs_sb_info *sbi)set_sbi_flag (sbi,SBI_IS_DIRTY );f2fs_up_write (&sbi->gc_lock); -f2fs_sync_fs (sbi->sb,1 ); + ret =f2fs_sync_fs (sbi->sb,1 ); +if (ret) +f2fs_err (sbi,"%s sync_fs failed, ret: %d" , __func__, ret);/* Let's ensure there's no pending checkpoint anymore */ f2fs_flush_ckpt_thread (sbi); + +return ret; }static int f2fs_remount (struct super_block *sb,int *flags,char *data)
@@ -2457,7 +2462,9 @@ static int f2fs_remount(struct super_block *sb, int *flags, char *data)if (err) goto restore_discard; }else { -f2fs_enable_checkpoint (sbi); + err =f2fs_enable_checkpoint (sbi); +if (err) + goto restore_discard; } }
@@ -4521,13 +4528,12 @@ static int f2fs_fill_super(struct super_block *sb, void *data, int silent)/* f2fs_recover_fsync_data() cleared this already */ clear_sbi_flag (sbi,SBI_POR_DOING ); -if (test_opt (sbi,DISABLE_CHECKPOINT )) { +if (test_opt (sbi,DISABLE_CHECKPOINT )) err =f2fs_disable_checkpoint (sbi); -if (err) - goto sync_free_meta; - }else if (is_set_ckpt_flags (sbi,CP_DISABLED_FLAG )) { -f2fs_enable_checkpoint (sbi); - } +else if (is_set_ckpt_flags (sbi,CP_DISABLED_FLAG )) + err =f2fs_enable_checkpoint (sbi); +if (err) + goto sync_free_meta;/* * If filesystem is not mounted as read-only then
Signature · 1 line
2.51.0