lkml.org 
[lkml]   [2024]   [Jan]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v3 01/26] ext4: refactor ext4_da_map_blocks()
    Date
    From: Zhang Yi <yi.zhang@huawei.com>

    Refactor and cleanup ext4_da_map_blocks(), reduce some unnecessary
    parameters and branches, no logic changes.

    Signed-off-by: Zhang Yi <yi.zhang@huawei.com>
    Reviewed-by: Jan Kara <jack@suse.cz>
    ---
    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

    \
     
     \ /
      Last update: 2024-05-27 14:35    [W:2.383 / U:0.052 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site