* [PATCH 1/2] defrag.f2fs: fix missing SSA updates
@ 2015-12-21 17:44 Jaegeuk Kim
2015-12-21 17:44 ` [PATCH 2/2] fsck.f2fs: fix losing journal entries Jaegeuk Kim
0 siblings, 1 reply; 2+ messages in thread
From: Jaegeuk Kim @ 2015-12-21 17:44 UTC (permalink / raw)
To: linux-f2fs-devel; +Cc: Jaegeuk Kim
Previously SSA is updated if it is not included in current segment info.
But, defrag.f2fs doesn't handle current segment info during the process, and
instead lastly update the whole current segment info at a time.
So, we need to update summary entries all the time.
Otherwise, we can lose the SSA entry.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
---
fsck/mount.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/fsck/mount.c b/fsck/mount.c
index 79611e5..d2f1432 100644
--- a/fsck/mount.c
+++ b/fsck/mount.c
@@ -761,13 +761,16 @@ void update_sum_entry(struct f2fs_sb_info *sbi, block_t blk_addr,
sum_blk->footer.entry_type = IS_NODESEG(se->type) ? SUM_TYPE_NODE :
SUM_TYPE_DATA;
- if (type == SEG_TYPE_NODE || type == SEG_TYPE_DATA ||
- type == SEG_TYPE_MAX) {
+ /* write SSA all the time */
+ if (type < SEG_TYPE_MAX) {
u64 ssa_blk = GET_SUM_BLKADDR(sbi, segno);
ret = dev_write_block(sum_blk, ssa_blk);
ASSERT(ret >= 0);
- free(sum_blk);
}
+
+ if (type == SEG_TYPE_NODE || type == SEG_TYPE_DATA ||
+ type == SEG_TYPE_MAX)
+ free(sum_blk);
}
static void restore_curseg_summaries(struct f2fs_sb_info *sbi)
--
2.5.4 (Apple Git-61)
------------------------------------------------------------------------------
^ permalink raw reply related [flat|nested] 2+ messages in thread
* [PATCH 2/2] fsck.f2fs: fix losing journal entries
2015-12-21 17:44 [PATCH 1/2] defrag.f2fs: fix missing SSA updates Jaegeuk Kim
@ 2015-12-21 17:44 ` Jaegeuk Kim
0 siblings, 0 replies; 2+ messages in thread
From: Jaegeuk Kim @ 2015-12-21 17:44 UTC (permalink / raw)
To: linux-f2fs-devel; +Cc: Jaegeuk Kim
If fsck.f2fs reports a bug, move_curseg_info tries to change the current
segment info.
When it changes the new summary block, it overwrites the existing journal
entries.
This patch fixes it not to overwrite journal entry space.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
---
fsck/mount.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/fsck/mount.c b/fsck/mount.c
index d2f1432..fe68f37 100644
--- a/fsck/mount.c
+++ b/fsck/mount.c
@@ -1438,6 +1438,7 @@ void move_curseg_info(struct f2fs_sb_info *sbi, u64 from)
/* update summary blocks having nullified journal entries */
for (i = 0; i < NO_CHECK_TYPE; i++) {
struct curseg_info *curseg = CURSEG_I(sbi, i);
+ struct f2fs_summary_block buf;
u32 old_segno;
u64 ssa_blk, to;
@@ -1457,9 +1458,11 @@ void move_curseg_info(struct f2fs_sb_info *sbi, u64 from)
/* update new segno */
ssa_blk = GET_SUM_BLKADDR(sbi, curseg->segno);
- ret = dev_read_block(curseg->sum_blk, ssa_blk);
+ ret = dev_read_block(&buf, ssa_blk);
ASSERT(ret >= 0);
+ memcpy(curseg->sum_blk, &buf, SUM_ENTRIES_SIZE);
+
/* update se->types */
reset_curseg(sbi, i);
--
2.5.4 (Apple Git-61)
------------------------------------------------------------------------------
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2015-12-21 17:45 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-12-21 17:44 [PATCH 1/2] defrag.f2fs: fix missing SSA updates Jaegeuk Kim
2015-12-21 17:44 ` [PATCH 2/2] fsck.f2fs: fix losing journal entries Jaegeuk Kim
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).