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

Re: [Xen-devel] [PATCH 2/2] block/xen-blkfront: Handle non-indirect grant with 64KB pages



Hi Roger,

On 06/10/2015 10:39, Roger Pau Monnà wrote:
El 05/10/15 a les 19.05, Julien Grall ha escrit:
On 05/10/15 17:01, Roger Pau Monnà wrote:
El 11/09/15 a les 21.32, Julien Grall ha escrit:
                ring_req->u.rw.nr_segments = num_grant;
+               if (unlikely(require_extra_req)) {
+                       id2 = blkif_ring_get_request(info, req, &ring_req2);

How can you guarantee that there's always going to be another free
request? AFAICT blkif_queue_rq checks for RING_FULL, but you don't
actually know if there's only one slot or more than one available.

Because the depth of the queue is divided by 2 when the extra request is
used (see xlvbd_init_blk_queue).

I just noticed that I didn't mention this restriction in the commit message. I will do it in the next revision.

I see, that's quite restrictive but I guess it's better than introducing
a new ring macro in order to figure out if there are at least two free
slots.

I actually didn't think about your suggestion. I choose to divide by two based on the assumption that the block framework will always try to send a request with the maximum data possible.

I don't know if this assumption is correct as I'm not fully aware how the block framework is working.

If it's valid, in the case of 64KB guest, the maximum size of a request would be 64KB when indirect segment is not supported. So we would end up with a lot of 64KB request which will require 2 ring request.

Regards,

--
Julien Grall

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel

 


Rackspace

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