zbd: Fix zbd_zone_idx()
authorDamien Le Moal <damien.lemoal@wdc.com>
Wed, 29 Aug 2018 01:29:02 +0000 (10:29 +0900)
committerDamien Le Moal <damien.lemoal@wdc.com>
Thu, 6 Sep 2018 01:09:10 +0000 (10:09 +0900)
For a zone size that is not a power of 2 number of sectors,
f->zbd_info->zone_size_log2 is set to -1. So use bit shift in
zbd_zone_idx() only if zone_size_log2 is not negative.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
zbd.c

diff --git a/zbd.c b/zbd.c
index 93f14410797a8db20c1496aaf7fab6640f6353d0..eb474f6e2935deebb46605c02cdd69bdc56ebdbc 100644 (file)
--- a/zbd.c
+++ b/zbd.c
@@ -31,7 +31,7 @@ static uint32_t zbd_zone_idx(const struct fio_file *f, uint64_t offset)
 {
        uint32_t zone_idx;
 
-       if (f->zbd_info->zone_size_log2)
+       if (f->zbd_info->zone_size_log2 > 0)
                zone_idx = offset >> f->zbd_info->zone_size_log2;
        else
                zone_idx = (offset >> 9) / f->zbd_info->zone_size;