|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Minios-devel] [UNIKRAFT PATCH v3 07/17] plat/xen/drivers/blk: Create blkfront queues
Reviewed-by: Costin Lupu <costin.lupu@xxxxxxxxx>
On 10/30/19 5:54 PM, Roxana Nicolescu wrote:
> This patch allocates the queues used for communication with the device.
> One queue is responsible for handling both requests and responses
> to / from the device.
>
> Signed-off-by: Roxana Nicolescu <nicolescu.roxana1996@xxxxxxxxx>
> ---
> plat/xen/drivers/blk/blkfront.c | 13 ++++++++++++-
> plat/xen/drivers/blk/blkfront.h | 14 ++++++++++++++
> 2 files changed, 26 insertions(+), 1 deletion(-)
>
> diff --git a/plat/xen/drivers/blk/blkfront.c b/plat/xen/drivers/blk/blkfront.c
> index ae98a79c..58d33ddd 100644
> --- a/plat/xen/drivers/blk/blkfront.c
> +++ b/plat/xen/drivers/blk/blkfront.c
> @@ -66,15 +66,25 @@ static int blkfront_configure(struct uk_blkdev *blkdev,
>
> dev = to_blkfront(blkdev);
> dev->nb_queues = conf->nb_queues;
> + dev->queues = uk_calloc(drv_allocator, dev->nb_queues,
> + sizeof(*dev->queues));
> + if (!dev->queues)
> + return -ENOMEM;
> +
> err = blkfront_xb_write_nb_queues(dev);
> if (err) {
> uk_pr_err("Failed to write nb of queues: %d.\n", err);
> - goto out;
> + goto out_err;
> }
>
> uk_pr_info(DRIVER_NAME": %"PRIu16" configured\n", dev->uid);
> out:
> return err;
> +out_err:
> + uk_free(drv_allocator, dev->queues);
> + goto out;
> +}
> + return err;
> }
>
> static int blkfront_unconfigure(struct uk_blkdev *blkdev)
> @@ -83,6 +93,7 @@ static int blkfront_unconfigure(struct uk_blkdev *blkdev)
>
> UK_ASSERT(blkdev != NULL);
> dev = to_blkfront(blkdev);
> + uk_free(drv_allocator, dev->queues);
>
> return 0;
> }
> diff --git a/plat/xen/drivers/blk/blkfront.h b/plat/xen/drivers/blk/blkfront.h
> index 5833f826..6b7d5cad 100644
> --- a/plat/xen/drivers/blk/blkfront.h
> +++ b/plat/xen/drivers/blk/blkfront.h
> @@ -43,6 +43,18 @@
> */
> #include <uk/blkdev.h>
>
> +/*
> + * Structure used to describe a queue used for both requests and responses
> + */
> +struct uk_blkdev_queue {
> + /* Allocator for this queue. */
> + struct uk_alloc *a;
> + /* The libukblkdev queue identifier */
> + uint16_t queue_id;
> + /* Reference to the Blkfront Device */
> + struct blkfront_dev *dev;
> +};
> +
> /**
> * Structure used to describe the Blkfront device.
> */
> @@ -55,6 +67,8 @@ struct blkfront_dev {
> blkif_vdev_t handle;
> /* Number of configured queues used for requests */
> uint16_t nb_queues;
> + /* Vector of queues used for communication with backend */
> + struct uk_blkdev_queue *queues;
> /* The blkdev identifier */
> __u16 uid;
> };
>
_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |