[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