Re: [PATCH RFC 4/4] xen-block: introduce a new request type to unmapgrants

From: Roger Pau Monné
Date: Wed Jul 10 2013 - 05:19:31 EST


On 08/07/13 21:41, Konrad Rzeszutek Wilk wrote:
> On Mon, Jul 08, 2013 at 03:03:27PM +0200, Roger Pau Monne wrote:
>> Right now blkfront has no way to unmap grant refs, if using persistent
>> grants once a grant is used blkfront cannot assure if blkback will
>> have this grant mapped or not. To solve this problem, a new request
>> type (BLKIF_OP_UNMAP) that allows requesting blkback to unmap certain
>> grants is introduced.
>
> I don't think this is the right way of doing it. It is a new operation
> (BLKIF_OP_UNMAP) that has nothing to do with READ/WRITE. All it is
> is just some way for the frontend to say: unmap this grant if you can.
>
> As such I would think a better mechanism would be to have a new
> grant mechanism that can say: 'I am done with this grant you can
> remove it' - that is called to the hypervisor. The hypervisor
> can then figure out whether it is free or not and lazily delete it.
> (And the guest would be notified when it is freed).

I have a patch that I think implements something quite similar to what
you describe, but it doesn't require any new patch to the hypervisor
side. From blkfront we can check what grants blkback has chosen to
persistently map and only keep those.

This is different from my previous approach, were blkfront could
specifically request blkback to unmap certain grants, but it still
prevents blkfront from hoarding all grants (unless blkback is
persistently mapping every possible grant). With this patch the number
of persistent grants in blkfront will be the same as in blkback, so
basically the backend can control how many grants will be persistently
mapped.

---