Code like this doesn't work if log2 is 0xffffffff.
if (f->zbd_info->zone_size_log2 > 0)
zone_idx = offset >> f->zbd_info->zone_size_log2;
else
zone_idx = offset / f->zbd_info->zone_size;
Other than that everything else works!
Reviewed-by: Damien Le Moal <damien.lemoal@wdc.com>
Signed-off-by: Alexey Dobriyan (SK hynix) <adobriyan@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
f->zbd_info = zbd_info;
f->zbd_info->zone_size = zone_size;
f->zbd_info->zone_size_log2 = is_power_of_2(zone_size) ?
- ilog2(zone_size) : -1;
+ ilog2(zone_size) : 0;
f->zbd_info->nr_zones = nr_zones;
pthread_mutexattr_destroy(&attr);
return 0;
f->zbd_info = zbd_info;
f->zbd_info->zone_size = zone_size;
f->zbd_info->zone_size_log2 = is_power_of_2(zone_size) ?
- ilog2(zone_size) : -1;
+ ilog2(zone_size) : 0;
f->zbd_info->nr_zones = nr_zones;
zbd_info = NULL;
ret = 0;