lkml.org 
[lkml]   [2023]   [Jan]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH] f2fs: introduce sanity_check_blocks()
    Date
    There are very similar codes in release_compress_blocks() and
    reserve_compress_blocks() which is used for data blocks check.

    This patch introduces a new helper sanity_check_blocks()
    to include those common codes, and used it instead for cleanup.

    Signed-off-by: Yangtao Li <frank.li@vivo.com>
    ---
    fs/f2fs/file.c | 36 ++++++++++++++++++++----------------
    1 file changed, 20 insertions(+), 16 deletions(-)

    diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c
    index f5c1b7814954..0d539155379c 100644
    --- a/fs/f2fs/file.c
    +++ b/fs/f2fs/file.c
    @@ -3369,11 +3369,9 @@ static int f2fs_get_compress_blocks(struct file *filp, unsigned long arg)
    return put_user(blocks, (u64 __user *)arg);
    }

    -static int release_compress_blocks(struct dnode_of_data *dn, pgoff_t count)
    +static int sanity_check_blocks(struct dnode_of_data *dn, pgoff_t count)
    {
    struct f2fs_sb_info *sbi = F2FS_I_SB(dn->inode);
    - unsigned int released_blocks = 0;
    - int cluster_size = F2FS_I(dn->inode)->i_cluster_size;
    block_t blkaddr;
    int i;

    @@ -3390,6 +3388,21 @@ static int release_compress_blocks(struct dnode_of_data *dn, pgoff_t count)
    }
    }

    + return 0;
    +}
    +
    +static int release_compress_blocks(struct dnode_of_data *dn, pgoff_t count)
    +{
    + struct f2fs_sb_info *sbi = F2FS_I_SB(dn->inode);
    + unsigned int released_blocks = 0;
    + int cluster_size = F2FS_I(dn->inode)->i_cluster_size;
    + block_t blkaddr;
    + int i, rc;
    +
    + rc = sanity_check_blocks(dn, count);
    + if (rc)
    + return rc;
    +
    while (count) {
    int compr_blocks = 0;

    @@ -3539,20 +3552,11 @@ static int reserve_compress_blocks(struct dnode_of_data *dn, pgoff_t count)
    unsigned int reserved_blocks = 0;
    int cluster_size = F2FS_I(dn->inode)->i_cluster_size;
    block_t blkaddr;
    - int i;
    + int i, rc;

    - for (i = 0; i < count; i++) {
    - blkaddr = data_blkaddr(dn->inode, dn->node_page,
    - dn->ofs_in_node + i);
    -
    - if (!__is_valid_data_blkaddr(blkaddr))
    - continue;
    - if (unlikely(!f2fs_is_valid_blkaddr(sbi, blkaddr,
    - DATA_GENERIC_ENHANCE))) {
    - f2fs_handle_error(sbi, ERROR_INVALID_BLKADDR);
    - return -EFSCORRUPTED;
    - }
    - }
    + rc = sanity_check_blocks(dn, count);
    + if (rc)
    + return rc;

    while (count) {
    int compr_blocks = 0;
    --
    2.25.1
    \
     
     \ /
      Last update: 2023-03-26 23:37    [W:2.679 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site