Add the helper function zbd_zone_remainder(), which returns bytes can be written to the zone. Use this function to improve readability. It will also be used in the following patch. Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@xxxxxxx> --- zbd.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/zbd.c b/zbd.c index 627fb968..3e9c66d9 100644 --- a/zbd.c +++ b/zbd.c @@ -70,6 +70,18 @@ static inline uint64_t zbd_zone_capacity_end(const struct fio_zone_info *z) return z->start + z->capacity; } +/** + * zbd_zone_remainder - Return bytes can be written to the zone. + * @z: zone info pointer. + */ +static inline uint64_t zbd_zone_remainder(struct fio_zone_info *z) +{ + if (z->wp >= zbd_zone_capacity_end(z)) + return 0; + + return zbd_zone_capacity_end(z) - z->wp; +} + /** * zbd_zone_full - verify whether a minimum number of bytes remain in a zone * @f: file pointer. @@ -83,8 +95,7 @@ static bool zbd_zone_full(const struct fio_file *f, struct fio_zone_info *z, { assert((required & 511) == 0); - return z->has_wp && - z->wp + required > zbd_zone_capacity_end(z); + return z->has_wp && required > zbd_zone_remainder(z); } static void zone_lock(struct thread_data *td, const struct fio_file *f, @@ -440,7 +451,7 @@ static bool zbd_open_zone(struct thread_data *td, const struct fio_file *f, * already in-flight, handle it as a full zone instead of an * open zone. */ - if (z->wp >= zbd_zone_capacity_end(z)) + if (!zbd_zone_remainder(z)) res = false; goto out; } @@ -1368,7 +1379,7 @@ found_candidate_zone: /* Both z->mutex and zbdi->mutex are held. */ examine_zone: - if (z->wp + min_bs <= zbd_zone_capacity_end(z)) { + if (zbd_zone_remainder(z) >= min_bs) { pthread_mutex_unlock(&zbdi->mutex); goto out; } @@ -1433,7 +1444,7 @@ retry: z = zbd_get_zone(f, zone_idx); zone_lock(td, f, z); - if (z->wp + min_bs <= zbd_zone_capacity_end(z)) + if (zbd_zone_remainder(z) >= min_bs) goto out; pthread_mutex_lock(&zbdi->mutex); } -- 2.37.1