ext4: get rid of EXT4_MAP_UNINIT flag
Currently EXT4_MAP_UNINIT is used in dioread_nolock case to mark the cases where we're using dioread_nolock and we're writing into either unallocated, or unwritten extent, because we need to make sure that any DIO write into that inode will wait for the extent conversion. However EXT4_MAP_UNINIT is not only entirely misleading name but also unnecessary because we can check for EXT4_MAP_UNWRITTEN in the dioread_nolock case instead. This commit removes EXT4_MAP_UNINIT flag. Signed-off-by: Lukas Czerner <lczerner@redhat.com> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
This commit is contained in:
Родитель
9ac0367501
Коммит
090f32ee4e
|
@ -158,7 +158,6 @@ struct ext4_allocation_request {
|
||||||
#define EXT4_MAP_MAPPED (1 << BH_Mapped)
|
#define EXT4_MAP_MAPPED (1 << BH_Mapped)
|
||||||
#define EXT4_MAP_UNWRITTEN (1 << BH_Unwritten)
|
#define EXT4_MAP_UNWRITTEN (1 << BH_Unwritten)
|
||||||
#define EXT4_MAP_BOUNDARY (1 << BH_Boundary)
|
#define EXT4_MAP_BOUNDARY (1 << BH_Boundary)
|
||||||
#define EXT4_MAP_UNINIT (1 << BH_Uninit)
|
|
||||||
/* Sometimes (in the bigalloc case, from ext4_da_get_block_prep) the caller of
|
/* Sometimes (in the bigalloc case, from ext4_da_get_block_prep) the caller of
|
||||||
* ext4_map_blocks wants to know whether or not the underlying cluster has
|
* ext4_map_blocks wants to know whether or not the underlying cluster has
|
||||||
* already been accounted for. EXT4_MAP_FROM_CLUSTER conveys to the caller that
|
* already been accounted for. EXT4_MAP_FROM_CLUSTER conveys to the caller that
|
||||||
|
@ -169,7 +168,7 @@ struct ext4_allocation_request {
|
||||||
#define EXT4_MAP_FROM_CLUSTER (1 << BH_AllocFromCluster)
|
#define EXT4_MAP_FROM_CLUSTER (1 << BH_AllocFromCluster)
|
||||||
#define EXT4_MAP_FLAGS (EXT4_MAP_NEW | EXT4_MAP_MAPPED |\
|
#define EXT4_MAP_FLAGS (EXT4_MAP_NEW | EXT4_MAP_MAPPED |\
|
||||||
EXT4_MAP_UNWRITTEN | EXT4_MAP_BOUNDARY |\
|
EXT4_MAP_UNWRITTEN | EXT4_MAP_BOUNDARY |\
|
||||||
EXT4_MAP_UNINIT | EXT4_MAP_FROM_CLUSTER)
|
EXT4_MAP_FROM_CLUSTER)
|
||||||
|
|
||||||
struct ext4_map_blocks {
|
struct ext4_map_blocks {
|
||||||
ext4_fsblk_t m_pblk;
|
ext4_fsblk_t m_pblk;
|
||||||
|
@ -2784,10 +2783,9 @@ extern int ext4_mmp_csum_verify(struct super_block *sb,
|
||||||
* See EXT4_MAP_... to see where this is used.
|
* See EXT4_MAP_... to see where this is used.
|
||||||
*/
|
*/
|
||||||
enum ext4_state_bits {
|
enum ext4_state_bits {
|
||||||
BH_Uninit /* blocks are allocated but uninitialized on disk */
|
BH_AllocFromCluster /* allocated blocks were part of already
|
||||||
= BH_JBDPrivateStart,
|
|
||||||
BH_AllocFromCluster, /* allocated blocks were part of already
|
|
||||||
* allocated cluster. */
|
* allocated cluster. */
|
||||||
|
= BH_JBDPrivateStart
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -4033,8 +4033,6 @@ ext4_ext_handle_uninitialized_extents(handle_t *handle, struct inode *inode,
|
||||||
else
|
else
|
||||||
ext4_set_inode_state(inode, EXT4_STATE_DIO_UNWRITTEN);
|
ext4_set_inode_state(inode, EXT4_STATE_DIO_UNWRITTEN);
|
||||||
map->m_flags |= EXT4_MAP_UNWRITTEN;
|
map->m_flags |= EXT4_MAP_UNWRITTEN;
|
||||||
if (ext4_should_dioread_nolock(inode))
|
|
||||||
map->m_flags |= EXT4_MAP_UNINIT;
|
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
/* IO end_io complete, convert the filled extent to written */
|
/* IO end_io complete, convert the filled extent to written */
|
||||||
|
@ -4479,8 +4477,6 @@ got_allocated_blocks:
|
||||||
*/
|
*/
|
||||||
if ((flags & EXT4_GET_BLOCKS_PRE_IO))
|
if ((flags & EXT4_GET_BLOCKS_PRE_IO))
|
||||||
set_unwritten = 1;
|
set_unwritten = 1;
|
||||||
if (ext4_should_dioread_nolock(inode))
|
|
||||||
map->m_flags |= EXT4_MAP_UNINIT;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
err = 0;
|
err = 0;
|
||||||
|
|
|
@ -2126,7 +2126,7 @@ static int mpage_map_one_extent(handle_t *handle, struct mpage_da_data *mpd)
|
||||||
struct inode *inode = mpd->inode;
|
struct inode *inode = mpd->inode;
|
||||||
struct ext4_map_blocks *map = &mpd->map;
|
struct ext4_map_blocks *map = &mpd->map;
|
||||||
int get_blocks_flags;
|
int get_blocks_flags;
|
||||||
int err;
|
int err, dioread_nolock;
|
||||||
|
|
||||||
trace_ext4_da_write_pages_extent(inode, map);
|
trace_ext4_da_write_pages_extent(inode, map);
|
||||||
/*
|
/*
|
||||||
|
@ -2148,7 +2148,8 @@ static int mpage_map_one_extent(handle_t *handle, struct mpage_da_data *mpd)
|
||||||
*/
|
*/
|
||||||
get_blocks_flags = EXT4_GET_BLOCKS_CREATE |
|
get_blocks_flags = EXT4_GET_BLOCKS_CREATE |
|
||||||
EXT4_GET_BLOCKS_METADATA_NOFAIL;
|
EXT4_GET_BLOCKS_METADATA_NOFAIL;
|
||||||
if (ext4_should_dioread_nolock(inode))
|
dioread_nolock = ext4_should_dioread_nolock(inode);
|
||||||
|
if (dioread_nolock)
|
||||||
get_blocks_flags |= EXT4_GET_BLOCKS_IO_CREATE_EXT;
|
get_blocks_flags |= EXT4_GET_BLOCKS_IO_CREATE_EXT;
|
||||||
if (map->m_flags & (1 << BH_Delay))
|
if (map->m_flags & (1 << BH_Delay))
|
||||||
get_blocks_flags |= EXT4_GET_BLOCKS_DELALLOC_RESERVE;
|
get_blocks_flags |= EXT4_GET_BLOCKS_DELALLOC_RESERVE;
|
||||||
|
@ -2156,7 +2157,7 @@ static int mpage_map_one_extent(handle_t *handle, struct mpage_da_data *mpd)
|
||||||
err = ext4_map_blocks(handle, inode, map, get_blocks_flags);
|
err = ext4_map_blocks(handle, inode, map, get_blocks_flags);
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
return err;
|
return err;
|
||||||
if (map->m_flags & EXT4_MAP_UNINIT) {
|
if (dioread_nolock && (map->m_flags & EXT4_MAP_UNWRITTEN)) {
|
||||||
if (!mpd->io_submit.io_end->handle &&
|
if (!mpd->io_submit.io_end->handle &&
|
||||||
ext4_handle_valid(handle)) {
|
ext4_handle_valid(handle)) {
|
||||||
mpd->io_submit.io_end->handle = handle->h_rsv_handle;
|
mpd->io_submit.io_end->handle = handle->h_rsv_handle;
|
||||||
|
|
|
@ -51,7 +51,6 @@ struct extent_status;
|
||||||
{ EXT4_MAP_MAPPED, "M" }, \
|
{ EXT4_MAP_MAPPED, "M" }, \
|
||||||
{ EXT4_MAP_UNWRITTEN, "U" }, \
|
{ EXT4_MAP_UNWRITTEN, "U" }, \
|
||||||
{ EXT4_MAP_BOUNDARY, "B" }, \
|
{ EXT4_MAP_BOUNDARY, "B" }, \
|
||||||
{ EXT4_MAP_UNINIT, "u" }, \
|
|
||||||
{ EXT4_MAP_FROM_CLUSTER, "C" })
|
{ EXT4_MAP_FROM_CLUSTER, "C" })
|
||||||
|
|
||||||
#define show_free_flags(flags) __print_flags(flags, "|", \
|
#define show_free_flags(flags) __print_flags(flags, "|", \
|
||||||
|
|
Загрузка…
Ссылка в новой задаче