[Devel] [PATCH RH7 3/3] ext4: cleanup clean_bdev_aliases() calls
Pavel Tikhomirov
ptikhomirov at virtuozzo.com
Thu Aug 22 12:47:39 MSK 2019
From: "zhangyi (F)" <yi.zhang at huawei.com>
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 <jack at suse.cz>
Signed-off-by: zhangyi (F) <yi.zhang at huawei.com>
Signed-off-by: Theodore Ts'o <tytso at mit.edu>
Reviewed-by: Jan Kara <jack at suse.cz>
(cherry picked from commit 16e08b14a4550bb167c48e918b26ef0d4980e9d1)
Signed-off-by: Pavel Tikhomirov <ptikhomirov at virtuozzo.com>
---
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
More information about the Devel
mailing list