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

Re: [Xen-devel] [PATCH] xen-block: handle resize callback



> -----Original Message-----
> From: Anthony PERARD [mailto:anthony.perard@xxxxxxxxxx]
> Sent: 29 January 2019 12:25
> To: Paul Durrant <Paul.Durrant@xxxxxxxxxx>
> Cc: xen-devel@xxxxxxxxxxxxxxxxxxxx; qemu-block@xxxxxxxxxx; qemu-
> devel@xxxxxxxxxx; Stefan Hajnoczi <stefanha@xxxxxxxxxx>; Stefano
> Stabellini <sstabellini@xxxxxxxxxx>; Kevin Wolf <kwolf@xxxxxxxxxx>; Max
> Reitz <mreitz@xxxxxxxxxx>
> Subject: Re: [PATCH] xen-block: handle resize callback
> 
> On Wed, Jan 23, 2019 at 09:08:49AM +0000, Paul Durrant wrote:
> > Some frontend drivers will handle dynamic resizing of PV disks, so set
> up
> > the BlockDevOps resize_cb() method during xen_block_realize() to allow
> > this to be done.
> 
> "will": which drivers are you thinking about? The Linux one seems to be
> able to handle resize already.

Yes, that's what I meant by 'will'... it wasn't supposed to imply future tense. 
English can be confusing :-/

> 
> About the Linux one, it check the new size only when the backend set
> its "state" to "connected" again.
> It's frontend seems to implement resize with
> 1fa73be6be65028a7543bba8f14474b42e064a1b.
> There is this is the source code:
>     static void blkfront_connect(struct blkfront_info *info)
>     {
>         // ...
>         switch (info->connected) {
>         case BLKIF_STATE_CONNECTED:
>                 /*
>                  * Potentially, the back-end may be signalling
>                  * a capacity change; update the capacity.
>                  */
> 
> In the backend, Linux does this:
>     xenbus_printf(xbt, dev->nodename, "sectors", "%llu", ...
>     /*
>      * Write the current state; we will use this to synchronize
>      * the front-end. If the current state is "connected" the
>      * front-end will get the new size information online.
>      */
>      xenbus_printf(xbt, dev->nodename, "state", "%d", dev->state);
> 
> Maybe the QEMU backend needs do to the same thing, and write its current
> state again?

Yes, that can easily be done. The Windows frontend simply re-reads 'sectors' 
whenever it sees any change in the backend area (it watches the top level key 
rather than just the 'state' key).

> 
> FreeBSD doesn't seems to care about resize.
> 
> And there is nothing in blkif.h about resizing :(.

Nope, hence the discrepancy between the frontend implementations. I can send a 
patch to xen-devel to note the existing state of affairs and perhaps 
standardize on the re-writing of 'state' being the official way to inform the 
frontend.

  Paul

> 
> Thanks,
> 
> --
> Anthony PERARD

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.