2023-10-13 22:25:15

by Daeho Jeong

[permalink] [raw]
Subject: [PATCH] f2fs-tools: initialize allocated node area

From: Daeho Jeong <[email protected]>

Need to initialize allocated node areas after memory allocation.

Signed-off-by: Daeho Jeong <[email protected]>
---
fsck/node.c | 1 +
include/f2fs_fs.h | 2 ++
2 files changed, 3 insertions(+)

diff --git a/fsck/node.c b/fsck/node.c
index 3761470..6508340 100644
--- a/fsck/node.c
+++ b/fsck/node.c
@@ -127,6 +127,7 @@ block_t new_node_block(struct f2fs_sb_info *sbi,

node_blk = calloc(BLOCK_SZ, 1);
ASSERT(node_blk);
+ memset(node_blk, 0, BLOCK_SZ);

F2FS_NODE_FOOTER(node_blk)->nid = cpu_to_le32(dn->nid);
F2FS_NODE_FOOTER(node_blk)->ino = F2FS_NODE_FOOTER(f2fs_inode)->ino;
diff --git a/include/f2fs_fs.h b/include/f2fs_fs.h
index 3c7451c..7e22278 100644
--- a/include/f2fs_fs.h
+++ b/include/f2fs_fs.h
@@ -1826,6 +1826,8 @@ static inline void show_version(const char *prog)
static inline void f2fs_init_inode(struct f2fs_super_block *sb,
struct f2fs_node *raw_node, nid_t ino, time_t mtime, mode_t mode)
{
+ memset(raw_node, 0, F2FS_BLKSIZE);
+
F2FS_NODE_FOOTER(raw_node)->nid = cpu_to_le32(ino);
F2FS_NODE_FOOTER(raw_node)->ino = cpu_to_le32(ino);
F2FS_NODE_FOOTER(raw_node)->cp_ver = cpu_to_le64(1);
--
2.42.0.655.g421f12c284-goog


2023-10-16 06:33:18

by Chao Yu

[permalink] [raw]
Subject: Re: [f2fs-dev] [PATCH] f2fs-tools: initialize allocated node area

On 2023/10/14 6:24, Daeho Jeong wrote:
> From: Daeho Jeong <[email protected]>
>
> Need to initialize allocated node areas after memory allocation.
>
> Signed-off-by: Daeho Jeong <[email protected]>
> ---
> fsck/node.c | 1 +
> include/f2fs_fs.h | 2 ++
> 2 files changed, 3 insertions(+)
>
> diff --git a/fsck/node.c b/fsck/node.c
> index 3761470..6508340 100644
> --- a/fsck/node.c
> +++ b/fsck/node.c
> @@ -127,6 +127,7 @@ block_t new_node_block(struct f2fs_sb_info *sbi,
>
> node_blk = calloc(BLOCK_SZ, 1);

calloc() has already initialized memory w/ zero, it doesn't need to reinitialize
it again?

> ASSERT(node_blk);
> + memset(node_blk, 0, BLOCK_SZ);
>
> F2FS_NODE_FOOTER(node_blk)->nid = cpu_to_le32(dn->nid);
> F2FS_NODE_FOOTER(node_blk)->ino = F2FS_NODE_FOOTER(f2fs_inode)->ino;
> diff --git a/include/f2fs_fs.h b/include/f2fs_fs.h
> index 3c7451c..7e22278 100644
> --- a/include/f2fs_fs.h
> +++ b/include/f2fs_fs.h
> @@ -1826,6 +1826,8 @@ static inline void show_version(const char *prog)
> static inline void f2fs_init_inode(struct f2fs_super_block *sb,
> struct f2fs_node *raw_node, nid_t ino, time_t mtime, mode_t mode)
> {
> + memset(raw_node, 0, F2FS_BLKSIZE);

Ditto,

Thanks,

> +
> F2FS_NODE_FOOTER(raw_node)->nid = cpu_to_le32(ino);
> F2FS_NODE_FOOTER(raw_node)->ino = cpu_to_le32(ino);
> F2FS_NODE_FOOTER(raw_node)->cp_ver = cpu_to_le64(1);

2023-10-16 15:26:35

by Daeho Jeong

[permalink] [raw]
Subject: Re: [f2fs-dev] [PATCH] f2fs-tools: initialize allocated node area

On Sun, Oct 15, 2023 at 11:33 PM Chao Yu <[email protected]> wrote:
>
> On 2023/10/14 6:24, Daeho Jeong wrote:
> > From: Daeho Jeong <[email protected]>
> >
> > Need to initialize allocated node areas after memory allocation.
> >
> > Signed-off-by: Daeho Jeong <[email protected]>
> > ---
> > fsck/node.c | 1 +
> > include/f2fs_fs.h | 2 ++
> > 2 files changed, 3 insertions(+)
> >
> > diff --git a/fsck/node.c b/fsck/node.c
> > index 3761470..6508340 100644
> > --- a/fsck/node.c
> > +++ b/fsck/node.c
> > @@ -127,6 +127,7 @@ block_t new_node_block(struct f2fs_sb_info *sbi,
> >
> > node_blk = calloc(BLOCK_SZ, 1);
>
> calloc() has already initialized memory w/ zero, it doesn't need to reinitialize
> it again?

Sorry, I was confused. :(


>
> > ASSERT(node_blk);
> > + memset(node_blk, 0, BLOCK_SZ);
> >
> > F2FS_NODE_FOOTER(node_blk)->nid = cpu_to_le32(dn->nid);
> > F2FS_NODE_FOOTER(node_blk)->ino = F2FS_NODE_FOOTER(f2fs_inode)->ino;
> > diff --git a/include/f2fs_fs.h b/include/f2fs_fs.h
> > index 3c7451c..7e22278 100644
> > --- a/include/f2fs_fs.h
> > +++ b/include/f2fs_fs.h
> > @@ -1826,6 +1826,8 @@ static inline void show_version(const char *prog)
> > static inline void f2fs_init_inode(struct f2fs_super_block *sb,
> > struct f2fs_node *raw_node, nid_t ino, time_t mtime, mode_t mode)
> > {
> > + memset(raw_node, 0, F2FS_BLKSIZE);
>
> Ditto,
>
> Thanks,
>
> > +
> > F2FS_NODE_FOOTER(raw_node)->nid = cpu_to_le32(ino);
> > F2FS_NODE_FOOTER(raw_node)->ino = cpu_to_le32(ino);
> > F2FS_NODE_FOOTER(raw_node)->cp_ver = cpu_to_le64(1);