f2fs: adjust the way of calculating nat block
authorFan Li <fanofcode.li@samsung.com>
Wed, 8 Mar 2017 05:39:16 +0000 (13:39 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Wed, 22 Mar 2017 02:34:27 +0000 (22:34 -0400)
use a slightly simpler expression to calculate nat block with nid.

Signed-off-by: Fan Li <fanofcode.li@samsung.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/node.h

index 2f9603f..ebed024 100644 (file)
@@ -200,13 +200,16 @@ static inline pgoff_t current_nat_addr(struct f2fs_sb_info *sbi, nid_t start)
        struct f2fs_nm_info *nm_i = NM_I(sbi);
        pgoff_t block_off;
        pgoff_t block_addr;
-       int seg_off;
 
+       /*
+        * block_off = segment_off * 512 + off_in_segment
+        * OLD = (segment_off * 512) * 2 + off_in_segment
+        * NEW = 2 * (segment_off * 512 + off_in_segment) - off_in_segment
+        */
        block_off = NAT_BLOCK_OFFSET(start);
-       seg_off = block_off >> sbi->log_blocks_per_seg;
 
        block_addr = (pgoff_t)(nm_i->nat_blkaddr +
-               (seg_off << sbi->log_blocks_per_seg << 1) +
+               (block_off << 1) -
                (block_off & (sbi->blocks_per_seg - 1)));
 
        if (f2fs_test_bit(block_off, nm_i->nat_bitmap))