mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-08 14:23:19 +00:00
f2fs: remove power-of-two limitation of zoned device
In f2fs, there's no reason to force po2. Reviewed-by: Chao Yu <chao@kernel.org> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
This commit is contained in:
parent
5584785080
commit
2e2c6e9b72
@ -1523,7 +1523,6 @@ struct f2fs_sb_info {
|
||||
|
||||
#ifdef CONFIG_BLK_DEV_ZONED
|
||||
unsigned int blocks_per_blkz; /* F2FS blocks per zone */
|
||||
unsigned int log_blocks_per_blkz; /* log2 F2FS blocks per zone */
|
||||
#endif
|
||||
|
||||
/* for node-related operations */
|
||||
@ -4390,7 +4389,7 @@ F2FS_FEATURE_FUNCS(readonly, RO);
|
||||
static inline bool f2fs_blkz_is_seq(struct f2fs_sb_info *sbi, int devi,
|
||||
block_t blkaddr)
|
||||
{
|
||||
unsigned int zno = blkaddr >> sbi->log_blocks_per_blkz;
|
||||
unsigned int zno = blkaddr / sbi->blocks_per_blkz;
|
||||
|
||||
return test_bit(zno, FDEV(devi).blkz_seq);
|
||||
}
|
||||
|
@ -2093,8 +2093,8 @@ static void update_fs_metadata(struct f2fs_sb_info *sbi, int secs)
|
||||
FDEV(last_dev).end_blk =
|
||||
(long long)FDEV(last_dev).end_blk + blks;
|
||||
#ifdef CONFIG_BLK_DEV_ZONED
|
||||
FDEV(last_dev).nr_blkz = (int)FDEV(last_dev).nr_blkz +
|
||||
(int)(blks >> sbi->log_blocks_per_blkz);
|
||||
FDEV(last_dev).nr_blkz = FDEV(last_dev).nr_blkz +
|
||||
div_u64(blks, sbi->blocks_per_blkz);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
@ -2075,7 +2075,7 @@ void f2fs_clear_prefree_segments(struct f2fs_sb_info *sbi,
|
||||
|
||||
if (force && start >= cpc->trim_start &&
|
||||
(end - 1) <= cpc->trim_end)
|
||||
continue;
|
||||
continue;
|
||||
|
||||
/* Should cover 2MB zoned device for zone-based reset */
|
||||
if (!f2fs_sb_has_blkzoned(sbi) &&
|
||||
|
@ -3806,12 +3806,8 @@ static int init_blkz_info(struct f2fs_sb_info *sbi, int devi)
|
||||
SECTOR_TO_BLOCK(zone_sectors))
|
||||
return -EINVAL;
|
||||
sbi->blocks_per_blkz = SECTOR_TO_BLOCK(zone_sectors);
|
||||
if (sbi->log_blocks_per_blkz && sbi->log_blocks_per_blkz !=
|
||||
__ilog2_u32(sbi->blocks_per_blkz))
|
||||
return -EINVAL;
|
||||
sbi->log_blocks_per_blkz = __ilog2_u32(sbi->blocks_per_blkz);
|
||||
FDEV(devi).nr_blkz = SECTOR_TO_BLOCK(nr_sectors) >>
|
||||
sbi->log_blocks_per_blkz;
|
||||
FDEV(devi).nr_blkz = div_u64(SECTOR_TO_BLOCK(nr_sectors),
|
||||
sbi->blocks_per_blkz);
|
||||
if (nr_sectors & (zone_sectors - 1))
|
||||
FDEV(devi).nr_blkz++;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user