X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=engines%2Fskeleton_external.c;h=7f3e4cb3a13c7d9cdb4fcee9b877f5a9b26e9e5d;hb=1e30d8d005a568169c0749f5fc6fb2d5f09dcc97;hp=7e08afbb0fb34ed415d6a5548903c675baf97f70;hpb=4634d057febe9b4d7028e6f02963a8fd8996ac6a;p=fio.git diff --git a/engines/skeleton_external.c b/engines/skeleton_external.c index 7e08afbb..7f3e4cb3 100644 --- a/engines/skeleton_external.c +++ b/engines/skeleton_external.c @@ -3,7 +3,7 @@ * * Should be compiled with: * - * gcc -Wall -O2 -g -shared -rdynamic -fPIC -o skeleton_external.o skeleton_external.c + * gcc -Wall -O2 -g -D_GNU_SOURCE -include ../config-host.h -shared -rdynamic -fPIC -o skeleton_external.o skeleton_external.c * (also requires -D_GNU_SOURCE -DCONFIG_STRSEP on Linux) * */ @@ -90,8 +90,8 @@ static int fio_skeleton_cancel(struct thread_data *td, struct io_u *io_u) * io_u->xfer_buflen. Residual data count may be set in io_u->resid * for a short read/write. */ -static enum fio_q_status -fio_skeleton_queue(struct thread_data *td, struct io_u *io_u) +static enum fio_q_status fio_skeleton_queue(struct thread_data *td, + struct io_u *io_u) { /* * Double sanity check to catch errant write on a readonly setup @@ -153,6 +153,46 @@ static int fio_skeleton_close(struct thread_data *td, struct fio_file *f) return generic_close_file(td, f); } +/* + * Hook for getting the zoned model of a zoned block device for zonemode=zbd. + * The zoned model can be one of (see zbd_types.h): + * - ZBD_IGNORE: skip regular files + * - ZBD_NONE: regular block device (zone emulation will be used) + * - ZBD_HOST_AWARE: host aware zoned block device + * - ZBD_HOST_MANAGED: host managed zoned block device + */ +static int fio_skeleton_get_zoned_model(struct thread_data *td, + struct fio_file *f, enum zbd_zoned_model *model) +{ + *model = ZBD_NONE; + return 0; +} + +/* + * Hook called for getting zone information of a ZBD_HOST_AWARE or + * ZBD_HOST_MANAGED zoned block device. Up to @nr_zones zone information + * structures can be reported using the array zones for zones starting from + * @offset. The number of zones reported must be returned or a negative error + * code in case of error. + */ +static int fio_skeleton_report_zones(struct thread_data *td, struct fio_file *f, + uint64_t offset, struct zbd_zone *zones, + unsigned int nr_zones) +{ + return 0; +} + +/* + * Hook called for resetting the write pointer position of zones of a + * ZBD_HOST_AWARE or ZBD_HOST_MANAGED zoned block device. The write pointer + * position of all zones in the range @offset..@offset + @length must be reset. + */ +static int fio_skeleton_reset_wp(struct thread_data *td, struct fio_file *f, + uint64_t offset, uint64_t length) +{ + return 0; +} + /* * Note that the structure is exported, so that fio can get it via * dlsym(..., "ioengine"); for (and only for) external engines. @@ -169,6 +209,9 @@ struct ioengine_ops ioengine = { .cleanup = fio_skeleton_cleanup, .open_file = fio_skeleton_open, .close_file = fio_skeleton_close, + .get_zoned_model = fio_skeleton_get_zoned_model, + .report_zones = fio_skeleton_report_zones, + .reset_wp = fio_skeleton_reset_wp, .options = options, .option_struct_size = sizeof(struct fio_skeleton_options), };