]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - fs/f2fs/segment.h
f2fs: make an accessor to get sections for particular block type
[karo-tx-linux.git] / fs / f2fs / segment.h
index 0948405af6f5f88ef1e71a2904231677e37bfa69..a9417b94d6bc3a52ff4870b8998211f009cf32ac 100644 (file)
@@ -459,7 +459,15 @@ static inline int get_ssr_segment(struct f2fs_sb_info *sbi, int type)
 
 static inline bool has_not_enough_free_secs(struct f2fs_sb_info *sbi)
 {
-       return free_sections(sbi) <= reserved_sections(sbi);
+       int node_secs = get_blocktype_secs(sbi, F2FS_DIRTY_NODES);
+       int dent_secs = get_blocktype_secs(sbi, F2FS_DIRTY_DENTS);
+       if (sbi->por_doing)
+               return false;
+
+       if (free_sections(sbi) <= (node_secs + 2 * dent_secs +
+                                               reserved_sections(sbi)))
+               return true;
+       return false;
 }
 
 static inline int utilization(struct f2fs_sb_info *sbi)