Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
First Claim
1. An apparatus to coordinate storage requests, the apparatus comprising:
- an append/invalidate module that generates a first append data storage command in response to receiving a first storage request, the first storage request comprising a request to overwrite existing data of a data segment stored on a data storage device with first data, and that generates a second append data storage command in response to receiving a second storage request, the second storage request comprising a request to overwrite existing data of the data segment with second data, the first and second data comprising at least a portion of overlapping data to be stored at a common offset within the data segment, the second storage request received after the first storage request, and that updates an index in response to the first storage request by marking data of the data segment as invalid, the data marked invalid comprising data being replaced by the first data, and that updates the index in response to the second storage request by marking data of the data segment as invalid, the data marked invalid comprising data being replaced by the second data; and
a restructure module that updates the index based on the first data and updates the index based on the second data, wherein the updated index is organized to indicate that the second data is more current than the first data when either the index is updated based on the first data before being updated based on the second data or the index is updated based on the second data before being updated based on the first data,wherein the append/invalidate module prevents access to the index until the append/invalidate module has completed updating the index and wherein the restructure module prevents access to the index until the restructure module has completed updating the index.
10 Assignments
0 Petitions
Accused Products
Abstract
An apparatus, system, and method are disclosed for coordinating storage requests in a multi-processor/multi-thread environment. A append/invalidate module generates a first append data storage command from a first storage request and a second append data storage command from a second storage request. The storage requests overwrite existing data with first and second data including where the first and second data have at least a portion of overlapping data. The second storage request is received after the first storage request. The append/invalidate module updates an index by marking data being overwritten as invalid. A restructure module updates the index based on the first data and updates the index based on the second data. The updated index is organized to indicate that the second data is more current than the first data regardless of processing order. The modules prevent access to the index until the modules have completed updating the index.
-
Citations
25 Claims
-
1. An apparatus to coordinate storage requests, the apparatus comprising:
-
an append/invalidate module that generates a first append data storage command in response to receiving a first storage request, the first storage request comprising a request to overwrite existing data of a data segment stored on a data storage device with first data, and that generates a second append data storage command in response to receiving a second storage request, the second storage request comprising a request to overwrite existing data of the data segment with second data, the first and second data comprising at least a portion of overlapping data to be stored at a common offset within the data segment, the second storage request received after the first storage request, and that updates an index in response to the first storage request by marking data of the data segment as invalid, the data marked invalid comprising data being replaced by the first data, and that updates the index in response to the second storage request by marking data of the data segment as invalid, the data marked invalid comprising data being replaced by the second data; and a restructure module that updates the index based on the first data and updates the index based on the second data, wherein the updated index is organized to indicate that the second data is more current than the first data when either the index is updated based on the first data before being updated based on the second data or the index is updated based on the second data before being updated based on the first data, wherein the append/invalidate module prevents access to the index until the append/invalidate module has completed updating the index and wherein the restructure module prevents access to the index until the restructure module has completed updating the index. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19)
-
-
20. A system to coordinate storage requests, the system comprising:
-
a data storage device; and a storage controller controlling the data storage device, the storage controller comprising an append/invalidate module that generates a first append data storage command in response to receiving a first storage request to overwrite existing data of a data segment stored on the data storage device with first data and that generates a second append data storage command in response to receiving a second storage request to overwrite existing data of the data segment with second data, the first and second data comprising at least a portion of overlapping data to be stored at a common offset within the data segment, the second storage request received after the first storage request, and that updates an index in response to the first storage request by marking data of the data segment as invalid, the data marked invalid comprising data being replaced by the first data, and that updates the index in response to the second storage request by marking data of the data segment as invalid, the data marked invalid comprising data being replaced by the second data; and a restructure module that updates the index based on the first data and updates the index based on the second data, wherein the updated index is organized to indicate that the second data is more current than the first data when either the index is updated based on the first data before being updated based on the second data or the index is updated based on the second data before being updated based on the first data, wherein the append/invalidate module prevents access to the index until the append/invalidate module has completed updating the index and wherein the restructure module prevents access to the index until the restructure module has completed updating the index. - View Dependent Claims (21, 22, 23, 24)
-
-
25. A computer program product comprising a computer readable medium having computer usable program code executable to perform operations for coordinating storage requests, the operations of the computer program product comprising:
-
generating a first append data storage command in response to receiving a first storage request to overwrite existing data of a data segment stored on a data storage device with first data; generating a second append data storage command in response to receiving a second storage request to overwrite existing data of the data segment with second data, the first and second data comprising at least a portion of overlapping data to be stored at a common offset within the data segment, the second storage request received after the first storage request; updating an index in response to the first storage request by marking data of the data segment as invalid, wherein the data marked invalid comprises data being replaced by the first data; updating the index in response to the second storage request by marking data of the data segment as invalid, wherein the data marked invalid comprises data being replaced by the second data, wherein access to the index is prevented until an append data storage command is generated for one of the first storage request and the second storage request and the index is updated by marking the data of the data segment invalid for one of the first storage request and the second storage request; updating the index based on the first data; and updating the index based on the second data, wherein the updated index is organized to indicate that the second data is more current than the first data when either the index is updated based on the first data before being updated based on the second data or the index is updated based on the second data before being updated based on the first data, wherein access to the index is prevented until the index is updated based on one of the first data and the second data.
-
Specification