On Tue 02-01-24 20:38:54, Zhang Yi wrote: > From: Zhang Yi <yi.zhang@xxxxxxxxxx> > > Refactor and cleanup ext4_da_map_blocks(), reduce some unnecessary > parameters and branches, no logic changes. > > Signed-off-by: Zhang Yi <yi.zhang@xxxxxxxxxx> Looks good. Feel free to add: Reviewed-by: Jan Kara <jack@xxxxxxx> Honza > --- > fs/ext4/inode.c | 39 +++++++++++++++++---------------------- > 1 file changed, 17 insertions(+), 22 deletions(-) > > diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c > index 61277f7f8722..5b0d3075be12 100644 > --- a/fs/ext4/inode.c > +++ b/fs/ext4/inode.c > @@ -1704,7 +1704,6 @@ static int ext4_da_map_blocks(struct inode *inode, sector_t iblock, > /* Lookup extent status tree firstly */ > if (ext4_es_lookup_extent(inode, iblock, NULL, &es)) { > if (ext4_es_is_hole(&es)) { > - retval = 0; > down_read(&EXT4_I(inode)->i_data_sem); > goto add_delayed; > } > @@ -1749,26 +1748,9 @@ static int ext4_da_map_blocks(struct inode *inode, sector_t iblock, > retval = ext4_ext_map_blocks(NULL, inode, map, 0); > else > retval = ext4_ind_map_blocks(NULL, inode, map, 0); > - > -add_delayed: > - if (retval == 0) { > - int ret; > - > - /* > - * XXX: __block_prepare_write() unmaps passed block, > - * is it OK? > - */ > - > - ret = ext4_insert_delayed_block(inode, map->m_lblk); > - if (ret != 0) { > - retval = ret; > - goto out_unlock; > - } > - > - map_bh(bh, inode->i_sb, invalid_block); > - set_buffer_new(bh); > - set_buffer_delay(bh); > - } else if (retval > 0) { > + if (retval < 0) > + goto out_unlock; > + if (retval > 0) { > unsigned int status; > > if (unlikely(retval != map->m_len)) { > @@ -1783,11 +1765,24 @@ static int ext4_da_map_blocks(struct inode *inode, sector_t iblock, > EXTENT_STATUS_UNWRITTEN : EXTENT_STATUS_WRITTEN; > ext4_es_insert_extent(inode, map->m_lblk, map->m_len, > map->m_pblk, status); > + goto out_unlock; > } > > +add_delayed: > + /* > + * XXX: __block_prepare_write() unmaps passed block, > + * is it OK? > + */ > + retval = ext4_insert_delayed_block(inode, map->m_lblk); > + if (retval) > + goto out_unlock; > + > + map_bh(bh, inode->i_sb, invalid_block); > + set_buffer_new(bh); > + set_buffer_delay(bh); > + > out_unlock: > up_read((&EXT4_I(inode)->i_data_sem)); > - > return retval; > } > > -- > 2.39.2 > -- Jan Kara <jack@xxxxxxxx> SUSE Labs, CR