Skip to content

Commit

Permalink
zbd: remove zbd_zoned_model ZBD_IGNORE
Browse files Browse the repository at this point in the history
For a job with zonemode=zbd, we do not want any file to be ignored.
Each file's file type in that job should be supported by either zbd.c
or the ioengine. If not, we should return an error.
This way, ZBD_IGNORE becomes redundant and can be removed.

By removing ZBD_IGNORE, we know that all files belonging to a job that
has zonemode=zbd set, will either be a zoned block device, or emulate
a zoned block device.

This means that for jobs that have zonemode=zbd, f->zbd_info will always
be non-NULL. This will make the zbd code slightly easier to reason about
and to maintain.

When removing zbd_zoned_model ZBD_IGNORE, define the new first enum value
as 0x1, so that we avoid potential ABI problems with existing binaries.

Signed-off-by: Niklas Cassel <[email protected]>
Reviewed-by: Damien Le Moal <[email protected]>
Signed-off-by: Jens Axboe <[email protected]>
  • Loading branch information
Niklas Cassel authored and axboe committed Jun 14, 2021
1 parent 9db0cde commit 2c7dd23
Show file tree
Hide file tree
Showing 5 changed files with 8 additions and 15 deletions.
6 changes: 2 additions & 4 deletions engines/libzbc.c
Original file line number Diff line number Diff line change
Expand Up @@ -180,10 +180,8 @@ static int libzbc_get_zoned_model(struct thread_data *td, struct fio_file *f,
struct libzbc_data *ld;
int ret;

if (f->filetype != FIO_TYPE_BLOCK && f->filetype != FIO_TYPE_CHAR) {
*model = ZBD_IGNORE;
return 0;
}
if (f->filetype != FIO_TYPE_BLOCK && f->filetype != FIO_TYPE_CHAR)
return -EINVAL;

ret = libzbc_open_dev(td, f, &ld);
if (ret)
Expand Down
1 change: 0 additions & 1 deletion engines/skeleton_external.c
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,6 @@ static int fio_skeleton_close(struct thread_data *td, struct fio_file *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
Expand Down
6 changes: 2 additions & 4 deletions oslib/linux-blkzoned.c
Original file line number Diff line number Diff line change
Expand Up @@ -140,10 +140,8 @@ int blkzoned_get_zoned_model(struct thread_data *td, struct fio_file *f,
{
char *model_str = NULL;

if (f->filetype != FIO_TYPE_BLOCK) {
*model = ZBD_IGNORE;
return 0;
}
if (f->filetype != FIO_TYPE_BLOCK)
return -EINVAL;

*model = ZBD_NONE;

Expand Down
3 changes: 1 addition & 2 deletions zbd.c
Original file line number Diff line number Diff line change
Expand Up @@ -661,8 +661,6 @@ static int zbd_create_zone_info(struct thread_data *td, struct fio_file *f)
return ret;

switch (zbd_model) {
case ZBD_IGNORE:
return 0;
case ZBD_HOST_AWARE:
case ZBD_HOST_MANAGED:
ret = parse_zone_info(td, f);
Expand All @@ -680,6 +678,7 @@ static int zbd_create_zone_info(struct thread_data *td, struct fio_file *f)
return -EINVAL;
}

assert(f->zbd_info);
f->zbd_info->model = zbd_model;

ret = zbd_set_max_open_zones(td, f);
Expand Down
7 changes: 3 additions & 4 deletions zbd_types.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,9 @@
* Zoned block device models.
*/
enum zbd_zoned_model {
ZBD_IGNORE, /* Ignore file */
ZBD_NONE, /* No zone support. Emulate zones. */
ZBD_HOST_AWARE, /* Host-aware zoned block device */
ZBD_HOST_MANAGED, /* Host-managed zoned block device */
ZBD_NONE = 0x1, /* No zone support. Emulate zones. */
ZBD_HOST_AWARE = 0x2, /* Host-aware zoned block device */
ZBD_HOST_MANAGED = 0x3, /* Host-managed zoned block device */
};

/*
Expand Down

0 comments on commit 2c7dd23

Please sign in to comment.