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
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
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;
>