From: Jaegeuk Kim <jaegeuk@kernel.org>
To: linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net
Subject: Re: [f2fs-dev] [PATCH 2/5 v2] f2fs: fix write pointers all the time
Date: Mon, 26 Feb 2024 16:59:56 -0800 [thread overview]
Message-ID: <Zd00DE6mXbt509sX@google.com> (raw)
In-Reply-To: <20240223205535.307307-2-jaegeuk@kernel.org>
Even if the roll forward recovery stopped due to any error, we have to fix
the write pointers in order to mount the disk from the previous checkpoint.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
---
from v1:
- preserve error
fs/f2fs/recovery.c | 15 +++++++--------
fs/f2fs/super.c | 11 +++++++----
2 files changed, 14 insertions(+), 12 deletions(-)
diff --git a/fs/f2fs/recovery.c b/fs/f2fs/recovery.c
index b3baec666afe..3078d5613748 100644
--- a/fs/f2fs/recovery.c
+++ b/fs/f2fs/recovery.c
@@ -863,7 +863,6 @@ int f2fs_recover_fsync_data(struct f2fs_sb_info *sbi, bool check_only)
int ret = 0;
unsigned long s_flags = sbi->sb->s_flags;
bool need_writecp = false;
- bool fix_curseg_write_pointer = false;
if (is_sbi_flag_set(sbi, SBI_IS_WRITABLE))
f2fs_info(sbi, "recover fsync data on readonly fs");
@@ -894,8 +893,6 @@ int f2fs_recover_fsync_data(struct f2fs_sb_info *sbi, bool check_only)
else
f2fs_bug_on(sbi, sbi->sb->s_flags & SB_ACTIVE);
skip:
- fix_curseg_write_pointer = !check_only || list_empty(&inode_list);
-
destroy_fsync_dnodes(&inode_list, err);
destroy_fsync_dnodes(&tmp_inode_list, err);
@@ -913,11 +910,13 @@ int f2fs_recover_fsync_data(struct f2fs_sb_info *sbi, bool check_only)
* and the f2fs is not read only, check and fix zoned block devices'
* write pointer consistency.
*/
- if (!err && fix_curseg_write_pointer && !f2fs_readonly(sbi->sb) &&
- f2fs_sb_has_blkzoned(sbi)) {
- err = f2fs_fix_curseg_write_pointer(sbi);
- if (!err)
- err = f2fs_check_write_pointer(sbi);
+ if (f2fs_sb_has_blkzoned(sbi) && !f2fs_readonly(sbi->sb)) {
+ int err2 = f2fs_fix_curseg_write_pointer(sbi);
+
+ if (!err2)
+ err2 = f2fs_check_write_pointer(sbi);
+ if (err2)
+ err = err2;
ret = err;
}
diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
index d91e57ca6110..77348fd0a42b 100644
--- a/fs/f2fs/super.c
+++ b/fs/f2fs/super.c
@@ -4674,11 +4674,14 @@ static int f2fs_fill_super(struct super_block *sb, void *data, int silent)
* If the f2fs is not readonly and fsync data recovery succeeds,
* check zoned block devices' write pointer consistency.
*/
- if (!err && !f2fs_readonly(sb) && f2fs_sb_has_blkzoned(sbi)) {
- err = f2fs_check_write_pointer(sbi);
- if (err)
- goto free_meta;
+ if (f2fs_sb_has_blkzoned(sbi) && !f2fs_readonly(sb)) {
+ int err2 = f2fs_check_write_pointer(sbi);
+
+ if (err2)
+ err = err2;
}
+ if (err)
+ goto free_meta;
f2fs_init_inmem_curseg(sbi);
--
2.44.0.rc1.240.g4c46232300-goog
_______________________________________________
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: Jaegeuk Kim <jaegeuk@kernel.org>
To: linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net
Subject: Re: [PATCH 2/5 v2] f2fs: fix write pointers all the time
Date: Mon, 26 Feb 2024 16:59:56 -0800 [thread overview]
Message-ID: <Zd00DE6mXbt509sX@google.com> (raw)
In-Reply-To: <20240223205535.307307-2-jaegeuk@kernel.org>
Even if the roll forward recovery stopped due to any error, we have to fix
the write pointers in order to mount the disk from the previous checkpoint.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
---
from v1:
- preserve error
fs/f2fs/recovery.c | 15 +++++++--------
fs/f2fs/super.c | 11 +++++++----
2 files changed, 14 insertions(+), 12 deletions(-)
diff --git a/fs/f2fs/recovery.c b/fs/f2fs/recovery.c
index b3baec666afe..3078d5613748 100644
--- a/fs/f2fs/recovery.c
+++ b/fs/f2fs/recovery.c
@@ -863,7 +863,6 @@ int f2fs_recover_fsync_data(struct f2fs_sb_info *sbi, bool check_only)
int ret = 0;
unsigned long s_flags = sbi->sb->s_flags;
bool need_writecp = false;
- bool fix_curseg_write_pointer = false;
if (is_sbi_flag_set(sbi, SBI_IS_WRITABLE))
f2fs_info(sbi, "recover fsync data on readonly fs");
@@ -894,8 +893,6 @@ int f2fs_recover_fsync_data(struct f2fs_sb_info *sbi, bool check_only)
else
f2fs_bug_on(sbi, sbi->sb->s_flags & SB_ACTIVE);
skip:
- fix_curseg_write_pointer = !check_only || list_empty(&inode_list);
-
destroy_fsync_dnodes(&inode_list, err);
destroy_fsync_dnodes(&tmp_inode_list, err);
@@ -913,11 +910,13 @@ int f2fs_recover_fsync_data(struct f2fs_sb_info *sbi, bool check_only)
* and the f2fs is not read only, check and fix zoned block devices'
* write pointer consistency.
*/
- if (!err && fix_curseg_write_pointer && !f2fs_readonly(sbi->sb) &&
- f2fs_sb_has_blkzoned(sbi)) {
- err = f2fs_fix_curseg_write_pointer(sbi);
- if (!err)
- err = f2fs_check_write_pointer(sbi);
+ if (f2fs_sb_has_blkzoned(sbi) && !f2fs_readonly(sbi->sb)) {
+ int err2 = f2fs_fix_curseg_write_pointer(sbi);
+
+ if (!err2)
+ err2 = f2fs_check_write_pointer(sbi);
+ if (err2)
+ err = err2;
ret = err;
}
diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
index d91e57ca6110..77348fd0a42b 100644
--- a/fs/f2fs/super.c
+++ b/fs/f2fs/super.c
@@ -4674,11 +4674,14 @@ static int f2fs_fill_super(struct super_block *sb, void *data, int silent)
* If the f2fs is not readonly and fsync data recovery succeeds,
* check zoned block devices' write pointer consistency.
*/
- if (!err && !f2fs_readonly(sb) && f2fs_sb_has_blkzoned(sbi)) {
- err = f2fs_check_write_pointer(sbi);
- if (err)
- goto free_meta;
+ if (f2fs_sb_has_blkzoned(sbi) && !f2fs_readonly(sb)) {
+ int err2 = f2fs_check_write_pointer(sbi);
+
+ if (err2)
+ err = err2;
}
+ if (err)
+ goto free_meta;
f2fs_init_inmem_curseg(sbi);
--
2.44.0.rc1.240.g4c46232300-goog
next prev parent reply other threads:[~2024-02-27 1:00 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-23 20:55 [f2fs-dev] [PATCH 1/5] f2fs: check number of blocks in a current section Jaegeuk Kim
2024-02-23 20:55 ` Jaegeuk Kim
2024-02-23 20:55 ` [f2fs-dev] [PATCH 2/5] f2fs: fix write pointers all the time Jaegeuk Kim
2024-02-23 20:55 ` Jaegeuk Kim
2024-02-26 2:48 ` [f2fs-dev] " Chao Yu
2024-02-26 2:48 ` Chao Yu
2024-02-26 17:33 ` Daeho Jeong
2024-02-26 17:33 ` Daeho Jeong
2024-02-27 1:00 ` Jaegeuk Kim
2024-02-27 1:00 ` Jaegeuk Kim
2024-02-27 0:59 ` Jaegeuk Kim [this message]
2024-02-27 0:59 ` [PATCH 2/5 v2] " Jaegeuk Kim
2024-02-27 6:19 ` [f2fs-dev] " Chao Yu
2024-02-27 6:19 ` Chao Yu
2024-02-23 20:55 ` [f2fs-dev] [PATCH 3/5] f2fs: print zone status in string and some log Jaegeuk Kim
2024-02-23 20:55 ` Jaegeuk Kim
2024-02-26 2:54 ` [f2fs-dev] " Chao Yu
2024-02-26 2:54 ` Chao Yu
2024-02-26 19:03 ` Daeho Jeong
2024-02-26 19:03 ` Daeho Jeong
2024-02-26 22:52 ` [f2fs-dev] [PATCH 3/5 v2] " Jaegeuk Kim
2024-02-26 22:52 ` Jaegeuk Kim
2024-02-27 6:26 ` [f2fs-dev] " Chao Yu
2024-02-27 6:26 ` Chao Yu
2024-03-04 17:47 ` [f2fs-dev] [PATCH 3/5] " Jaegeuk Kim
2024-03-04 17:47 ` Jaegeuk Kim
2024-02-23 20:55 ` [f2fs-dev] [PATCH 4/5] f2fs: prevent an f2fs_gc loop during disable_checkpoint Jaegeuk Kim
2024-02-23 20:55 ` Jaegeuk Kim
2024-02-26 2:58 ` [f2fs-dev] " Chao Yu
2024-02-26 2:58 ` Chao Yu
2024-02-26 19:14 ` Daeho Jeong
2024-02-26 19:14 ` Daeho Jeong
2024-02-23 20:55 ` [f2fs-dev] [PATCH 5/5] f2fs: allow to mount if cap is 100 Jaegeuk Kim
2024-02-23 20:55 ` Jaegeuk Kim
2024-02-26 2:59 ` [f2fs-dev] " Chao Yu
2024-02-26 2:59 ` Chao Yu
2024-02-26 19:34 ` Daeho Jeong
2024-02-26 19:34 ` Daeho Jeong
2024-02-26 22:47 ` Jaegeuk Kim
2024-02-26 22:47 ` Jaegeuk Kim
2024-02-28 3:47 ` Daeho Jeong
2024-02-28 3:47 ` Daeho Jeong
2024-02-26 2:40 ` [f2fs-dev] [PATCH 1/5] f2fs: check number of blocks in a current section Chao Yu
2024-02-26 2:40 ` Chao Yu
2024-02-26 17:17 ` Daeho Jeong
2024-02-26 17:17 ` Daeho Jeong
2024-02-26 23:14 ` [f2fs-dev] [PATCH 1/5 v2] " Jaegeuk Kim
2024-02-26 23:14 ` Jaegeuk Kim
2024-02-27 6:08 ` [f2fs-dev] " Chao Yu
2024-02-27 6:08 ` Chao Yu
2024-02-28 22:50 ` [f2fs-dev] [PATCH 1/5] " patchwork-bot+f2fs
2024-02-28 22:50 ` patchwork-bot+f2fs
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=Zd00DE6mXbt509sX@google.com \
--to=jaegeuk@kernel.org \
--cc=linux-f2fs-devel@lists.sourceforge.net \
--cc=linux-kernel@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 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.