This fixes the block allocation direction from left to right inside
one segment despite of the direction of segment allocation.

Signed-off-by: Junling Zheng <zhengjunl...@huawei.com>
---
 fsck/mount.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/fsck/mount.c b/fsck/mount.c
index 1396a2e..38d2aa2 100644
--- a/fsck/mount.c
+++ b/fsck/mount.c
@@ -1921,13 +1921,13 @@ int find_next_free_block(struct f2fs_sb_info *sbi, u64 
*to, int left, int type)
 
                if (se->valid_blocks == sbi->blocks_per_seg ||
                                IS_CUR_SEGNO(sbi, segno, type)) {
-                       *to = left ? START_BLOCK(sbi, segno) - 1:
+                       *to = left ? START_BLOCK(sbi, segno - 1) :
                                                START_BLOCK(sbi, segno + 1);
                        continue;
                }
 
                if (se->valid_blocks == 0 && not_enough) {
-                       *to = left ? START_BLOCK(sbi, segno) - 1:
+                       *to = left ? START_BLOCK(sbi, segno - 1) :
                                                START_BLOCK(sbi, segno + 1);
                        continue;
                }
@@ -1949,7 +1949,10 @@ int find_next_free_block(struct f2fs_sb_info *sbi, u64 
*to, int left, int type)
                        !f2fs_test_bit(offset, (const char *)se->cur_valid_map))
                        return 0;
 
-               *to = left ? *to - 1: *to + 1;
+               if (!(OFFSET_IN_SEG(sbi, *to + 1)) && left)
+                       *to = START_BLOCK(sbi, segno - 1);
+               else
+                       *to = *to + 1;
        }
        return -1;
 }
-- 
2.16.2


------------------------------------------------------------------------------
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
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to