[PATCH] erofs: don't use erofs_map_blocks() any more
Chao Yu
yuchao0 at huawei.com
Sat Mar 27 20:32:34 AEDT 2021
On 2021/3/25 16:29, Gao Xiang wrote:
> Hi Yue,
>
> On Thu, Mar 25, 2021 at 03:10:08PM +0800, Yue Hu wrote:
>> From: Yue Hu <huyue2 at yulong.com>
>>
>> Currently, erofs_map_blocks() will be called only from
>> erofs_{bmap, read_raw_page} which are all for uncompressed files.
>> So, the compression branch in erofs_map_blocks() is pointless. Let's
>> remove it and use erofs_map_blocks_flatmode() directly. Also update
>> related comments.
>>
>
> You are right, since for compressed files, map_blocks_iter would be more
> effective than erofs_map_blocks. Originally, such unique interface was
> designed for fiemap (just for example), but I'm fine to get rid of it
> until related interfaces are finally implemented.
>
> Also, I'd like to hear opinions from Chao as well.
Looks fine to me.
Reviewed-by: Chao Yu <yuchao0 at huawei.com>
Thanks,
>
> Thanks,
> Gao Xiang
>
>> Signed-off-by: Yue Hu <huyue2 at yulong.com>
>> ---
>> fs/erofs/data.c | 19 ++-----------------
>> fs/erofs/internal.h | 6 ++----
>> 2 files changed, 4 insertions(+), 21 deletions(-)
>>
>> diff --git a/fs/erofs/data.c b/fs/erofs/data.c
>> index 1249e74..ebac756 100644
>> --- a/fs/erofs/data.c
>> +++ b/fs/erofs/data.c
>> @@ -109,21 +109,6 @@ static int erofs_map_blocks_flatmode(struct inode *inode,
>> return err;
>> }
>>
>> -int erofs_map_blocks(struct inode *inode,
>> - struct erofs_map_blocks *map, int flags)
>> -{
>> - if (erofs_inode_is_data_compressed(EROFS_I(inode)->datalayout)) {
>> - int err = z_erofs_map_blocks_iter(inode, map, flags);
>> -
>> - if (map->mpage) {
>> - put_page(map->mpage);
>> - map->mpage = NULL;
>> - }
>> - return err;
>> - }
>> - return erofs_map_blocks_flatmode(inode, map, flags);
>> -}
>> -
>> static inline struct bio *erofs_read_raw_page(struct bio *bio,
>> struct address_space *mapping,
>> struct page *page,
>> @@ -159,7 +144,7 @@ static inline struct bio *erofs_read_raw_page(struct bio *bio,
>> erofs_blk_t blknr;
>> unsigned int blkoff;
>>
>> - err = erofs_map_blocks(inode, &map, EROFS_GET_BLOCKS_RAW);
>> + err = erofs_map_blocks_flatmode(inode, &map, EROFS_GET_BLOCKS_RAW);
>> if (err)
>> goto err_out;
>>
>> @@ -318,7 +303,7 @@ static sector_t erofs_bmap(struct address_space *mapping, sector_t block)
>> return 0;
>> }
>>
>> - if (!erofs_map_blocks(inode, &map, EROFS_GET_BLOCKS_RAW))
>> + if (!erofs_map_blocks_flatmode(inode, &map, EROFS_GET_BLOCKS_RAW))
>> return erofs_blknr(map.m_pa);
>>
>> return 0;
>> diff --git a/fs/erofs/internal.h b/fs/erofs/internal.h
>> index 30e63b7..db8c847 100644
>> --- a/fs/erofs/internal.h
>> +++ b/fs/erofs/internal.h
>> @@ -289,7 +289,7 @@ static inline unsigned int erofs_inode_datalayout(unsigned int value)
>> extern const struct address_space_operations z_erofs_aops;
>>
>> /*
>> - * Logical to physical block mapping, used by erofs_map_blocks()
>> + * Logical to physical block mapping
>> *
>> * Different with other file systems, it is used for 2 access modes:
>> *
>> @@ -336,7 +336,7 @@ struct erofs_map_blocks {
>> struct page *mpage;
>> };
>>
>> -/* Flags used by erofs_map_blocks() */
>> +/* Flags used by erofs_map_blocks_flatmode() */
>> #define EROFS_GET_BLOCKS_RAW 0x0001
>>
>> /* zmap.c */
>> @@ -358,8 +358,6 @@ static inline int z_erofs_map_blocks_iter(struct inode *inode,
>> /* data.c */
>> struct page *erofs_get_meta_page(struct super_block *sb, erofs_blk_t blkaddr);
>>
>> -int erofs_map_blocks(struct inode *, struct erofs_map_blocks *, int);
>> -
>> /* inode.c */
>> static inline unsigned long erofs_inode_hash(erofs_nid_t nid)
>> {
>> --
>> 1.9.1
>>
>
> .
>
More information about the Linux-erofs
mailing list