Consistency without ordering dependency
First Claim
1. A method implemented at least in part by a computer, the method comprising:
- obtaining one or more indications of objects that are involved in a transaction;
locating a first set of storage locations of a store for the objects that are involved in the transaction;
creating logical copies of the objects that are modified in context of the transaction;
determining a second set of storage locations of the store for the logical copies;
creating an association that binds the logical copies of the objects in an atomic unit;
sending one or more requests to write the association and the logical copies to the store while maintaining originals of the objects on the store; and
after a failure occurs, performing a recovery operation comprising;
determining whether a copy of all of the objects as modified in the context of the transaction are in the store, anddiscarding modifications for the copy of all of the objects in the store that are modified in the context of the transaction when a copy of an object corresponding to one of the objects as modified in the context of the transaction is determined not to be in the store.
2 Assignments
0 Petitions
Accused Products
Abstract
Aspects of the subject matter described herein relate to maintaining consistency in a storage system. In aspects, one or more objects may be updated in the context of a transaction. In conjunction with updating the objects, logical copies of the objects may be obtained and modified. A request to write the updated logical copies is sent to a storage controller. The logical copies do not overwrite the original copies. In conjunction with sending the request, a data structure is provided for the storage controller to store on the disk. The data structure indicates the one or more objects that were supposed to be written to disk and may include verification data to indicate the content that was supposed to be written to disk. During recovery, this data structure may be used to determine whether all of the object(s) were correctly written to disk.
15 Citations
20 Claims
-
1. A method implemented at least in part by a computer, the method comprising:
-
obtaining one or more indications of objects that are involved in a transaction; locating a first set of storage locations of a store for the objects that are involved in the transaction; creating logical copies of the objects that are modified in context of the transaction; determining a second set of storage locations of the store for the logical copies; creating an association that binds the logical copies of the objects in an atomic unit; sending one or more requests to write the association and the logical copies to the store while maintaining originals of the objects on the store; and after a failure occurs, performing a recovery operation comprising; determining whether a copy of all of the objects as modified in the context of the transaction are in the store, and discarding modifications for the copy of all of the objects in the store that are modified in the context of the transaction when a copy of an object corresponding to one of the objects as modified in the context of the transaction is determined not to be in the store. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A computer storage medium having computer-executable instructions, which when executed perform actions, comprising:
-
obtaining an indication of an object involved in an update of one or more transactions; locating the object in a first storage location of a store; creating a logical copy of the object that includes changes made to the object in context of the one or more transactions; determining a second storage location of the store for storing the logical copy; sending a request to write the logical copy as changed to the second storage location; in conjunction with sending the request, providing data that indicates a next location at which a logical copy pertaining to another transaction, if any, is to be written; updating a volatile data structure to indicate that the logical copy is stored in the second storage location; and sending a request to write changes to the volatile data structure to the store and in conjunction with sending the request to write changes, sending a flush command to the store, the flush command instructing a controller of the store to write cache associated with the store to non-volatile memory of the store. - View Dependent Claims (13, 14, 15, 16)
-
-
17. In a computing environment, a system, comprising:
-
an interface operable to receive a request to modify an object involved in a transaction; a store having a non-volatile memory and a volatile memory thereon; a storage controller that potentially allows writes to the non-volatile memory to proceed in an order other than an order in which requests for the writes were received; and an I/O manager operable to perform actions, comprising; locating the object in a first storage location of the store, creating a logical copy of the object that includes changes made to the object in context of the transaction, determining a second storage location of the store for storing the logical copy, sending a request to write the logical copy as changed to the second storage location, and updating a volatile data structure to indicate that the logical copy is stored in the second storage location; and a recovery manager operable to perform actions comprising; determining whether the logical copy of the object as changed and a logical copy, as changed, of each of at least one other object atomically bound with the object were written to the second storage location, and discarding changes written to the second storage location, corresponding to the logical copy of the object and the logical copy of the at least one other object when changes corresponding to at least one of the logical copy of the object and the logical copy of each of the at least one other object are determined not to be written to the second storage location. - View Dependent Claims (18, 19, 20)
-
Specification