f2fs: move grabing orphan pages out of protection region
Subsystems (2)
PATCH 1/3 f2fs: move grabing orphan pages out of protection region
Move grabing orphan block page out of protection region, and grab all the orphan block pages ahead.
--- fs/f2fs/checkpoint.c | 15 +++++++++------ 1 files changed, 9 insertions(+), 6 deletions(-)
fs/f2fs/checkpoint.c +9 -6
@@ -303,22 +303,25 @@ static void write_orphan_inodes(struct f2fs_sb_info *sbi, block_t start_blk) {struct list_head *head;struct f2fs_orphan_block *orphan_blk =NULL ; -struct page *page =NULL ;unsigned int nentries =0 ; -unsigned short index =1 ; -unsigned short orphan_blocks; +unsigned short index; +unsigned short orphan_blocks = (unsigned short )((sbi->n_orphans + + (F2FS_ORPHANS_PER_BLOCK -1 )) /F2FS_ORPHANS_PER_BLOCK ); +struct page *page =NULL ; +struct page *pages[orphan_blocks];struct orphan_inode_entry *orphan =NULL ; - orphan_blocks = (unsigned short )((sbi->n_orphans + - (F2FS_ORPHANS_PER_BLOCK -1 )) /F2FS_ORPHANS_PER_BLOCK ); +for (index =0 ; index < orphan_blocks; index++) + pages[index] =grab_meta_page (sbi, start_blk + index); + index =1 ;mutex_lock (&sbi->orphan_inode_mutex); head = &sbi->orphan_inode_list;/* loop for each orphan inode entry and write them in Jornal block */ list_for_each_entry (orphan, head, list) {if (!page) { - page =grab_meta_page (sbi, start_blk); + page = pages[index -1 ]; orphan_blk = (struct f2fs_orphan_block *)page_address (page);memset (orphan_blk,0 ,sizeof (*orphan_blk));
Signature · 9 lines
1.7.7 ------------------------------------------------------------------------------ CenturyLink Cloud: The Leader in Enterprise Cloud Services. Learn Why More Businesses Are Choosing CenturyLink Cloud For Critical Workloads, Development Environments & Everything In Between. Get a Quote or Start a Free Trial Today. http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk
Hi Gu,
Quoted 11 lines
-----Original Message-----
From: Gu Zheng [mailto:[email protected]]
Sent: Friday, January 10, 2014 6:09 PM
To: Kim
Cc: fsdevel; linux-kernel; f2fs
Subject: [f2fs-dev] [PATCH 1/3] f2fs: move grabing orphan pages out of protection regionMove grabing orphan block page out of protection region, and grab all the orphan block pages ahead.
Signed-off-by Gu Zheng <[email protected]>
Quoted 40 lines
--- fs/f2fs/checkpoint.c | 15 +++++++++------ 1 files changed, 9 insertions(+), 6 deletions(-)fs/f2fs/checkpoint.c +9
-6@@ -303,22 +303,25 @@ static void write_orphan_inodes(struct f2fs_sb_info *sbi, block_t start_blk) {struct list_head *head;struct f2fs_orphan_block *orphan_blk =NULL ; -struct page *page =NULL ;unsigned int nentries =0 ; -unsigned short index =1 ; -unsigned short orphan_blocks; +unsigned short index; +unsigned short orphan_blocks = (unsigned short )((sbi->n_orphans + + (F2FS_ORPHANS_PER_BLOCK -1 )) /F2FS_ORPHANS_PER_BLOCK ); +struct page *page =NULL ; +struct page *pages[orphan_blocks];struct orphan_inode_entry *orphan =NULL ; - orphan_blocks = (unsigned short )((sbi->n_orphans + - (F2FS_ORPHANS_PER_BLOCK -1 )) /F2FS_ORPHANS_PER_BLOCK ); +for (index =0 ; index < orphan_blocks; index++) + pages[index] =grab_meta_page (sbi, start_blk + index); + index =1 ;mutex_lock (&sbi->orphan_inode_mutex); head = &sbi->orphan_inode_list;/* loop for each orphan inode entry and write them in Jornal block */ list_for_each_entry (orphan, head, list) {if (!page) { - page =grab_meta_page (sbi, start_blk); + page = pages[index -1 ]; orphan_blk = (struct f2fs_orphan_block *)page_address (page);
Quoted 1 line
memset(orphan_blk, 0, sizeof(*orphan_blk));
It seems that we could remove the following code in write_orphan_inodes.
start_blk++;
Quoted 4 lines
--
1.7.7
Quoted 10 lines
------------------------------------------------------------------------------
CenturyLink Cloud: The Leader in Enterprise Cloud Services. Learn Why More Businesses Are Choosing CenturyLink Cloud For Critical Workloads, Development Environments & Everything In Between. Get a Quote or Start a Free Trial Today.
http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk
_______________________________________________
Linux-f2fs-devel mailing list [email protected]
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
------------------------------------------------------------------------------
CenturyLink Cloud: The Leader in Enterprise Cloud Services. Learn Why More Businesses Are Choosing CenturyLink Cloud For Critical Workloads, Development Environments & Everything In Between. Get a Quote or Start a Free Trial Today.
http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk
Hi Yu,
Quoted 59 lines · Chao Yu
Hi Gu,
Quoted 11 lines
-----Original Message-----
From: Gu Zheng [mailto:[email protected]]
Sent: Friday, January 10, 2014 6:09 PM
To: Kim
Cc: fsdevel; linux-kernel; f2fs
Subject: [f2fs-dev] [PATCH 1/3] f2fs: move grabing orphan pages out of protection regionMove grabing orphan block page out of protection region, and grab all the orphan block pages ahead.
Signed-off-by Gu Zheng <[email protected]>Reviewed-by Chao Yu <[email protected]>Quoted 40 lines
--- fs/f2fs/checkpoint.c | 15 +++++++++------ 1 files changed, 9 insertions(+), 6 deletions(-)fs/f2fs/checkpoint.c +9
-6@@ -303,22 +303,25 @@ static void write_orphan_inodes(struct f2fs_sb_info *sbi, block_t start_blk) {struct list_head *head;struct f2fs_orphan_block *orphan_blk =NULL ; -struct page *page =NULL ;unsigned int nentries =0 ; -unsigned short index =1 ; -unsigned short orphan_blocks; +unsigned short index; +unsigned short orphan_blocks = (unsigned short )((sbi->n_orphans + + (F2FS_ORPHANS_PER_BLOCK -1 )) /F2FS_ORPHANS_PER_BLOCK ); +struct page *page =NULL ; +struct page *pages[orphan_blocks];struct orphan_inode_entry *orphan =NULL ; - orphan_blocks = (unsigned short )((sbi->n_orphans + - (F2FS_ORPHANS_PER_BLOCK -1 )) /F2FS_ORPHANS_PER_BLOCK ); +for (index =0 ; index < orphan_blocks; index++) + pages[index] =grab_meta_page (sbi, start_blk + index); + index =1 ;mutex_lock (&sbi->orphan_inode_mutex); head = &sbi->orphan_inode_list;/* loop for each orphan inode entry and write them in Jornal block */ list_for_each_entry (orphan, head, list) {if (!page) { - page =grab_meta_page (sbi, start_blk); + page = pages[index -1 ]; orphan_blk = (struct f2fs_orphan_block *)page_address (page);Quoted 1 line
memset(orphan_blk, 0, sizeof(*orphan_blk));It seems that we could remove the following code in
write_orphan_inodes.
Quoted 1 line
start_blk++;
Yes, you're right, thanks for your review.
Regards,
Gu
Quoted 5 lines
Quoted 5 lines
--
1.7.7
Quoted 12 lines
Quoted 10 lines
------------------------------------------------------------------------------
CenturyLink Cloud: The Leader in Enterprise Cloud Services. Learn Why More Businesses Are Choosing CenturyLink Cloud For Critical Workloads, Development Environments & Everything In Between. Get a Quote or Start a Free Trial Today.
http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk
_______________________________________________
Linux-f2fs-devel mailing list [email protected]
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
------------------------------------------------------------------------------
CenturyLink Cloud: The Leader in Enterprise Cloud Services. Learn Why More Businesses Are Choosing CenturyLink Cloud For Critical Workloads, Development Environments & Everything In Between. Get a Quote or Start a Free Trial Today.
http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk
PATCH v2 1/3 f2fs: move grabbing orphan pages out of protection region
In reply to Gu ZhengMove grabbing orphan block page out of protection region, and grab all the orphan block pages ahead.
v2:
Remove the redundant code as Chao Yu suggested.
--- fs/f2fs/checkpoint.c | 16 +++++++++------- 1 files changed, 9 insertions(+), 7 deletions(-)
fs/f2fs/checkpoint.c +9 -7
@@ -303,22 +303,25 @@ static void write_orphan_inodes(struct f2fs_sb_info *sbi, block_t start_blk) {struct list_head *head;struct f2fs_orphan_block *orphan_blk =NULL ; -struct page *page =NULL ;unsigned int nentries =0 ; -unsigned short index =1 ; -unsigned short orphan_blocks; +unsigned short index; +unsigned short orphan_blocks = (unsigned short )((sbi->n_orphans + + (F2FS_ORPHANS_PER_BLOCK -1 )) /F2FS_ORPHANS_PER_BLOCK ); +struct page *page =NULL ; +struct page *pages[orphan_blocks];struct orphan_inode_entry *orphan =NULL ; - orphan_blocks = (unsigned short )((sbi->n_orphans + - (F2FS_ORPHANS_PER_BLOCK -1 )) /F2FS_ORPHANS_PER_BLOCK ); +for (index =0 ; index < orphan_blocks; index++) + pages[index] =grab_meta_page (sbi, start_blk + index); + index =1 ;mutex_lock (&sbi->orphan_inode_mutex); head = &sbi->orphan_inode_list;/* loop for each orphan inode entry and write them in Jornal block */ list_for_each_entry (orphan, head, list) {if (!page) { - page =grab_meta_page (sbi, start_blk); + page = pages[index -1 ]; orphan_blk = (struct f2fs_orphan_block *)page_address (page);memset (orphan_blk,0 ,sizeof (*orphan_blk));
@@ -338,7 +341,6 @@ static void write_orphan_inodes(struct f2fs_sb_info *sbi, block_t start_blk)set_page_dirty (page);f2fs_put_page (page,1 ); index++; - start_blk++; nentries =0 ; page =NULL ; }
Signature · 1 line
1.7.7