From: "zhangyi (F)" <[email protected]> Now, we have already handle all cases of forgetting buffer in jbd2_journal_forget(), the buffer should not be mapped to blockdevice when reallocating it. So this patch remove all clean_bdev_aliases() and clean_bdev_bh_alias() calls which were invoked by ext4 explicitly.
https://jira.sw.ru/browse/PSBM-96719 Suggested-by: Jan Kara <[email protected]> Signed-off-by: zhangyi (F) <[email protected]> Signed-off-by: Theodore Ts'o <[email protected]> Reviewed-by: Jan Kara <[email protected]> (cherry picked from commit 16e08b14a4550bb167c48e918b26ef0d4980e9d1) Signed-off-by: Pavel Tikhomirov <[email protected]> --- fs/ext4/extents.c | 21 +-------------------- fs/ext4/inode.c | 13 ------------- fs/ext4/page-io.c | 4 +--- 3 files changed, 2 insertions(+), 36 deletions(-) diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c index a7ae908d79d4..8cc3a45c121b 100644 --- a/fs/ext4/extents.c +++ b/fs/ext4/extents.c @@ -3824,14 +3824,6 @@ static int ext4_convert_unwritten_extents_endio(handle_t *handle, return err; } -static void unmap_underlying_metadata_blocks(struct block_device *bdev, - sector_t block, int count) -{ - int i; - for (i = 0; i < count; i++) - unmap_underlying_metadata(bdev, block + i); -} - /* * Handle EOFBLOCKS_FL flag, clearing it if necessary */ @@ -4127,19 +4119,8 @@ ext4_ext_handle_unwritten_extents(handle_t *handle, struct inode *inode, } else allocated = ret; map->m_flags |= EXT4_MAP_NEW; - /* - * if we allocated more blocks than requested - * we need to make sure we unmap the extra block - * allocated. The actual needed block will get - * unmapped later when we find the buffer_head marked - * new. - */ - if (allocated > map->m_len) { - unmap_underlying_metadata_blocks(inode->i_sb->s_bdev, - newblock + map->m_len, - allocated - map->m_len); + if (allocated > map->m_len) allocated = map->m_len; - } map->m_len = allocated; /* diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index e396b27726b8..4551c55370ad 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -652,12 +652,6 @@ int ext4_map_blocks(handle_t *handle, struct inode *inode, if (flags & EXT4_GET_BLOCKS_ZERO && map->m_flags & EXT4_MAP_MAPPED && map->m_flags & EXT4_MAP_NEW) { - ext4_lblk_t i; - - for (i = 0; i < map->m_len; i++) { - unmap_underlying_metadata(inode->i_sb->s_bdev, - map->m_pblk + i); - } ret = ext4_issue_zeroout(inode, map->m_lblk, map->m_pblk, map->m_len); if (ret) { @@ -2142,13 +2136,6 @@ static int mpage_map_one_extent(handle_t *handle, struct mpage_da_data *mpd) } BUG_ON(map->m_len == 0); - if (map->m_flags & EXT4_MAP_NEW) { - struct block_device *bdev = inode->i_sb->s_bdev; - int i; - - for (i = 0; i < map->m_len; i++) - unmap_underlying_metadata(bdev, map->m_pblk + i); - } return 0; } diff --git a/fs/ext4/page-io.c b/fs/ext4/page-io.c index 80da8695356e..2ed60c2ffd37 100644 --- a/fs/ext4/page-io.c +++ b/fs/ext4/page-io.c @@ -458,10 +458,8 @@ int ext4_bio_write_page(struct ext4_io_submit *io, ext4_io_submit(io); continue; } - if (buffer_new(bh)) { + if (buffer_new(bh)) clear_buffer_new(bh); - unmap_underlying_metadata(bh->b_bdev, bh->b_blocknr); - } set_buffer_async_write(bh); } while ((bh = bh->b_this_page) != head); -- 2.20.1 _______________________________________________ Devel mailing list [email protected] https://lists.openvz.org/mailman/listinfo/devel
