Skip to contentSkip to conversation

f2fs: add the missing delection of orphan inode entry in write_orphan_inodes()

PATCH NAK Gu Zheng 2 participants 3 messages Jul 19, 2013 – Jul 23, 2013 F2FS file system

lore
Share & tools
lore

Gu Zheng

author
#0 lore raw

PATCH 1/1 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.

---
 fs/f2fs/checkpoint.c |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)
fs/f2fs/checkpoint.c +4 -0
index 66a6b85..290db04 100644
@@ -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;
Signature · 1 line
1.7.7
#1 lore raw

Hi,

2013-07-19 (금), 16:18 +0800, Gu Zheng:

Quoted 14 lines

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

---
 fs/f2fs/checkpoint.c |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)
fs/f2fs/checkpoint.c +0 -0
index 66a6b85..290db04 100644

fs/f2fs/checkpoint.c static void write_orphan_inodes(struct f2fs_sb_info *sbi, block_t start_blk) · line 343

Quoted 7 lines
fs/f2fs/checkpoint.c +4 -0
@@ -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.

Quoted 3 lines
fs/f2fs/checkpoint.c +0 -0
 	}
 	if (!page)
 		goto end;
Signature · 2 lines
Jaegeuk Kim
Samsung
author
#2 lore raw
Quoted 12 lines · Jaegeuk Kim

Hi,

2013-07-19 (금), 16:18 +0800, Gu Zheng:

Quoted 9 lines

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

---
 fs/f2fs/checkpoint.c |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)
Quoted 16 lines

fs/f2fs/checkpoint.c static void write_orphan_inodes(struct f2fs_sb_info *sbi, block_t start_blk) · line 343

Quoted 12 lines
fs/f2fs/checkpoint.c +4 -0
index 66a6b85..290db04 100644
@@ -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

Quoted 5 lines
Quoted 4 lines
fs/f2fs/checkpoint.c +0 -0
 	}
 	if (!page)
 		goto end;