diff options
Diffstat (limited to 'zbd.c')
-rw-r--r-- | zbd.c | 17 |
1 files changed, 12 insertions, 5 deletions
@@ -31,7 +31,10 @@ int zbd_get_zoned_model(struct thread_data *td, struct fio_file *f, { int ret; - ret = blkzoned_get_zoned_model(td, f, model); + if (td->io_ops && td->io_ops->get_zoned_model) + ret = td->io_ops->get_zoned_model(td, f, model); + else + ret = blkzoned_get_zoned_model(td, f, model); if (ret < 0) { td_verror(td, errno, "get zoned model failed"); log_err("%s: get zoned model failed (%d).\n", @@ -62,7 +65,10 @@ int zbd_report_zones(struct thread_data *td, struct fio_file *f, { int ret; - ret = blkzoned_report_zones(td, f, offset, zones, nr_zones); + if (td->io_ops && td->io_ops->report_zones) + ret = td->io_ops->report_zones(td, f, offset, zones, nr_zones); + else + ret = blkzoned_report_zones(td, f, offset, zones, nr_zones); if (ret < 0) { td_verror(td, errno, "report zones failed"); log_err("%s: report zones from sector %llu failed (%d).\n", @@ -92,7 +98,10 @@ int zbd_reset_wp(struct thread_data *td, struct fio_file *f, { int ret; - ret = blkzoned_reset_wp(td, f, offset, length); + if (td->io_ops && td->io_ops->reset_wp) + ret = td->io_ops->reset_wp(td, f, offset, length); + else + ret = blkzoned_reset_wp(td, f, offset, length); if (ret < 0) { td_verror(td, errno, "resetting wp failed"); log_err("%s: resetting wp for %llu sectors at sector %llu failed (%d).\n", @@ -623,7 +632,6 @@ static int zbd_reset_range(struct thread_data *td, struct fio_file *f, struct fio_zone_info *zb, *ze, *z; int ret = 0; - assert(f->fd != -1); assert(is_valid_offset(f, offset + length - 1)); switch (f->zbd_info->model) { @@ -699,7 +707,6 @@ static int zbd_reset_zones(struct thread_data *td, struct fio_file *f, dprint(FD_ZBD, "%s: examining zones %u .. %u\n", f->file_name, zbd_zone_nr(f->zbd_info, zb), zbd_zone_nr(f->zbd_info, ze)); - assert(f->fd != -1); for (z = zb; z < ze; z++) { if (!zbd_zone_swr(z)) continue; |