|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Minios-devel] [UNIKRAFT PATCH v3 12/17] plat/xen/drivers/blk: Read device capabilities
Reviewed-by: Costin Lupu <costin.lupu@xxxxxxxxx>
On 10/30/19 5:54 PM, Roxana Nicolescu wrote:
> This patch introduces the function which reads the capabilities
> from Xenstore, after connection to backend.
>
> Signed-off-by: Roxana Nicolescu <nicolescu.roxana1996@xxxxxxxxx>
> ---
> plat/xen/drivers/blk/blkfront_xs.c | 43 ++++++++++++++++++++++++++++++
> 1 file changed, 43 insertions(+)
>
> diff --git a/plat/xen/drivers/blk/blkfront_xs.c
> b/plat/xen/drivers/blk/blkfront_xs.c
> index 7775f7ec..732e92f0 100644
> --- a/plat/xen/drivers/blk/blkfront_xs.c
> +++ b/plat/xen/drivers/blk/blkfront_xs.c
> @@ -165,6 +165,43 @@ out:
> return err;
> }
>
> +/*
> + * Get device capabilities (sector_size, etc)
> + * from the backend after it switched to Connected State.
> + */
> +static int blkfront_xb_get_capabilities(struct blkfront_dev *blkdev)
> +{
> + struct xenbus_device *xendev;
> + char *mode;
> + int err = 0;
> +
> + UK_ASSERT(blkdev != NULL);
> + xendev = blkdev->xendev;
> + err = xs_scanf(XBT_NIL, xendev->otherend, "sectors",
> + "%lu", &blkdev->blkdev.capabilities.sectors);
> + if (err < 0) {
> + uk_pr_err("Failed to read nb_sectors from xs: %d\n", err);
> + return err;
> + }
> +
> + err = xs_scanf(XBT_NIL, xendev->otherend, "sector-size",
> + "%lu", &blkdev->blkdev.capabilities.ssize);
> + if (err < 0) {
> + uk_pr_err("Failed to read ssize from xs: %d\n", err);
> + return err;
> + }
> +
> + mode = xs_read(XBT_NIL, xendev->otherend, "mode");
> + if (PTRISERR(mode)) {
> + uk_pr_err("Failed to read mode from xs: %d.\n", err);
> + return PTR2ERR(mode);
> + }
> +
> + blkdev->blkdev.capabilities.mode = (*mode == 'r') ? O_RDONLY : O_RDWR;
> +
> + free(mode);
> + return 0;
> +}
>
> /* Write info for a specific queue in xenstore.
> * If there is only one queue, the path does not
> @@ -452,6 +489,12 @@ int blkfront_xb_connect(struct blkfront_dev *blkdev)
> if (err)
> goto err;
>
> + err = blkfront_xb_get_capabilities(blkdev);
> + if (err) {
> + uk_pr_err("Failed to extract info from backend: %d.\n", err);
> + goto err;
> + }
> +
> err:
> return err;
> }
>
_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |