2013-07-19 08:22:17

by Gu Zheng

[permalink] [raw]
Subject: [PATCH] f2fs: add the missing delection of orphan inode entry in write_orphan_inodes()

After writing orphan inode entry in jornal block, we need to delete each
entry from the orphan entry list, and release them.


Signed-off-by: Gu Zheng <[email protected]>
---
fs/f2fs/checkpoint.c | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/fs/f2fs/checkpoint.c b/fs/f2fs/checkpoint.c
index 66a6b85..290db04 100644
--- a/fs/f2fs/checkpoint.c
+++ b/fs/f2fs/checkpoint.c
@@ -337,6 +337,10 @@ static void write_orphan_inodes(struct f2fs_sb_info *sbi, block_t start_blk)
memset(orphan_blk, 0, sizeof(*orphan_blk));
page_exist:
orphan_blk->ino[nentries++] = cpu_to_le32(orphan->ino);
+
+ list_del(&orphan->list);
+ kmem_cache_free(orphan_entry_slab, orphan);
+ sbi->n_orphans--;
}
if (!page)
goto end;
--
1.7.7


2013-07-22 12:51:36

by Jaegeuk Kim

[permalink] [raw]
Subject: Re: [PATCH] f2fs: add the missing delection of orphan inode entry in write_orphan_inodes()

Hi,

2013-07-19 (금), 16:18 +0800, Gu Zheng:
> After writing orphan inode entry in jornal block, we need to delete each
> entry from the orphan entry list, and release them.
>
>
> Signed-off-by: Gu Zheng <[email protected]>
> ---
> fs/f2fs/checkpoint.c | 4 ++++
> 1 files changed, 4 insertions(+), 0 deletions(-)
>
> diff --git a/fs/f2fs/checkpoint.c b/fs/f2fs/checkpoint.c
> index 66a6b85..290db04 100644
> --- a/fs/f2fs/checkpoint.c
> +++ b/fs/f2fs/checkpoint.c
> @@ -337,6 +337,10 @@ static void write_orphan_inodes(struct f2fs_sb_info *sbi, block_t start_blk)
> memset(orphan_blk, 0, sizeof(*orphan_blk));
> page_exist:
> orphan_blk->ino[nentries++] = cpu_to_le32(orphan->ino);
> +
> + list_del(&orphan->list);
> + kmem_cache_free(orphan_entry_slab, orphan);
> + sbi->n_orphans--;

NAK.
We should not release them here.
Only f2fs_evict_inode can do it.

> }
> if (!page)
> goto end;

--
Jaegeuk Kim
Samsung

2013-07-23 01:27:46

by Gu Zheng

[permalink] [raw]
Subject: Re: [PATCH] f2fs: add the missing delection of orphan inode entry in write_orphan_inodes()

On 07/22/2013 08:51 PM, Jaegeuk Kim wrote:

> Hi,
>
> 2013-07-19 (금), 16:18 +0800, Gu Zheng:
>> After writing orphan inode entry in jornal block, we need to delete each
>> entry from the orphan entry list, and release them.
>>
>>
>> Signed-off-by: Gu Zheng <[email protected]>
>> ---
>> fs/f2fs/checkpoint.c | 4 ++++
>> 1 files changed, 4 insertions(+), 0 deletions(-)
>>
>> diff --git a/fs/f2fs/checkpoint.c b/fs/f2fs/checkpoint.c
>> index 66a6b85..290db04 100644
>> --- a/fs/f2fs/checkpoint.c
>> +++ b/fs/f2fs/checkpoint.c
>> @@ -337,6 +337,10 @@ static void write_orphan_inodes(struct f2fs_sb_info *sbi, block_t start_blk)
>> memset(orphan_blk, 0, sizeof(*orphan_blk));
>> page_exist:
>> orphan_blk->ino[nentries++] = cpu_to_le32(orphan->ino);
>> +
>> + list_del(&orphan->list);
>> + kmem_cache_free(orphan_entry_slab, orphan);
>> + sbi->n_orphans--;
>
> NAK.
> We should not release them here.
> Only f2fs_evict_inode can do it.

Yeah, f2fs_evict_inode can do this job safely, sorry for my mistake,
please ignore this patch.:)

Regards,
Gu

>
>> }
>> if (!page)
>> goto end;
>