[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Minios-devel] [UNIKRAFT PATCH v3 07/17] plat/xen/drivers/blk: Create blkfront queues
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; }; -- 2.17.1 _______________________________________________ Minios-devel mailing list Minios-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/minios-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |