Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
First Claim
1. An apparatus, comprising:
- a storage request receiver module configured to receive a storage request to store data at a logical address specified by the storage request;
a translation module configured to;
determine whether to generate a single append storage command or a plurality of append storage commands based on a length of the data and a storage capacity of a physical storage location on the non-volatile storage medium; and
based on the determination, generate one or more append storage commands in response to the received storage request, wherein each of the one or more append storage commands is executable to store a portion of the data at one or more respective physical addresses corresponding to one or more append point locations;
an append module configured to execute the one or more append storage commands by storing the portions of the data on a non-volatile storage medium, wherein one or more of the storage request receiver module, translation module, and append module include hardware;
a mapping module configured to translate, in accordance with a map data structure, the logical address to one or more corresponding physical addresses;
a check point module configured to periodically store the map data structure to the non-volatile storage medium, wherein the append module is configured to further store metadata of the map data structure with the portions of the data; and
a map rebuild module configured to rebuild a current version of the map data structure by sequentially reading the metadata stored since a last storage of the map data structure, wherein the mapping module, check point module, and map rebuild module are hardware.
12 Assignments
0 Petitions
Accused Products
Abstract
An apparatus, system, and method are disclosed for coordinating storage requests in a multi-processor/multi-thread environment. An 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
16 Claims
-
1. An apparatus, comprising:
-
a storage request receiver module configured to receive a storage request to store data at a logical address specified by the storage request; a translation module configured to; determine whether to generate a single append storage command or a plurality of append storage commands based on a length of the data and a storage capacity of a physical storage location on the non-volatile storage medium; and based on the determination, generate one or more append storage commands in response to the received storage request, wherein each of the one or more append storage commands is executable to store a portion of the data at one or more respective physical addresses corresponding to one or more append point locations; an append module configured to execute the one or more append storage commands by storing the portions of the data on a non-volatile storage medium, wherein one or more of the storage request receiver module, translation module, and append module include hardware; a mapping module configured to translate, in accordance with a map data structure, the logical address to one or more corresponding physical addresses; a check point module configured to periodically store the map data structure to the non-volatile storage medium, wherein the append module is configured to further store metadata of the map data structure with the portions of the data; and a map rebuild module configured to rebuild a current version of the map data structure by sequentially reading the metadata stored since a last storage of the map data structure, wherein the mapping module, check point module, and map rebuild module are hardware. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A method, comprising:
-
receiving a request to store data on a non-volatile storage medium; analyzing a length of the data and an available amount of storage capacity for a physical storage location in the non-volatile storage medium; based on the analyzing, issuing a plurality of storage commands to the non-volatile storage medium, wherein each of the plurality of storage commands is executable to store a portion of the data within a respective data packet on the non-volatile storage medium; and compressing the portions of data prior to storing the data on the non-volatile storage medium. - View Dependent Claims (7, 8, 9, 10, 11)
-
-
12. An apparatus, comprising:
-
solid-state storage media; and a storage controller configured to; receive a storage request to store data to the solid-state storage media, wherein the storage request specifies a size of the data; determine, based on the size, a number of append instructions to issue to the solid-state media, wherein each append instruction is executable by the solid-state storage media to store a respective portion of the data; cause the solid-state storage media to store metadata of a map data structure usable by the storage controller to translate logical addresses specified in storage requests to corresponding physical addresses of the solid-state storage media; and recover the map data structure to a current state by replaying packets stored since a checkpoint of the map data structure, wherein the replayed packets include metadata of the map data structure. - View Dependent Claims (13, 14, 15)
-
-
16. An apparatus, comprising:
-
solid-state storage media; and a storage controller configured to; receive a storage request to store data to the solid-state storage media, wherein the storage request specifies a size of the data; and determine, based on the size, a number of append instructions to issue to the solid-state media, wherein each append instruction is executable by the solid-state storage media to store a respective portion of the data, wherein the solid-state storage media is configured to execute the append instructions in a different order than an order of issuance of the append instructions.
-
Specification