From: Kinglong Mee <kinglong...@gmail.com> memset(raw_node, 0, F2FS_BLKSIZE) sets the next_blkaddr to zero, so that, only one reset dnode is cleaned always.
Fixes: ad042d9194f5 "mkfs.f2fs: reset dnode with zeros", Signed-off-by: Kinglong Mee <kinglong...@gmail.com> Signed-off-by: Jaegeuk Kim <jaeg...@kernel.org> --- mkfs/f2fs_format.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mkfs/f2fs_format.c b/mkfs/f2fs_format.c index 2e0a4e5..e61adaa 100644 --- a/mkfs/f2fs_format.c +++ b/mkfs/f2fs_format.c @@ -775,6 +775,8 @@ static int f2fs_write_super_block(void) #ifndef WITH_ANDROID static int discard_obsolete_dnode(struct f2fs_node *raw_node, u_int64_t offset) { + u_int64_t next_blkaddr = 0; + if (c.zoned_mode) return 0; do { @@ -787,6 +789,7 @@ static int discard_obsolete_dnode(struct f2fs_node *raw_node, u_int64_t offset) return -1; } + next_blkaddr = le32_to_cpu(raw_node->footer.next_blkaddr); memset(raw_node, 0, F2FS_BLKSIZE); DBG(1, "\tDiscard dnode, at offset 0x%08"PRIx64"\n", offset); @@ -794,7 +797,7 @@ static int discard_obsolete_dnode(struct f2fs_node *raw_node, u_int64_t offset) MSG(1, "\tError: While discarding direct node!!!\n"); return -1; } - offset = le32_to_cpu(raw_node->footer.next_blkaddr); + offset = next_blkaddr; } while (1); return 0; -- 2.11.0 ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, SlashDot.org! http://sdm.link/slashdot _______________________________________________ Linux-f2fs-devel mailing list Linux-f2fs-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel