On 2021/01/12 12:47, Damien Le Moal wrote: > To avoid potential compilation problems, replaced the badly written > MB_TO_SECTS macro (missing parenthesis around the argument use) with > the inline function mb_to_sects(). And while at it, use DIV_ROUND_UP() > to calculate the total number of zones of a zoned device, simplifying > the code. > > Signed-off-by: Damien Le Moal <damien.lemoal@xxxxxxx> Jens, Ping ? > --- > drivers/block/null_blk/zoned.c | 15 ++++++++------- > 1 file changed, 8 insertions(+), 7 deletions(-) > > diff --git a/drivers/block/null_blk/zoned.c b/drivers/block/null_blk/zoned.c > index 148b871f263b..535351570bb2 100644 > --- a/drivers/block/null_blk/zoned.c > +++ b/drivers/block/null_blk/zoned.c > @@ -6,7 +6,10 @@ > #define CREATE_TRACE_POINTS > #include "trace.h" > > -#define MB_TO_SECTS(mb) (((sector_t)mb * SZ_1M) >> SECTOR_SHIFT) > +static inline sector_t mb_to_sects(unsigned long mb) > +{ > + return ((sector_t)mb * SZ_1M) >> SECTOR_SHIFT; > +} > > static inline unsigned int null_zone_no(struct nullb_device *dev, sector_t sect) > { > @@ -77,12 +80,10 @@ int null_init_zoned_dev(struct nullb_device *dev, struct request_queue *q) > return -EINVAL; > } > > - 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); > - dev->nr_zones = dev_capacity_sects >> ilog2(dev->zone_size_sects); > - if (dev_capacity_sects & (dev->zone_size_sects - 1)) > - dev->nr_zones++; > + 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); > + dev->nr_zones = DIV_ROUND_UP(dev_capacity_sects, dev->zone_size_sects); > > dev->zones = kvmalloc_array(dev->nr_zones, sizeof(struct nullb_zone), > GFP_KERNEL | __GFP_ZERO); > -- Damien Le Moal Western Digital Research