Transactional consistency scheme
First Claim
Patent Images
1. A proxy device, comprising:
- a write log configured to buffer data for write operations while waiting for acknowledgements of the write operations from a storage device;
a write pointer configured to identify write entries in the write log for storing the data;
an acknowledge pointer configured to track the write operations that have received acknowledgments back from the storage device; and
a processor configured to select the write entries for storing the data for the write operations according to the write pointer and acknowledge pointer, wherein the processor is configured to copy the data currently referenced by the acknowledge pointer into an overflow log when the write pointer comes within a given position of the acknowledge pointer, wherein the controller processor is further configured to operate a second write pointer that identifies a next entry in the overflow log for storing the data from the write log, and a second acknowledge pointer that identifies an overflow entry containing the data for a longest pending one of the write operations in the overflow log.
9 Assignments
0 Petitions
Accused Products
Abstract
A proxy manages write operations between devices that initiate write operations and one or more storage devices that store data for the write operations. A write log buffers the data for the write operations while the proxy waits for acknowledgments back from the storage device. The proxy is configured to copy at least some of the data from the write log into an overflow log when the data from the write operations is about to overflow the write log. The proxy device is further configured to maintain data consistency by delaying or blocking read operations until associated data from previously received write operations is acknowledged by the storage device.
88 Citations
18 Claims
-
1. A proxy device, comprising:
-
a write log configured to buffer data for write operations while waiting for acknowledgements of the write operations from a storage device; a write pointer configured to identify write entries in the write log for storing the data; an acknowledge pointer configured to track the write operations that have received acknowledgments back from the storage device; and a processor configured to select the write entries for storing the data for the write operations according to the write pointer and acknowledge pointer, wherein the processor is configured to copy the data currently referenced by the acknowledge pointer into an overflow log when the write pointer comes within a given position of the acknowledge pointer, wherein the controller processor is further configured to operate a second write pointer that identifies a next entry in the overflow log for storing the data from the write log, and a second acknowledge pointer that identifies an overflow entry containing the data for a longest pending one of the write operations in the overflow log. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. An apparatus, comprising:
-
a processor configured to; operate as a proxy for receiving write operations from initiator devices on behalf of a storage device and forwarding the write operations to the storage device that executes the write operations; buffer data for the write operations into a write log while waiting for acknowledgments from the storage device indicating successful completion of the write operations forwarded by the processor; copy the data from the write log to an overflow log based on an amount of the data in the write log; invalidate data in the write log in response to the acknowledgements received from the storage device indicating successful execution of the write operations associated with the data in the write log; and invalidate data in the overflow log in response to the acknowledgements received from the storage device indicating successful execution of the write operations associated with the data in the overflow log. - View Dependent Claims (10, 11, 12, 13)
-
-
14. An apparatus, comprising:
-
a processor configured to operate as a proxy for write operations between initiator devices that initiate write operations and a storage device that executes the write operations; a write log configured to buffer data for the write operations while the processor waits for acknowledgments from the storage device; and an overflow log, wherein the processor is configured to copy the data from the write log to the overflow, wherein the processor is configured to operate a second write pointer that identifies a next entry in the overflow log for storing the data from the write log, and a second acknowledge pointer that identifies an overflow entry containing the data for a longest pending one of the write operations in the overflow log. - View Dependent Claims (15)
-
-
16. A non-volatile computer-readable storage device comprising executable instructions that, in response to execution by a computing device, cause the computing device to:
-
receive a write operation; log data from the write operation into a write log; forward the write operation to a storage system; monitor for an acknowledge of the write operation from the storage system; write over the data in the write log after an acknowledge is received from the storage system; copy the data for the write operation into an overflow; receive the acknowledge for the write operation from the storage system; advance a first acknowledge pointer for the write log when the data for the write operation is still located in the write log; and advance a second acknowledge pointer for the overflow log when the data associated with the write operation is located in the overflow log. - View Dependent Claims (17)
-
-
18. A non-volatile computer-readable storage device comprising executable instructions configured to instruct a computing device to:
-
receive a write operation; log data from the write operation into a write log; copy the data for the write operation into an overflow log based on an amount of the data in the write log; identify a write pointer for the overflow log; write the data from the write operation into a write entry in the overflow log corresponding with the write pointer; advance the write pointer; advance an acknowledge pointer for the overflow log in response to receiving an acknowledge of the write operation; and write data for a subsequent write operation-into the write log in response to the acknowledge pointer for the overflow log reaching the write pointer.
-
Specification