Commit ac7805be authored by Chao Yu's avatar Chao Yu Committed by Jaegeuk Kim

f2fs: introduce map_is_mergeable() for cleanup

No logic changes.
Signed-off-by: default avatarChao Yu <chao@kernel.org>
Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
parent 92c556ed
......@@ -1507,6 +1507,22 @@ static bool f2fs_map_blocks_cached(struct inode *inode,
return true;
}
static bool map_is_mergeable(struct f2fs_sb_info *sbi,
struct f2fs_map_blocks *map,
block_t blkaddr, int flag, int bidx,
int ofs)
{
if (map->m_multidev_dio && map->m_bdev != FDEV(bidx).bdev)
return false;
if (map->m_pblk != NEW_ADDR && blkaddr == (map->m_pblk + ofs))
return true;
if (map->m_pblk == NEW_ADDR && blkaddr == NEW_ADDR)
return true;
if (flag == F2FS_GET_BLOCK_PRE_DIO)
return true;
return false;
}
/*
* f2fs_map_blocks() tries to find or build mapping relationship which
* maps continuous logical blocks to physical blocks, and return such
......@@ -1653,12 +1669,7 @@ int f2fs_map_blocks(struct inode *inode, struct f2fs_map_blocks *map, int flag)
if (map->m_multidev_dio)
map->m_bdev = FDEV(bidx).bdev;
} else if ((map->m_pblk != NEW_ADDR &&
blkaddr == (map->m_pblk + ofs)) ||
(map->m_pblk == NEW_ADDR && blkaddr == NEW_ADDR) ||
flag == F2FS_GET_BLOCK_PRE_DIO) {
if (map->m_multidev_dio && map->m_bdev != FDEV(bidx).bdev)
goto sync_out;
} else if (map_is_mergeable(sbi, map, blkaddr, flag, bidx, ofs)) {
ofs++;
map->m_len++;
} else {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment