Recent changes (master)
The following changes since commit 7676a1c25fcdacfe27d84a0f86fe68077b7de79a:
parse: fix negative FIO_OPT_INT too-large check (2018-09-25 20:15:05 -0600)
are available in the git repository at:
git://git.kernel.dk/fio.git master
for you to fetch changes up to d60be7d51cbb601cc59dccc9f2a418072046a985:
zbd: Remove unused function and variable (2018-09-26 08:26:01 -0600)
----------------------------------------------------------------
Damien Le Moal (2):
eta: Avoid adjustements to a negative value
zbd: Remove unused function and variable
eta.c | 21 ++++++++++++++++++--- zbd.c | 31 ++----------------------------- 2 files changed, 20 insertions(+), 32 deletions(-)
---
Diff of recent changes:
eta.c +18 -3
@@ -177,12 +177,27 @@ static unsigned long thread_eta(struct thread_data *td) bytes_total = td->fill_device_size; } -if (td->o.zone_size && td->o.zone_skip && bytes_total) { +/* +* If io_size is set, bytes_total is an exact value that does not need +* adjustment. +*/ +if (td->o.zone_size && td->o.zone_skip && bytes_total && + !fio_option_is_set (&td->o, io_size)) {unsigned int nr_zones;uint64_t zone_bytes; - zone_bytes = bytes_total + td->o.zone_size + td->o.zone_skip; - nr_zones = (zone_bytes -1 ) / (td->o.zone_size + td->o.zone_skip); +/* +* Calculate the upper bound of the number of zones that will +* be processed, including skipped bytes between zones. If this +* is larger than total_io_size (e.g. when --io_size or --size +* specify a small value), use the lower bound to avoid +* adjustments to a negative value that would result in a very +* large bytes_total and an incorrect eta. +*/ + zone_bytes = td->o.zone_size + td->o.zone_skip; + nr_zones = (bytes_total + zone_bytes -1 ) / zone_bytes; +if (bytes_total < nr_zones * td->o.zone_skip) + nr_zones = bytes_total / zone_bytes; bytes_total -= nr_zones * td->o.zone_skip; }
zbd.c +2 -29
@@ -620,12 +620,10 @@ static unsigned int zbd_zone_nr(struct zoned_block_device_info *zbd_info,static int zbd_reset_zone (struct thread_data *td,const struct fio_file *f,struct fio_zone_info *z) { -int ret; -dprint (FD_ZBD ,"%s: resetting wp of zone %u.\n" , f->file_name,zbd_zone_nr (f->zbd_info, z)); - ret =zbd_reset_range (td, f, z->start, (z+1 )->start - z->start); -return ret; + +return zbd_reset_range (td, f, z->start, (z+1 )->start - z->start); }/*
@@ -728,29 +726,6 @@ static bool zbd_dec_and_reset_write_cnt(const struct thread_data *td,return write_cnt ==0 ; } -/* Check whether the value of zbd_info.sectors_with_data is correct. */ -static void check_swd (const struct thread_data *td,const struct fio_file *f) -{ -#if 0 -struct fio_zone_info *zb, *ze, *z; -uint64_t swd; - - 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)]; - swd =0 ; -for (z = zb; z < ze; z++) { -pthread_mutex_lock (&z->mutex); - swd += z->wp - z->start; - } -pthread_mutex_lock (&f->zbd_info->mutex); -assert (f->zbd_info->sectors_with_data == swd); -pthread_mutex_unlock (&f->zbd_info->mutex); -for (z = zb; z < ze; z++) -pthread_mutex_unlock (&z->mutex); -#endif -} -void zbd_file_reset (struct thread_data *td,struct fio_file *f) {struct fio_zone_info *zb, *ze, *z;
@@ -1227,7 +1202,6 @@ enum io_u_action zbd_adjust_block(struct thread_data *td, struct io_u *io_u) }/* Check whether the zone reset threshold has been exceeded */ if (td->o.zrf.u.f) { -check_swd (td, f);if (f->zbd_info->sectors_with_data >= f->io_size * td->o.zrt.u.f &&zbd_dec_and_reset_write_cnt (td, f)) {
@@ -1248,7 +1222,6 @@ enum io_u_action zbd_adjust_block(struct thread_data *td, struct io_u *io_u) zb->reset_zone =0 ;if (zbd_reset_zone (td, f, zb) <0 ) goto eof; -check_swd (td, f); }/* Make writes occur at the write pointer */ assert (!zbd_zone_full (f, zb, min_bs));