aboutsummaryrefslogtreecommitdiff
path: root/fs/f2fs/node.h
diff options
context:
space:
mode:
authorFan Li <fanofcode.li@samsung.com>2017-03-08 13:39:16 +0800
committerMoyster <oysterized@gmail.com>2017-05-21 18:38:09 +0200
commit59221c5cd13dd9f3d3a263d59f479b4e45334454 (patch)
tree53dd1a038f3d5c7a9cb3d94103b2a5993dc5e853 /fs/f2fs/node.h
parentbb0acf1c4c729f0460da78eef15d25cd0cf00253 (diff)
f2fs: adjust the way of calculating nat block
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>
Diffstat (limited to 'fs/f2fs/node.h')
-rw-r--r--fs/f2fs/node.h9
1 files changed, 6 insertions, 3 deletions
diff --git a/fs/f2fs/node.h b/fs/f2fs/node.h
index 2f9603fa8..ebed0240a 100644
--- a/fs/f2fs/node.h
+++ b/fs/f2fs/node.h
@@ -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))