Currently, by updating it in __BlkifRingPushRequests(), the code is
attempting to defer events until all of the posted requests have responses
on the ring. This is likely to lead to a cycle of fill...empty...fill...
empty etc., which is bad for performance.
This patch instead updates rsp_event when BlkifRingPoll() completes, such
that the very next response placed on the ring by the backend should
cause an event to be sent.
Signed-off-by: Owen Smith <owen.smith@citrix.com>
[Expanded commit message]
Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
KeMemoryBarrier();
BlkifRing->Front.rsp_cons = rsp_cons;
+ BlkifRing->Shared->rsp_event = rsp_cons + 1;
}
done:
#pragma warning (push)
#pragma warning (disable:4244)
- BlkifRing->Shared->rsp_event = BlkifRing->Front.req_prod_pvt;
-
// Make the requests visible to the backend
RING_PUSH_REQUESTS_AND_CHECK_NOTIFY(&BlkifRing->Front, Notify);