Apparatus, system, and method for conditional and atomic storage operations
First Claim
1. A method, comprising:
- storing data of an atomic storage request in one or more storage operations on a non-volatile storage medium of a non-volatile storage device;
allocating one or more logical identifiers to satisfy the atomic storage request in a logical address space of the non-volatile storage device;
in response to completion of the one or more storage operations,updating storage metadata on the non-volatile storage medium to assign the allocated logical identifiers to storage locations comprising data of the atomic storage request, andupdating the storage metadata to indicate that the atomic storage request is complete; and
in response to failure of one or more of the storage operations, rolling back the atomic storage request by deallocating the allocated logical identifiers in response to failure of one or more of the storage operations.
8 Assignments
0 Petitions
Accused Products
Abstract
An apparatus, system, and method are disclosed for implementing conditional storage operations. Storage clients access and allocate portions of an address space of a non-volatile storage device. A conditional storage request is provided, which causes data to be stored to the non-volatile storage device on the condition that the address space of the device can satisfy the entire request. If only a portion of the request can be satisfied, the conditional storage request may be deferred or fail. An atomic storage request is provided, which may comprise one or more storage operations. The atomic storage request succeeds if all of the one or more storage operations are complete successfully. If one or more of the storage operations fails, the atomic storage request is invalidated, which may comprise deallocating logical identifiers of the request and/or invalidating data on the non-volatile storage device pertaining to the request.
-
Citations
19 Claims
-
1. A method, comprising:
-
storing data of an atomic storage request in one or more storage operations on a non-volatile storage medium of a non-volatile storage device; allocating one or more logical identifiers to satisfy the atomic storage request in a logical address space of the non-volatile storage device; in response to completion of the one or more storage operations, updating storage metadata on the non-volatile storage medium to assign the allocated logical identifiers to storage locations comprising data of the atomic storage request, and updating the storage metadata to indicate that the atomic storage request is complete; and in response to failure of one or more of the storage operations, rolling back the atomic storage request by deallocating the allocated logical identifiers in response to failure of one or more of the storage operations. - View Dependent Claims (2, 3, 4)
-
-
5. A method, comprising:
-
receiving an atomic storage request to store data on a non-volatile storage medium of a non-volatile storage device; allocating, in a logical address space of the non-volatile storage device, a logical identifier for each data packet corresponding to the atomic storage request; storing a first indicator on the non-volatile storage medium of the non-volatile storage device which indicates that the atomic storage request is in progress; storing the data in a log based format on the non-volatile storage medium of the non-volatile storage device; in response to storing the data of the atomic storage request, updating storage metadata on the non-volatile storage medium to assign the allocated logical identifiers to storage locations comprising the data of the atomic storage request, and invalidating the first indicator stored on the non-volatile storage medium; and deallocating the allocated logical identifiers, in response to a failure during storage of the data of the atomic storage request. - View Dependent Claims (6, 7, 8, 9, 10, 11)
-
-
12. A method, comprising:
-
receiving an atomic storage request to store data comprising multiple data packets on a solid state storage device, wherein each data packet contains a logical identifier associated with the data packet; allocating, in a logical address space of the solid state storage device, logical identifiers for a plurality of data packets corresponding to the atomic storage request; storing the data packets on the solid state storage device, wherein the data packets stored on the solid state storage device comprise an indicator of the progress of the atomic storage request; in response to storing one or more data packets of the atomic storage request, updating storage metadata on the solid state storage device to assign the allocated logical identifiers to storage locations comprising the data of the atomic storage request, and updating the storage metadata to indicate that the atomic storage request is complete; and deallocating the allocated logical identifiers, in response to a failure during storage of the one or more data packets of the atomic storage request. - View Dependent Claims (13, 14, 15, 16, 17, 18, 19)
-
Specification