Re: [PATCH 4/4] engines/libzbc: add support for the get_max_open_zones io op

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2021/05/13 7:37, Niklas Cassel wrote:
> From: Niklas Cassel <niklas.cassel@xxxxxxx>
> 
> Add support for the new .get_max_open_zones io operation.
> 
> zbc.c will only ever call this callback for host-managed devices.
> 
> Signed-off-by: Niklas Cassel <niklas.cassel@xxxxxxx>
> ---
>  engines/libzbc.c | 21 +++++++++++++++++++++
>  1 file changed, 21 insertions(+)
> 
> diff --git a/engines/libzbc.c b/engines/libzbc.c
> index 2aacf7bb..3dde93db 100644
> --- a/engines/libzbc.c
> +++ b/engines/libzbc.c
> @@ -19,6 +19,7 @@ struct libzbc_data {
>  	struct zbc_device	*zdev;
>  	enum zbc_dev_model	model;
>  	uint64_t		nr_sectors;
> +	uint32_t		max_open_seq_req;
>  };
>  
>  static int libzbc_get_dev_info(struct libzbc_data *ld, struct fio_file *f)
> @@ -32,6 +33,7 @@ static int libzbc_get_dev_info(struct libzbc_data *ld, struct fio_file *f)
>  	zbc_get_device_info(ld->zdev, zinfo);
>  	ld->model = zinfo->zbd_model;
>  	ld->nr_sectors = zinfo->zbd_sectors;
> +	ld->max_open_seq_req = zinfo->zbd_max_nr_open_seq_req;
>  
>  	dprint(FD_ZBD, "%s: vendor_id:%s, type: %s, model: %s\n",
>  	       f->file_name, zinfo->zbd_vendor_id,
> @@ -335,6 +337,24 @@ err:
>  	return -ret;
>  }
>  
> +static int libzbc_get_max_open_zones(struct thread_data *td, struct fio_file *f,
> +				     unsigned int *max_open_zones)
> +{
> +	struct libzbc_data *ld;
> +	int ret;
> +
> +	ret = libzbc_open_dev(td, f, &ld);
> +	if (ret)
> +		return ret;
> +
> +	if (ld->max_open_seq_req == ZBC_NO_LIMIT)
> +		*max_open_zones = 0;
> +	else
> +		*max_open_zones = ld->max_open_seq_req;
> +
> +	return 0;
> +}
> +
>  ssize_t libzbc_rw(struct thread_data *td, struct io_u *io_u)
>  {
>  	struct libzbc_data *ld = td->io_ops_data;
> @@ -414,6 +434,7 @@ FIO_STATIC struct ioengine_ops ioengine = {
>  	.get_zoned_model	= libzbc_get_zoned_model,
>  	.report_zones		= libzbc_report_zones,
>  	.reset_wp		= libzbc_reset_wp,
> +	.get_max_open_zones	= libzbc_get_max_open_zones,
>  	.queue			= libzbc_queue,
>  	.flags			= FIO_SYNCIO | FIO_NOEXTEND | FIO_RAWIO,
>  };
> 

Looks good.

Reviewed-by: Damien Le Moal <damien.lemoal@xxxxxxx>

-- 
Damien Le Moal
Western Digital Research




[Index of Archives]     [Linux Kernel]     [Linux SCSI]     [Linux IDE]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux