We don't have to allocate io_end when doing writeback from ext4_writepages() without doing allocation. Remove the unnecessary allocation. Also do_map argument is now unnecessary since we have io_end allocated only if we want blocks to be allocated so remove it. Signed-off-by: Jan Kara <jack@xxxxxxx> --- fs/ext4/inode.c | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index 6bce4520d569..83cddd9d7fb2 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -1643,7 +1643,6 @@ struct mpage_da_data { */ struct ext4_map_blocks map; struct ext4_io_submit io_submit; /* IO submission data */ - unsigned int do_map:1; }; static void mpage_release_unused_pages(struct mpage_da_data *mpd, @@ -2173,7 +2172,7 @@ static bool mpage_add_bh_to_extent(struct mpage_da_data *mpd, ext4_lblk_t lblk, /* First block in the extent? */ if (map->m_len == 0) { /* We cannot map unless handle is started... */ - if (!mpd->do_map) + if (!mpd->io_submit.io_end) return false; map->m_lblk = lblk; map->m_len = 1; @@ -2228,7 +2227,7 @@ static int mpage_process_page_bufs(struct mpage_da_data *mpd, if (mpd->map.m_len) return 0; /* Buffer needs mapping and handle is not started? */ - if (!mpd->do_map) + if (!mpd->io_submit.io_end) return 0; /* Everything mapped so far and we hit EOF */ break; @@ -2753,17 +2752,9 @@ static int ext4_writepages(struct address_space *mapping, * in the block layer on device congestion while having transaction * started. */ - mpd.do_map = 0; - mpd.io_submit.io_end = ext4_init_io_end(inode, GFP_KERNEL); - if (!mpd.io_submit.io_end) { - ret = -ENOMEM; - goto unplug; - } ret = mpage_prepare_extent_to_map(&mpd); /* Submit prepared bio */ ext4_io_submit(&mpd.io_submit); - ext4_put_io_end_defer(mpd.io_submit.io_end); - mpd.io_submit.io_end = NULL; /* Unlock pages we didn't use */ mpage_release_unused_pages(&mpd, false); if (ret < 0) @@ -2800,7 +2791,6 @@ static int ext4_writepages(struct address_space *mapping, mpd.io_submit.io_end = NULL; break; } - mpd.do_map = 1; trace_ext4_da_write_pages(inode, mpd.first_page, mpd.wbc); ret = mpage_prepare_extent_to_map(&mpd); @@ -2831,7 +2821,6 @@ static int ext4_writepages(struct address_space *mapping, if (!ext4_handle_valid(handle) || handle->h_sync == 0) { ext4_journal_stop(handle); handle = NULL; - mpd.do_map = 0; } /* Submit prepared bio */ ext4_io_submit(&mpd.io_submit); -- 2.12.0