Reverse order request queueing by para-virtual device drivers
First Claim
1. A system comprising:
- a memory including a ring buffer having a plurality of slots, wherein the ring buffer is associated with a virtual device; and
a guest driver associated with the ring buffer, wherein the guest driver is configured to;
detect that the guest driver is running on the virtual device,receive a batch of requests having an initial request and a final request ending the batch of requests,walk the ring buffer starting from an original slot,identify a last request in the batch of requests that can be accommodated by an available slot in the ring buffer,walk the ring buffer backwards from an end slot associated with the last request to the original slot, wherein the end slot is one of a first slot associated with the final request ending the batch of requests and a second slot preceding an unavailable slot, andexecute each respective request from the last request to the initial request for each respective slot from the end slot to the original slot in the ring buffer.
1 Assignment
0 Petitions
Accused Products
Abstract
A system includes a memory including a ring buffer having a plurality of slots and a guest driver associated with the ring buffer, which is associated with a virtual device. The guest driver is configured to detect that the guest driver is running on the virtual device, receive a batch of requests having an initial request and a final request, walk the ring buffer starting from an original slot, identify a last request in the batch that can be accommodated by an available slot, walk the ring buffer backwards from an end slot associated with the last request to the original slot, and execute each respective request from the last request to the initial request for each respective slot from the end slot to the original slot. The end slot is either a slot associated with the final request ending the batch of requests or a slot preceding an unavailable slot.
-
Citations
20 Claims
-
1. A system comprising:
-
a memory including a ring buffer having a plurality of slots, wherein the ring buffer is associated with a virtual device; and a guest driver associated with the ring buffer, wherein the guest driver is configured to; detect that the guest driver is running on the virtual device, receive a batch of requests having an initial request and a final request ending the batch of requests, walk the ring buffer starting from an original slot, identify a last request in the batch of requests that can be accommodated by an available slot in the ring buffer, walk the ring buffer backwards from an end slot associated with the last request to the original slot, wherein the end slot is one of a first slot associated with the final request ending the batch of requests and a second slot preceding an unavailable slot, and execute each respective request from the last request to the initial request for each respective slot from the end slot to the original slot in the ring buffer. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A method comprising:
-
detecting, by a guest driver, that the guest driver is running on a virtual device; receiving, by the guest driver, a batch of requests having an initial request and a final request ending the batch of requests; walking, by the guest driver, a ring buffer starting from an original slot; identifying, by the guest driver, a last request in the batch of requests that can be accommodated by an available slot in the ring buffer; walking, by the guest driver, the ring buffer backwards from an end slot associated with the last request to the original slot, wherein the end slot is one of a first slot associated with the final request ending the batch of requests and a second slot preceding an unavailable slot; and executing, by the guest driver, each respective request from the last request to the initial request for each respective slot from the end slot to the original slot in the ring buffer. - View Dependent Claims (13, 14, 15, 16, 17, 18, 19)
-
-
20. A method comprising:
-
determining, by a guest operating system, that a guest driver is running on a virtual device; receiving, by the guest operating system, a batch of requests having an initial request and a final request ending the batch of requests; testing, by the guest operating system, one or more slots in a ring buffer starting at an original slot; identifying, by the guest operating system, a last request in the batch of requests that can be accommodated by an available slot in the ring buffer; advancing, by the guest operating system, from an end slot associated with the last request to the original slot, wherein the end slot is one of a first slot associated with the final request ending the batch of requests and a second slot preceding an unavailable slot; and executing, by the guest operating system, each respective request from the last request to the initial request for each respective slot from the end slot to the original slot in the ring buffer.
-
Specification