Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions drivers/block/null_blk/zoned.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ static inline sector_t mb_to_sects(unsigned long mb)

static inline unsigned int null_zone_no(struct nullb_device *dev, sector_t sect)
{
if (WARN_ON_ONCE(!dev->zone_size_sects))
return 0;
return sect >> ilog2(dev->zone_size_sects);
}

Expand Down Expand Up @@ -56,8 +58,8 @@ int null_init_zoned_dev(struct nullb_device *dev,
sector_t sector = 0;
unsigned int i;

if (!is_power_of_2(dev->zone_size)) {
pr_err("zone_size must be power-of-two\n");
if (!dev->zone_size || !is_power_of_2(dev->zone_size)) {
pr_err("zone_size must be non-zero power-of-two\n");
return -EINVAL;
}
if (dev->zone_size > dev->size) {
Expand Down Expand Up @@ -88,6 +90,10 @@ int null_init_zoned_dev(struct nullb_device *dev,
zone_capacity_sects = mb_to_sects(dev->zone_capacity);
dev_capacity_sects = mb_to_sects(dev->size);
dev->zone_size_sects = mb_to_sects(dev->zone_size);
if (!dev->zone_size_sects) {
pr_err("zone_size too large or too small, leads to zero sectors\n");
return -EINVAL;
}
dev->nr_zones = round_up(dev_capacity_sects, dev->zone_size_sects)
>> ilog2(dev->zone_size_sects);

Expand Down
Loading