Ping

Thanks

>-----Original Message-----
>From: heyunlei
>Sent: Wednesday, April 25, 2018 3:57 PM
>To: [email protected]; Yuchao (T); [email protected]
>Cc: Wangbintian; heyunlei; Zhangdianfang (Euler)
>Subject: [f2fs-dev][PATCH] f2fs: allow ssa journal with nat bits enabled
>
>This patch enable ssa journal with nat bits, which is
>benifit for nat metadata write.
>
>Signed-off-by: Yunlei He <[email protected]>
>---
> fs/f2fs/node.c | 16 ++++++++++------
> 1 file changed, 10 insertions(+), 6 deletions(-)
>
>diff --git a/fs/f2fs/node.c b/fs/f2fs/node.c
>index 681552b..220110a 100644
>--- a/fs/f2fs/node.c
>+++ b/fs/f2fs/node.c
>@@ -2446,7 +2446,7 @@ static void __adjust_nat_entry_set(struct nat_entry_set 
>*nes,
> }
>
> static void __update_nat_bits(struct f2fs_sb_info *sbi, nid_t start_nid,
>-                                              struct page *page)
>+                                      struct page *page, bool to_journal)
> {
>       struct f2fs_nm_info *nm_i = NM_I(sbi);
>       unsigned int nat_index = start_nid / NAT_ENTRY_PER_BLOCK;
>@@ -2457,6 +2457,12 @@ static void __update_nat_bits(struct f2fs_sb_info *sbi, 
>nid_t start_nid,
>       if (!enabled_nat_bits(sbi, NULL))
>               return;
>
>+      if (to_journal) {
>+              __clear_bit_le(nat_index, nm_i->full_nat_bits);
>+              __clear_bit_le(nat_index, nm_i->empty_nat_bits);
>+              return;
>+      }
>+
>       if (nat_index == 0) {
>               valid = 1;
>               i = 1;
>@@ -2494,8 +2500,7 @@ static void __flush_nat_entry_set(struct f2fs_sb_info 
>*sbi,
>        * #1, flush nat entries to journal in current hot data summary block.
>        * #2, flush nat entries to nat page.
>        */
>-      if (enabled_nat_bits(sbi, cpc) ||
>-              !__has_cursum_space(journal, set->entry_cnt, NAT_JOURNAL))
>+      if (!__has_cursum_space(journal, set->entry_cnt, NAT_JOURNAL))
>               to_journal = false;
>
>       if (to_journal) {
>@@ -2535,11 +2540,11 @@ static void __flush_nat_entry_set(struct f2fs_sb_info 
>*sbi,
>               }
>       }
>
>+      __update_nat_bits(sbi, start_nid, page, to_journal);
>       if (to_journal) {
>               up_write(&curseg->journal_rwsem);
>       } else {
>               scan_nat_page(sbi, page, start_nid, false);
>-              __update_nat_bits(sbi, start_nid, page);
>               f2fs_put_page(page, 1);
>       }
>
>@@ -2574,8 +2579,7 @@ void flush_nat_entries(struct f2fs_sb_info *sbi, struct 
>cp_control *cpc)
>        * entries, remove all entries from journal and merge them
>        * into nat entry set.
>        */
>-      if (enabled_nat_bits(sbi, cpc) ||
>-              !__has_cursum_space(journal, nm_i->dirty_nat_cnt, NAT_JOURNAL))
>+      if (!__has_cursum_space(journal, nm_i->dirty_nat_cnt, NAT_JOURNAL))
>               remove_nats_in_journal(sbi);
>
>       while ((found = __gang_lookup_nat_set(nm_i,
>--
>1.9.1


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Linux-f2fs-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to