zbd: use ->min_zone, ->max_zone in more places
PATCH 1/1 zbd: use ->min_zone, ->max_zone in more places
Check that ->min_zone is less than ->max_zone.
This assert found one bug here.
Use it in more places, now that it was added.
---
zbd.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-)
zbd.c +5 -6
@@ -319,6 +319,7 @@ static bool zbd_verify_sizes(void) f->min_zone =zbd_zone_idx (f, f->file_offset); f->max_zone =zbd_zone_idx (f, f->file_offset + f->io_size); +assert (f->min_zone < f->max_zone); } }
@@ -839,9 +840,8 @@ static uint64_t zbd_process_swd(const struct fio_file *f, enum swd_action a)struct fio_zone_info *zb, *ze, *z;uint64_t swd =0 ; - zb = &f->zbd_info->zone_info[zbd_zone_idx (f, f->file_offset)]; - ze = &f->zbd_info->zone_info[zbd_zone_idx (f, f->file_offset + - f->io_size)]; + zb = &f->zbd_info->zone_info[f->min_zone]; + ze = &f->zbd_info->zone_info[f->max_zone];for (z = zb; z < ze; z++) {pthread_mutex_lock (&z->mutex); swd += z->wp - z->start;
@@ -1175,7 +1175,7 @@ zbd_find_zone(struct thread_data *td, struct io_u *io_u,struct fio_file *f = io_u->file;struct fio_zone_info *z1, *z2;const struct fio_zone_info *const zf = - &f->zbd_info->zone_info[zbd_zone_idx (f, f->file_offset)]; + &f->zbd_info->zone_info[f->min_zone];/* * Skip to the next non-empty zone in case of sequential I/O and to
@@ -1482,8 +1482,7 @@ enum io_u_action zbd_adjust_block(struct thread_data *td, struct io_u *io_u)if (range < min_bs || ((!td_random (td)) && (io_u->offset + min_bs > zb->wp))) {pthread_mutex_unlock (&zb->mutex); - zl = &f->zbd_info->zone_info[zbd_zone_idx (f, - f->file_offset + f->io_size)]; + zl = &f->zbd_info->zone_info[f->max_zone]; zb =zbd_find_zone (td, io_u, zb, zl);if (!zb) { dprint(FD_ZBD,
Quoted 9 lines
-----Original Message-----
From: [email protected] <[email protected]> On Behalf Of Alexey Dobriyan
Sent: Thursday, August 13, 2020 12:37 PM
To: [email protected]
Cc: [email protected]; Damien Le Moal <[email protected]>
Subject: [PATCH] zbd: use ->min_zone, ->max_zone in more places
Quoted 7 lines
Check that ->min_zone is less than ->max_zone.
This assert found one bug here.Use it in more places, now that it was added.
Signed-off-by Alexey Dobriyan (SK hynix) <[email protected]>---
Works fine for me. Nice cleanup!
Quoted 49 lines
zbd.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-)zbd.c +3
-3@@ -319,6 +319,7 @@ static bool zbd_verify_sizes(void) f->min_zone =zbd_zone_idx (f, f->file_offset); f->max_zone =zbd_zone_idx (f, f->file_offset + f- >io_size); +assert (f->min_zone < f->max_zone); } }@@ -839,9 +840,8 @@ static uint64_t zbd_process_swd(const struct fio_file *f, enum swd_action a)struct fio_zone_info *zb, *ze, *z;uint64_t swd =0 ; - zb = &f->zbd_info->zone_info[zbd_zone_idx (f, f->file_offset)]; - ze = &f->zbd_info->zone_info[zbd_zone_idx (f, f->file_offset + - f->io_size)]; + zb = &f->zbd_info->zone_info[f->min_zone]; + ze = &f->zbd_info->zone_info[f->max_zone];for (z = zb; z < ze; z++) {pthread_mutex_lock (&z->mutex);zbd.c +1
-1swd += z->wp - z->start;@@ -1175,7 +1175,7 @@ zbd_find_zone(struct thread_data *td, struct io_u *io_u, struct fio_file *f = io_u->file;struct fio_zone_info *z1, *z2;const struct fio_zone_info *const zf = - &f->zbd_info->zone_info[zbd_zone_idx (f, f->file_offset)]; + &f->zbd_info->zone_info[f->min_zone];/* zbd.c +1
-2* Skip to the next non-empty zone in case of sequential I/O and to @@ -1482,8 +1482,7 @@ enum io_u_action zbd_adjust_block(struct thread_data *td, struct io_u *io_u)if (range < min_bs || ((!td_random (td)) && (io_u->offset + min_bs > zb->wp))) {pthread_mutex_unlock (&zb->mutex); - zl = &f->zbd_info->zone_info[zbd_zone_idx (f, - f->file_offset + f->io_size)]; + zl = &f->zbd_info->zone_info[f->max_zone]; zb =zbd_find_zone (td, io_u, zb, zl);if (!zb) {dprint(FD_ZBD,
Jens Axboe
AppliedQuoted 4 lines · Alexey Dobriyan
Check that ->min_zone is less than ->max_zone.
This assert found one bug here.Use it in more places, now that it was added.
Applied, thanks.
Signature · 1 line
Jens Axboe