Message ID | 20241107014602.3638020-1-chao@kernel.org (mailing list archive) |
---|---|
State | Accepted |
Commit | 7461f37094180200cb2f98e60ef99a0cea97beec |
Headers | show |
Series | [f2fs-dev] f2fs: clean up w/ F2FS_{BLK_TO_BYTES, BTYES_TO_BLK} | expand |
Chao Yu via Linux-f2fs-devel <linux-f2fs-devel@lists.sourceforge.net> 于2024年11月7日周四 09:50写道: > > f2fs doesn't support different blksize in one instance, so > bytes_to_blks() and blks_to_bytes() are equal to F2FS_BYTES_TO_BLK > and F2FS_BLK_TO_BYTES, let's use F2FS_BYTES_TO_BLK/F2FS_BLK_TO_BYTES > instead for cleanup. > > Reported-by: Zhiguo Niu <zhiguo.niu@unisoc.com> > Signed-off-by: Chao Yu <chao@kernel.org> feel free to add: Reviewed-by: Zhiguo Niu <zhiguo.niu@unisoc.com> thanks! > --- > fs/f2fs/data.c | 68 +++++++++++++++++++++----------------------------- > 1 file changed, 29 insertions(+), 39 deletions(-) > > diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c > index b33aca24b9ef..0e8390cbdb5b 100644 > --- a/fs/f2fs/data.c > +++ b/fs/f2fs/data.c > @@ -1819,16 +1819,6 @@ bool f2fs_overwrite_io(struct inode *inode, loff_t pos, size_t len) > return true; > } > > -static inline u64 bytes_to_blks(struct inode *inode, u64 bytes) > -{ > - return (bytes >> inode->i_blkbits); > -} > - > -static inline u64 blks_to_bytes(struct inode *inode, u64 blks) > -{ > - return (blks << inode->i_blkbits); > -} > - > static int f2fs_xattr_fiemap(struct inode *inode, > struct fiemap_extent_info *fieinfo) > { > @@ -1854,7 +1844,7 @@ static int f2fs_xattr_fiemap(struct inode *inode, > return err; > } > > - phys = blks_to_bytes(inode, ni.blk_addr); > + phys = F2FS_BLK_TO_BYTES(ni.blk_addr); > offset = offsetof(struct f2fs_inode, i_addr) + > sizeof(__le32) * (DEF_ADDRS_PER_INODE - > get_inline_xattr_addrs(inode)); > @@ -1886,7 +1876,7 @@ static int f2fs_xattr_fiemap(struct inode *inode, > return err; > } > > - phys = blks_to_bytes(inode, ni.blk_addr); > + phys = F2FS_BLK_TO_BYTES(ni.blk_addr); > len = inode->i_sb->s_blocksize; > > f2fs_put_page(page, 1); > @@ -1948,16 +1938,16 @@ int f2fs_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, > goto out; > } > > - if (bytes_to_blks(inode, len) == 0) > - len = blks_to_bytes(inode, 1); > + if (F2FS_BYTES_TO_BLK(len) == 0) > + len = F2FS_BLKSIZE; > > - start_blk = bytes_to_blks(inode, start); > - last_blk = bytes_to_blks(inode, start + len - 1); > + start_blk = F2FS_BYTES_TO_BLK(start); > + last_blk = F2FS_BYTES_TO_BLK(start + len - 1); > > next: > memset(&map, 0, sizeof(map)); > map.m_lblk = start_blk; > - map.m_len = bytes_to_blks(inode, len); > + map.m_len = F2FS_BYTES_TO_BLK(len); > map.m_next_pgofs = &next_pgofs; > map.m_seg_type = NO_CHECK_TYPE; > > @@ -1974,7 +1964,7 @@ int f2fs_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, > if (!compr_cluster && !(map.m_flags & F2FS_MAP_FLAGS)) { > start_blk = next_pgofs; > > - if (blks_to_bytes(inode, start_blk) < maxbytes) > + if (F2FS_BLK_TO_BYTES(start_blk) < maxbytes) > goto prep_next; > > flags |= FIEMAP_EXTENT_LAST; > @@ -2011,14 +2001,14 @@ int f2fs_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, > } else if (compr_appended) { > unsigned int appended_blks = cluster_size - > count_in_cluster + 1; > - size += blks_to_bytes(inode, appended_blks); > + size += F2FS_BLK_TO_BYTES(appended_blks); > start_blk += appended_blks; > compr_cluster = false; > } else { > - logical = blks_to_bytes(inode, start_blk); > + logical = F2FS_BLK_TO_BYTES(start_blk); > phys = __is_valid_data_blkaddr(map.m_pblk) ? > - blks_to_bytes(inode, map.m_pblk) : 0; > - size = blks_to_bytes(inode, map.m_len); > + F2FS_BLK_TO_BYTES(map.m_pblk) : 0; > + size = F2FS_BLK_TO_BYTES(map.m_len); > flags = 0; > > if (compr_cluster) { > @@ -2026,13 +2016,13 @@ int f2fs_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, > count_in_cluster += map.m_len; > if (count_in_cluster == cluster_size) { > compr_cluster = false; > - size += blks_to_bytes(inode, 1); > + size += F2FS_BLKSIZE; > } > } else if (map.m_flags & F2FS_MAP_DELALLOC) { > flags = FIEMAP_EXTENT_UNWRITTEN; > } > > - start_blk += bytes_to_blks(inode, size); > + start_blk += F2FS_BYTES_TO_BLK(size); > } > > prep_next: > @@ -2070,7 +2060,7 @@ static int f2fs_read_single_page(struct inode *inode, struct folio *folio, > struct readahead_control *rac) > { > struct bio *bio = *bio_ret; > - const unsigned blocksize = blks_to_bytes(inode, 1); > + const unsigned int blocksize = F2FS_BLKSIZE; > sector_t block_in_file; > sector_t last_block; > sector_t last_block_in_file; > @@ -2080,8 +2070,8 @@ static int f2fs_read_single_page(struct inode *inode, struct folio *folio, > > block_in_file = (sector_t)index; > last_block = block_in_file + nr_pages; > - last_block_in_file = bytes_to_blks(inode, > - f2fs_readpage_limit(inode) + blocksize - 1); > + last_block_in_file = F2FS_BYTES_TO_BLK(f2fs_readpage_limit(inode) + > + blocksize - 1); > if (last_block > last_block_in_file) > last_block = last_block_in_file; > > @@ -2181,7 +2171,7 @@ int f2fs_read_multi_pages(struct compress_ctx *cc, struct bio **bio_ret, > struct bio *bio = *bio_ret; > unsigned int start_idx = cc->cluster_idx << cc->log_cluster_size; > sector_t last_block_in_file; > - const unsigned blocksize = blks_to_bytes(inode, 1); > + const unsigned int blocksize = F2FS_BLKSIZE; > struct decompress_io_ctx *dic = NULL; > struct extent_info ei = {}; > bool from_dnode = true; > @@ -2190,8 +2180,8 @@ int f2fs_read_multi_pages(struct compress_ctx *cc, struct bio **bio_ret, > > f2fs_bug_on(sbi, f2fs_cluster_is_empty(cc)); > > - last_block_in_file = bytes_to_blks(inode, > - f2fs_readpage_limit(inode) + blocksize - 1); > + last_block_in_file = F2FS_BYTES_TO_BLK(f2fs_readpage_limit(inode) + > + blocksize - 1); > > /* get rid of pages beyond EOF */ > for (i = 0; i < cc->cluster_size; i++) { > @@ -3957,7 +3947,7 @@ static int check_swap_activate(struct swap_info_struct *sis, > * to be very smart. > */ > cur_lblock = 0; > - last_lblock = bytes_to_blks(inode, i_size_read(inode)); > + last_lblock = F2FS_BYTES_TO_BLK(i_size_read(inode)); > > while (cur_lblock < last_lblock && cur_lblock < sis->max) { > struct f2fs_map_blocks map; > @@ -4200,8 +4190,8 @@ static int f2fs_iomap_begin(struct inode *inode, loff_t offset, loff_t length, > pgoff_t next_pgofs = 0; > int err; > > - map.m_lblk = bytes_to_blks(inode, offset); > - map.m_len = bytes_to_blks(inode, offset + length - 1) - map.m_lblk + 1; > + map.m_lblk = F2FS_BYTES_TO_BLK(offset); > + map.m_len = F2FS_BYTES_TO_BLK(offset + length - 1) - map.m_lblk + 1; > map.m_next_pgofs = &next_pgofs; > map.m_seg_type = f2fs_rw_hint_to_seg_type(F2FS_I_SB(inode), > inode->i_write_hint); > @@ -4212,7 +4202,7 @@ static int f2fs_iomap_begin(struct inode *inode, loff_t offset, loff_t length, > if (err) > return err; > > - iomap->offset = blks_to_bytes(inode, map.m_lblk); > + iomap->offset = F2FS_BLK_TO_BYTES(map.m_lblk); > > /* > * When inline encryption is enabled, sometimes I/O to an encrypted file > @@ -4232,21 +4222,21 @@ static int f2fs_iomap_begin(struct inode *inode, loff_t offset, loff_t length, > if (WARN_ON_ONCE(map.m_pblk == NEW_ADDR)) > return -EINVAL; > > - iomap->length = blks_to_bytes(inode, map.m_len); > + iomap->length = F2FS_BLK_TO_BYTES(map.m_len); > iomap->type = IOMAP_MAPPED; > iomap->flags |= IOMAP_F_MERGED; > iomap->bdev = map.m_bdev; > - iomap->addr = blks_to_bytes(inode, map.m_pblk); > + iomap->addr = F2FS_BLK_TO_BYTES(map.m_pblk); > } else { > if (flags & IOMAP_WRITE) > return -ENOTBLK; > > if (map.m_pblk == NULL_ADDR) { > - iomap->length = blks_to_bytes(inode, next_pgofs) - > - iomap->offset; > + iomap->length = F2FS_BLK_TO_BYTES(next_pgofs) - > + iomap->offset; > iomap->type = IOMAP_HOLE; > } else if (map.m_pblk == NEW_ADDR) { > - iomap->length = blks_to_bytes(inode, map.m_len); > + iomap->length = F2FS_BLK_TO_BYTES(map.m_len); > iomap->type = IOMAP_UNWRITTEN; > } else { > f2fs_bug_on(F2FS_I_SB(inode), 1); > -- > 2.40.1 > > > > _______________________________________________ > Linux-f2fs-devel mailing list > Linux-f2fs-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
On 2024/11/7 11:19, Zhiguo Niu wrote: > Chao Yu via Linux-f2fs-devel <linux-f2fs-devel@lists.sourceforge.net> > 于2024年11月7日周四 09:50写道: >> >> f2fs doesn't support different blksize in one instance, so >> bytes_to_blks() and blks_to_bytes() are equal to F2FS_BYTES_TO_BLK >> and F2FS_BLK_TO_BYTES, let's use F2FS_BYTES_TO_BLK/F2FS_BLK_TO_BYTES >> instead for cleanup. >> >> Reported-by: Zhiguo Niu <zhiguo.niu@unisoc.com> >> Signed-off-by: Chao Yu <chao@kernel.org> > feel free to add: > Reviewed-by: Zhiguo Niu <zhiguo.niu@unisoc.com> I encounter filesystem corruption w/ this patch while testing generic/051, since we missed to cast bytes/blk argument to unsigned long long type. -#define F2FS_BYTES_TO_BLK(bytes) ((bytes) >> F2FS_BLKSIZE_BITS) -#define F2FS_BLK_TO_BYTES(blk) ((blk) << F2FS_BLKSIZE_BITS) +#define F2FS_BYTES_TO_BLK(bytes) ((unsigned long long)(bytes) >> F2FS_BLKSIZE_BITS) +#define F2FS_BLK_TO_BYTES(blk) ((unsigned long long)(blk) << F2FS_BLKSIZE_BITS) Will fix this in a separate patch. Thanks, > thanks! >> --- >> fs/f2fs/data.c | 68 +++++++++++++++++++++----------------------------- >> 1 file changed, 29 insertions(+), 39 deletions(-) >> >> diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c >> index b33aca24b9ef..0e8390cbdb5b 100644 >> --- a/fs/f2fs/data.c >> +++ b/fs/f2fs/data.c >> @@ -1819,16 +1819,6 @@ bool f2fs_overwrite_io(struct inode *inode, loff_t pos, size_t len) >> return true; >> } >> >> -static inline u64 bytes_to_blks(struct inode *inode, u64 bytes) >> -{ >> - return (bytes >> inode->i_blkbits); >> -} >> - >> -static inline u64 blks_to_bytes(struct inode *inode, u64 blks) >> -{ >> - return (blks << inode->i_blkbits); >> -} >> - >> static int f2fs_xattr_fiemap(struct inode *inode, >> struct fiemap_extent_info *fieinfo) >> { >> @@ -1854,7 +1844,7 @@ static int f2fs_xattr_fiemap(struct inode *inode, >> return err; >> } >> >> - phys = blks_to_bytes(inode, ni.blk_addr); >> + phys = F2FS_BLK_TO_BYTES(ni.blk_addr); >> offset = offsetof(struct f2fs_inode, i_addr) + >> sizeof(__le32) * (DEF_ADDRS_PER_INODE - >> get_inline_xattr_addrs(inode)); >> @@ -1886,7 +1876,7 @@ static int f2fs_xattr_fiemap(struct inode *inode, >> return err; >> } >> >> - phys = blks_to_bytes(inode, ni.blk_addr); >> + phys = F2FS_BLK_TO_BYTES(ni.blk_addr); >> len = inode->i_sb->s_blocksize; >> >> f2fs_put_page(page, 1); >> @@ -1948,16 +1938,16 @@ int f2fs_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, >> goto out; >> } >> >> - if (bytes_to_blks(inode, len) == 0) >> - len = blks_to_bytes(inode, 1); >> + if (F2FS_BYTES_TO_BLK(len) == 0) >> + len = F2FS_BLKSIZE; >> >> - start_blk = bytes_to_blks(inode, start); >> - last_blk = bytes_to_blks(inode, start + len - 1); >> + start_blk = F2FS_BYTES_TO_BLK(start); >> + last_blk = F2FS_BYTES_TO_BLK(start + len - 1); >> >> next: >> memset(&map, 0, sizeof(map)); >> map.m_lblk = start_blk; >> - map.m_len = bytes_to_blks(inode, len); >> + map.m_len = F2FS_BYTES_TO_BLK(len); >> map.m_next_pgofs = &next_pgofs; >> map.m_seg_type = NO_CHECK_TYPE; >> >> @@ -1974,7 +1964,7 @@ int f2fs_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, >> if (!compr_cluster && !(map.m_flags & F2FS_MAP_FLAGS)) { >> start_blk = next_pgofs; >> >> - if (blks_to_bytes(inode, start_blk) < maxbytes) >> + if (F2FS_BLK_TO_BYTES(start_blk) < maxbytes) >> goto prep_next; >> >> flags |= FIEMAP_EXTENT_LAST; >> @@ -2011,14 +2001,14 @@ int f2fs_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, >> } else if (compr_appended) { >> unsigned int appended_blks = cluster_size - >> count_in_cluster + 1; >> - size += blks_to_bytes(inode, appended_blks); >> + size += F2FS_BLK_TO_BYTES(appended_blks); >> start_blk += appended_blks; >> compr_cluster = false; >> } else { >> - logical = blks_to_bytes(inode, start_blk); >> + logical = F2FS_BLK_TO_BYTES(start_blk); >> phys = __is_valid_data_blkaddr(map.m_pblk) ? >> - blks_to_bytes(inode, map.m_pblk) : 0; >> - size = blks_to_bytes(inode, map.m_len); >> + F2FS_BLK_TO_BYTES(map.m_pblk) : 0; >> + size = F2FS_BLK_TO_BYTES(map.m_len); >> flags = 0; >> >> if (compr_cluster) { >> @@ -2026,13 +2016,13 @@ int f2fs_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, >> count_in_cluster += map.m_len; >> if (count_in_cluster == cluster_size) { >> compr_cluster = false; >> - size += blks_to_bytes(inode, 1); >> + size += F2FS_BLKSIZE; >> } >> } else if (map.m_flags & F2FS_MAP_DELALLOC) { >> flags = FIEMAP_EXTENT_UNWRITTEN; >> } >> >> - start_blk += bytes_to_blks(inode, size); >> + start_blk += F2FS_BYTES_TO_BLK(size); >> } >> >> prep_next: >> @@ -2070,7 +2060,7 @@ static int f2fs_read_single_page(struct inode *inode, struct folio *folio, >> struct readahead_control *rac) >> { >> struct bio *bio = *bio_ret; >> - const unsigned blocksize = blks_to_bytes(inode, 1); >> + const unsigned int blocksize = F2FS_BLKSIZE; >> sector_t block_in_file; >> sector_t last_block; >> sector_t last_block_in_file; >> @@ -2080,8 +2070,8 @@ static int f2fs_read_single_page(struct inode *inode, struct folio *folio, >> >> block_in_file = (sector_t)index; >> last_block = block_in_file + nr_pages; >> - last_block_in_file = bytes_to_blks(inode, >> - f2fs_readpage_limit(inode) + blocksize - 1); >> + last_block_in_file = F2FS_BYTES_TO_BLK(f2fs_readpage_limit(inode) + >> + blocksize - 1); >> if (last_block > last_block_in_file) >> last_block = last_block_in_file; >> >> @@ -2181,7 +2171,7 @@ int f2fs_read_multi_pages(struct compress_ctx *cc, struct bio **bio_ret, >> struct bio *bio = *bio_ret; >> unsigned int start_idx = cc->cluster_idx << cc->log_cluster_size; >> sector_t last_block_in_file; >> - const unsigned blocksize = blks_to_bytes(inode, 1); >> + const unsigned int blocksize = F2FS_BLKSIZE; >> struct decompress_io_ctx *dic = NULL; >> struct extent_info ei = {}; >> bool from_dnode = true; >> @@ -2190,8 +2180,8 @@ int f2fs_read_multi_pages(struct compress_ctx *cc, struct bio **bio_ret, >> >> f2fs_bug_on(sbi, f2fs_cluster_is_empty(cc)); >> >> - last_block_in_file = bytes_to_blks(inode, >> - f2fs_readpage_limit(inode) + blocksize - 1); >> + last_block_in_file = F2FS_BYTES_TO_BLK(f2fs_readpage_limit(inode) + >> + blocksize - 1); >> >> /* get rid of pages beyond EOF */ >> for (i = 0; i < cc->cluster_size; i++) { >> @@ -3957,7 +3947,7 @@ static int check_swap_activate(struct swap_info_struct *sis, >> * to be very smart. >> */ >> cur_lblock = 0; >> - last_lblock = bytes_to_blks(inode, i_size_read(inode)); >> + last_lblock = F2FS_BYTES_TO_BLK(i_size_read(inode)); >> >> while (cur_lblock < last_lblock && cur_lblock < sis->max) { >> struct f2fs_map_blocks map; >> @@ -4200,8 +4190,8 @@ static int f2fs_iomap_begin(struct inode *inode, loff_t offset, loff_t length, >> pgoff_t next_pgofs = 0; >> int err; >> >> - map.m_lblk = bytes_to_blks(inode, offset); >> - map.m_len = bytes_to_blks(inode, offset + length - 1) - map.m_lblk + 1; >> + map.m_lblk = F2FS_BYTES_TO_BLK(offset); >> + map.m_len = F2FS_BYTES_TO_BLK(offset + length - 1) - map.m_lblk + 1; >> map.m_next_pgofs = &next_pgofs; >> map.m_seg_type = f2fs_rw_hint_to_seg_type(F2FS_I_SB(inode), >> inode->i_write_hint); >> @@ -4212,7 +4202,7 @@ static int f2fs_iomap_begin(struct inode *inode, loff_t offset, loff_t length, >> if (err) >> return err; >> >> - iomap->offset = blks_to_bytes(inode, map.m_lblk); >> + iomap->offset = F2FS_BLK_TO_BYTES(map.m_lblk); >> >> /* >> * When inline encryption is enabled, sometimes I/O to an encrypted file >> @@ -4232,21 +4222,21 @@ static int f2fs_iomap_begin(struct inode *inode, loff_t offset, loff_t length, >> if (WARN_ON_ONCE(map.m_pblk == NEW_ADDR)) >> return -EINVAL; >> >> - iomap->length = blks_to_bytes(inode, map.m_len); >> + iomap->length = F2FS_BLK_TO_BYTES(map.m_len); >> iomap->type = IOMAP_MAPPED; >> iomap->flags |= IOMAP_F_MERGED; >> iomap->bdev = map.m_bdev; >> - iomap->addr = blks_to_bytes(inode, map.m_pblk); >> + iomap->addr = F2FS_BLK_TO_BYTES(map.m_pblk); >> } else { >> if (flags & IOMAP_WRITE) >> return -ENOTBLK; >> >> if (map.m_pblk == NULL_ADDR) { >> - iomap->length = blks_to_bytes(inode, next_pgofs) - >> - iomap->offset; >> + iomap->length = F2FS_BLK_TO_BYTES(next_pgofs) - >> + iomap->offset; >> iomap->type = IOMAP_HOLE; >> } else if (map.m_pblk == NEW_ADDR) { >> - iomap->length = blks_to_bytes(inode, map.m_len); >> + iomap->length = F2FS_BLK_TO_BYTES(map.m_len); >> iomap->type = IOMAP_UNWRITTEN; >> } else { >> f2fs_bug_on(F2FS_I_SB(inode), 1); >> -- >> 2.40.1 >> >> >> >> _______________________________________________ >> Linux-f2fs-devel mailing list >> Linux-f2fs-devel@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
Hello: This patch was applied to jaegeuk/f2fs.git (dev) by Jaegeuk Kim <jaegeuk@kernel.org>: On Thu, 7 Nov 2024 09:46:02 +0800 you wrote: > f2fs doesn't support different blksize in one instance, so > bytes_to_blks() and blks_to_bytes() are equal to F2FS_BYTES_TO_BLK > and F2FS_BLK_TO_BYTES, let's use F2FS_BYTES_TO_BLK/F2FS_BLK_TO_BYTES > instead for cleanup. > > Reported-by: Zhiguo Niu <zhiguo.niu@unisoc.com> > Signed-off-by: Chao Yu <chao@kernel.org> > > [...] Here is the summary with links: - [f2fs-dev] f2fs: clean up w/ F2FS_{BLK_TO_BYTES, BTYES_TO_BLK} https://git.kernel.org/jaegeuk/f2fs/c/7461f3709418 You are awesome, thank you!
diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c index b33aca24b9ef..0e8390cbdb5b 100644 --- a/fs/f2fs/data.c +++ b/fs/f2fs/data.c @@ -1819,16 +1819,6 @@ bool f2fs_overwrite_io(struct inode *inode, loff_t pos, size_t len) return true; } -static inline u64 bytes_to_blks(struct inode *inode, u64 bytes) -{ - return (bytes >> inode->i_blkbits); -} - -static inline u64 blks_to_bytes(struct inode *inode, u64 blks) -{ - return (blks << inode->i_blkbits); -} - static int f2fs_xattr_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo) { @@ -1854,7 +1844,7 @@ static int f2fs_xattr_fiemap(struct inode *inode, return err; } - phys = blks_to_bytes(inode, ni.blk_addr); + phys = F2FS_BLK_TO_BYTES(ni.blk_addr); offset = offsetof(struct f2fs_inode, i_addr) + sizeof(__le32) * (DEF_ADDRS_PER_INODE - get_inline_xattr_addrs(inode)); @@ -1886,7 +1876,7 @@ static int f2fs_xattr_fiemap(struct inode *inode, return err; } - phys = blks_to_bytes(inode, ni.blk_addr); + phys = F2FS_BLK_TO_BYTES(ni.blk_addr); len = inode->i_sb->s_blocksize; f2fs_put_page(page, 1); @@ -1948,16 +1938,16 @@ int f2fs_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, goto out; } - if (bytes_to_blks(inode, len) == 0) - len = blks_to_bytes(inode, 1); + if (F2FS_BYTES_TO_BLK(len) == 0) + len = F2FS_BLKSIZE; - start_blk = bytes_to_blks(inode, start); - last_blk = bytes_to_blks(inode, start + len - 1); + start_blk = F2FS_BYTES_TO_BLK(start); + last_blk = F2FS_BYTES_TO_BLK(start + len - 1); next: memset(&map, 0, sizeof(map)); map.m_lblk = start_blk; - map.m_len = bytes_to_blks(inode, len); + map.m_len = F2FS_BYTES_TO_BLK(len); map.m_next_pgofs = &next_pgofs; map.m_seg_type = NO_CHECK_TYPE; @@ -1974,7 +1964,7 @@ int f2fs_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, if (!compr_cluster && !(map.m_flags & F2FS_MAP_FLAGS)) { start_blk = next_pgofs; - if (blks_to_bytes(inode, start_blk) < maxbytes) + if (F2FS_BLK_TO_BYTES(start_blk) < maxbytes) goto prep_next; flags |= FIEMAP_EXTENT_LAST; @@ -2011,14 +2001,14 @@ int f2fs_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, } else if (compr_appended) { unsigned int appended_blks = cluster_size - count_in_cluster + 1; - size += blks_to_bytes(inode, appended_blks); + size += F2FS_BLK_TO_BYTES(appended_blks); start_blk += appended_blks; compr_cluster = false; } else { - logical = blks_to_bytes(inode, start_blk); + logical = F2FS_BLK_TO_BYTES(start_blk); phys = __is_valid_data_blkaddr(map.m_pblk) ? - blks_to_bytes(inode, map.m_pblk) : 0; - size = blks_to_bytes(inode, map.m_len); + F2FS_BLK_TO_BYTES(map.m_pblk) : 0; + size = F2FS_BLK_TO_BYTES(map.m_len); flags = 0; if (compr_cluster) { @@ -2026,13 +2016,13 @@ int f2fs_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, count_in_cluster += map.m_len; if (count_in_cluster == cluster_size) { compr_cluster = false; - size += blks_to_bytes(inode, 1); + size += F2FS_BLKSIZE; } } else if (map.m_flags & F2FS_MAP_DELALLOC) { flags = FIEMAP_EXTENT_UNWRITTEN; } - start_blk += bytes_to_blks(inode, size); + start_blk += F2FS_BYTES_TO_BLK(size); } prep_next: @@ -2070,7 +2060,7 @@ static int f2fs_read_single_page(struct inode *inode, struct folio *folio, struct readahead_control *rac) { struct bio *bio = *bio_ret; - const unsigned blocksize = blks_to_bytes(inode, 1); + const unsigned int blocksize = F2FS_BLKSIZE; sector_t block_in_file; sector_t last_block; sector_t last_block_in_file; @@ -2080,8 +2070,8 @@ static int f2fs_read_single_page(struct inode *inode, struct folio *folio, block_in_file = (sector_t)index; last_block = block_in_file + nr_pages; - last_block_in_file = bytes_to_blks(inode, - f2fs_readpage_limit(inode) + blocksize - 1); + last_block_in_file = F2FS_BYTES_TO_BLK(f2fs_readpage_limit(inode) + + blocksize - 1); if (last_block > last_block_in_file) last_block = last_block_in_file; @@ -2181,7 +2171,7 @@ int f2fs_read_multi_pages(struct compress_ctx *cc, struct bio **bio_ret, struct bio *bio = *bio_ret; unsigned int start_idx = cc->cluster_idx << cc->log_cluster_size; sector_t last_block_in_file; - const unsigned blocksize = blks_to_bytes(inode, 1); + const unsigned int blocksize = F2FS_BLKSIZE; struct decompress_io_ctx *dic = NULL; struct extent_info ei = {}; bool from_dnode = true; @@ -2190,8 +2180,8 @@ int f2fs_read_multi_pages(struct compress_ctx *cc, struct bio **bio_ret, f2fs_bug_on(sbi, f2fs_cluster_is_empty(cc)); - last_block_in_file = bytes_to_blks(inode, - f2fs_readpage_limit(inode) + blocksize - 1); + last_block_in_file = F2FS_BYTES_TO_BLK(f2fs_readpage_limit(inode) + + blocksize - 1); /* get rid of pages beyond EOF */ for (i = 0; i < cc->cluster_size; i++) { @@ -3957,7 +3947,7 @@ static int check_swap_activate(struct swap_info_struct *sis, * to be very smart. */ cur_lblock = 0; - last_lblock = bytes_to_blks(inode, i_size_read(inode)); + last_lblock = F2FS_BYTES_TO_BLK(i_size_read(inode)); while (cur_lblock < last_lblock && cur_lblock < sis->max) { struct f2fs_map_blocks map; @@ -4200,8 +4190,8 @@ static int f2fs_iomap_begin(struct inode *inode, loff_t offset, loff_t length, pgoff_t next_pgofs = 0; int err; - map.m_lblk = bytes_to_blks(inode, offset); - map.m_len = bytes_to_blks(inode, offset + length - 1) - map.m_lblk + 1; + map.m_lblk = F2FS_BYTES_TO_BLK(offset); + map.m_len = F2FS_BYTES_TO_BLK(offset + length - 1) - map.m_lblk + 1; map.m_next_pgofs = &next_pgofs; map.m_seg_type = f2fs_rw_hint_to_seg_type(F2FS_I_SB(inode), inode->i_write_hint); @@ -4212,7 +4202,7 @@ static int f2fs_iomap_begin(struct inode *inode, loff_t offset, loff_t length, if (err) return err; - iomap->offset = blks_to_bytes(inode, map.m_lblk); + iomap->offset = F2FS_BLK_TO_BYTES(map.m_lblk); /* * When inline encryption is enabled, sometimes I/O to an encrypted file @@ -4232,21 +4222,21 @@ static int f2fs_iomap_begin(struct inode *inode, loff_t offset, loff_t length, if (WARN_ON_ONCE(map.m_pblk == NEW_ADDR)) return -EINVAL; - iomap->length = blks_to_bytes(inode, map.m_len); + iomap->length = F2FS_BLK_TO_BYTES(map.m_len); iomap->type = IOMAP_MAPPED; iomap->flags |= IOMAP_F_MERGED; iomap->bdev = map.m_bdev; - iomap->addr = blks_to_bytes(inode, map.m_pblk); + iomap->addr = F2FS_BLK_TO_BYTES(map.m_pblk); } else { if (flags & IOMAP_WRITE) return -ENOTBLK; if (map.m_pblk == NULL_ADDR) { - iomap->length = blks_to_bytes(inode, next_pgofs) - - iomap->offset; + iomap->length = F2FS_BLK_TO_BYTES(next_pgofs) - + iomap->offset; iomap->type = IOMAP_HOLE; } else if (map.m_pblk == NEW_ADDR) { - iomap->length = blks_to_bytes(inode, map.m_len); + iomap->length = F2FS_BLK_TO_BYTES(map.m_len); iomap->type = IOMAP_UNWRITTEN; } else { f2fs_bug_on(F2FS_I_SB(inode), 1);
f2fs doesn't support different blksize in one instance, so bytes_to_blks() and blks_to_bytes() are equal to F2FS_BYTES_TO_BLK and F2FS_BLK_TO_BYTES, let's use F2FS_BYTES_TO_BLK/F2FS_BLK_TO_BYTES instead for cleanup. Reported-by: Zhiguo Niu <zhiguo.niu@unisoc.com> Signed-off-by: Chao Yu <chao@kernel.org> --- fs/f2fs/data.c | 68 +++++++++++++++++++++----------------------------- 1 file changed, 29 insertions(+), 39 deletions(-)