aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Kara <jack@suse.cz>2016-11-04 13:08:13 -0400
committerJens Axboe <axboe@fb.com>2016-11-04 16:34:47 -0400
commit64e1c57fa4740ac0728afe173e5a025b0e94cd55 (patch)
tree032bb2137953ad971f36ddd9e848a1f2ab16f54d
parentf734c89cc96e9b6f903865cd2656d9d8a7e160e7 (diff)
ext4: Use clean_bdev_aliases() instead of iteration
Use clean_bdev_aliases() instead of iterating through blocks one by one. Signed-off-by: Jan Kara <jack@suse.cz> Signed-off-by: Jens Axboe <axboe@fb.com>
-rw-r--r--fs/ext4/extents.c13
-rw-r--r--fs/ext4/inode.c15
2 files changed, 6 insertions, 22 deletions
diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c
index c930a0110fb4..dd5b74dfa018 100644
--- a/fs/ext4/extents.c
+++ b/fs/ext4/extents.c
@@ -3777,14 +3777,6 @@ out:
3777 return err; 3777 return err;
3778} 3778}
3779 3779
3780static void unmap_underlying_metadata_blocks(struct block_device *bdev,
3781 sector_t block, int count)
3782{
3783 int i;
3784 for (i = 0; i < count; i++)
3785 unmap_underlying_metadata(bdev, block + i);
3786}
3787
3788/* 3780/*
3789 * Handle EOFBLOCKS_FL flag, clearing it if necessary 3781 * Handle EOFBLOCKS_FL flag, clearing it if necessary
3790 */ 3782 */
@@ -4121,9 +4113,8 @@ out:
4121 * new. 4113 * new.
4122 */ 4114 */
4123 if (allocated > map->m_len) { 4115 if (allocated > map->m_len) {
4124 unmap_underlying_metadata_blocks(inode->i_sb->s_bdev, 4116 clean_bdev_aliases(inode->i_sb->s_bdev, newblock + map->m_len,
4125 newblock + map->m_len, 4117 allocated - map->m_len);
4126 allocated - map->m_len);
4127 allocated = map->m_len; 4118 allocated = map->m_len;
4128 } 4119 }
4129 map->m_len = allocated; 4120 map->m_len = allocated;
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
index 9c064727ed62..7c7cc4ae4b8e 100644
--- a/fs/ext4/inode.c
+++ b/fs/ext4/inode.c
@@ -654,12 +654,8 @@ found:
654 if (flags & EXT4_GET_BLOCKS_ZERO && 654 if (flags & EXT4_GET_BLOCKS_ZERO &&
655 map->m_flags & EXT4_MAP_MAPPED && 655 map->m_flags & EXT4_MAP_MAPPED &&
656 map->m_flags & EXT4_MAP_NEW) { 656 map->m_flags & EXT4_MAP_NEW) {
657 ext4_lblk_t i; 657 clean_bdev_aliases(inode->i_sb->s_bdev, map->m_pblk,
658 658 map->m_len);
659 for (i = 0; i < map->m_len; i++) {
660 unmap_underlying_metadata(inode->i_sb->s_bdev,
661 map->m_pblk + i);
662 }
663 ret = ext4_issue_zeroout(inode, map->m_lblk, 659 ret = ext4_issue_zeroout(inode, map->m_lblk,
664 map->m_pblk, map->m_len); 660 map->m_pblk, map->m_len);
665 if (ret) { 661 if (ret) {
@@ -2360,11 +2356,8 @@ static int mpage_map_one_extent(handle_t *handle, struct mpage_da_data *mpd)
2360 2356
2361 BUG_ON(map->m_len == 0); 2357 BUG_ON(map->m_len == 0);
2362 if (map->m_flags & EXT4_MAP_NEW) { 2358 if (map->m_flags & EXT4_MAP_NEW) {
2363 struct block_device *bdev = inode->i_sb->s_bdev; 2359 clean_bdev_aliases(inode->i_sb->s_bdev, map->m_pblk,
2364 int i; 2360 map->m_len);
2365
2366 for (i = 0; i < map->m_len; i++)
2367 unmap_underlying_metadata(bdev, map->m_pblk + i);
2368 } 2361 }
2369 return 0; 2362 return 0;
2370} 2363}