There isn't any need for setting BH_Uninit on buffers anymore. It was only used to signal we need to mark io_end as needing extent conversion in add_bh_to_extent() but now we can mark the io_end directly when mapping extent. Signed-off-by: Jan Kara <jack@xxxxxxx> --- fs/ext4/ext4.h | 15 ++++++--------- fs/ext4/inode.c | 4 ++-- fs/ext4/page-io.c | 2 -- 3 files changed, 8 insertions(+), 13 deletions(-) diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h index cb1ba1c..3c3827a 100644 --- a/fs/ext4/ext4.h +++ b/fs/ext4/ext4.h @@ -2606,20 +2606,17 @@ extern void ext4_mmp_csum_set(struct super_block *sb, struct mmp_struct *mmp); extern int ext4_mmp_csum_verify(struct super_block *sb, struct mmp_struct *mmp); -/* BH_Uninit flag: blocks are allocated but uninitialized on disk */ +/* + * Note that these flags will never ever appear in a buffer_head's state flag. + * See EXT4_MAP_... to see where this is used. + */ enum ext4_state_bits { BH_Uninit /* blocks are allocated but uninitialized on disk */ - = BH_JBDPrivateStart, + = BH_JBDPrivateStart, BH_AllocFromCluster, /* allocated blocks were part of already - * allocated cluster. Note that this flag will - * never, ever appear in a buffer_head's state - * flag. See EXT4_MAP_FROM_CLUSTER to see where - * this is used. */ + * allocated cluster. */ }; -BUFFER_FNS(Uninit, uninit) -TAS_BUFFER_FNS(Uninit, uninit) - /* * Add new method to test whether block and inode bitmaps are properly * initialized. With uninit_bg reading the block from disk is not enough diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index 5c191a3..0602a09 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -1924,8 +1924,6 @@ static int mpage_map_and_submit_buffers(struct mpage_da_data *mpd) clear_buffer_delay(bh); bh->b_blocknr = pblock++; } - if (mpd->map.m_flags & EXT4_MAP_UNINIT) - set_buffer_uninit(bh); clear_buffer_unwritten(bh); } while (lblk++, (bh = bh->b_this_page) != head); @@ -1975,6 +1973,8 @@ static int mpage_map_one_extent(handle_t *handle, struct mpage_da_data *mpd) err = ext4_map_blocks(handle, inode, map, get_blocks_flags); if (err < 0) return err; + if (map->m_flags & EXT4_MAP_UNINIT) + ext4_set_io_unwritten_flag(inode, mpd->io_submit.io_end); BUG_ON(map->m_len == 0); if (map->m_flags & EXT4_MAP_NEW) { diff --git a/fs/ext4/page-io.c b/fs/ext4/page-io.c index efdf0a5..cc59cd9 100644 --- a/fs/ext4/page-io.c +++ b/fs/ext4/page-io.c @@ -377,8 +377,6 @@ submit_and_retry: if (ret != bh->b_size) goto submit_and_retry; io_end = io->io_end; - if (test_clear_buffer_uninit(bh)) - ext4_set_io_unwritten_flag(inode, io_end); io_end->size += bh->b_size; io->io_next_block++; return 0; -- 1.7.1 -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html