[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 |