X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=zbd.c;h=7728f71d25a5b71175e662b4445c94013da19fc1;hp=aa08b81115342342d383e3705aa2c25a17b9f277;hb=615555bbac860c9af51a6774d70a59312db93e2b;hpb=72176dc7163b12002b1d704bfdea5b19690ff8a0 diff --git a/zbd.c b/zbd.c index aa08b811..7728f71d 100644 --- a/zbd.c +++ b/zbd.c @@ -726,6 +726,28 @@ 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 zbd_check_swd(const struct fio_file *f) +{ +#if 0 + 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)]; + 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; @@ -1077,6 +1099,8 @@ static void zbd_post_submit(const struct io_u *io_u, bool success) } unlock: pthread_mutex_unlock(&z->mutex); + + zbd_check_swd(io_u->file); } bool zbd_unaligned_write(int error_code) @@ -1129,6 +1153,8 @@ enum io_u_action zbd_adjust_block(struct thread_data *td, struct io_u *io_u) io_u->ddir == DDIR_READ && td->o.read_beyond_wp) return io_u_accept; + zbd_check_swd(f); + pthread_mutex_lock(&zb->mutex); switch (io_u->ddir) { case DDIR_READ: