|
@@ -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))
|