IP Library Granted Patent US 8,151,082
Granted Patent B2
US 8,151,082 · App. 12/098,433 · Granted Apr 3, 2012

Apparatus, system, and method for converting a storage request into an append data storage command

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,151,082
App. No.
12/098,433
Granted
Apr 3, 2012
Kind
B2
Abstract

An apparatus, system, and method are disclosed for converting a storage request to an append data storage command. A storage request receiver module receives a storage request from a requesting device. The storage request is to store a data segment onto a data storage device. The storage request includes source parameters for the data segment. The source parameters include a virtual address. A translation module translates the storage request to storage commands. At least one storage command includes an append data storage command that directs the data storage device to store data of the data segment and the one or more source parameters with the data, including a virtual address, at one or more append points. A mapping module maps source parameters of the data segment to locations where the data storage device appended the data packets of the data segment and source parameters.

Claims (46)

1. An apparatus to sequentially store data, the apparatus comprising:

a storage request receiver module that receives a storage request from a requesting device, the storage request comprising a source parameter for a data segment, the source parameter comprising a virtual address;

a translation module that translates the storage request to one or more append data storage commands, each append data storage command directing a nonvolatile solid-state data storage device to store data of the data segment and the source parameter at an append point of a sequential log, each append data storage command organized to maintain an order that data segments are received such that the sequential log stores the data segment in an order that the data segment is received, the translation module including a location of the append point in the one or more append data storage commands; and

a mapping module that maps the source parameter of the data segment to a location of the data segment on the nonvolatile solid-state data storage device, the mapping module receiving, from the translation module, the location where the nonvolatile solid-state data storage device appends the data segment, the data segment and the source parameter stored in the sequential log such that the sequential log maintains a mapping between the source parameter and the location of the data segment on the nonvolatile solid-state data storage device.

2. The apparatus of claim 1 , wherein storing the source parameter with the data of the data segment comprises storing the data of the data segment and the source parameter simultaneously at the append point of the sequential log.

3. The apparatus of claim 1 , wherein the data of the data segment is stored as a data packet and wherein storing the source parameter with the data of the data segment comprises storing the source parameter in a data packet header, the data packet header stored together with the data of the data packet.

4. The apparatus of claim 1 , further comprising a garbage collection module that moves valid data to the append point of the sequential log, wherein the mapping module remaps the source parameter of the valid data to a new location where the nonvolatile solid-state data storage device appends the valid data and the associated source parameter.

5. The apparatus of claim 1 , wherein data segments are stored sequentially within a region of the nonvolatile solid-state data storage device and further comprising storing sequence information of the region that identifies when the region was written with data segments with respect to when other regions were written with data segments, wherein the sequential log comprises the sequence information of the regions and the sequence that data segments are stored in each region.

6. The apparatus of claim 1 , wherein a physical location of the data of the data segment along with the source parameter stored with the data comprise a primary virtual-to-physical mapping persisted on the nonvolatile solid-state data storage device and the mapping created by the mapping module comprises a secondary virtual-to-physical mapping.

7. The apparatus of claim 6 , further comprising an index rebuild module that rebuilds the secondary virtual-to-physical mapping created by the mapping module for the data segment, the index rebuild module rebuilding the mapping using the primary virtual-to-physical mapping by using the source parameter stored with the data of the data segment and using the physical location on the nonvolatile solid-state data storage device where the data of the data segment is stored.

8. The apparatus of claim 1 , further comprising a storage response receiver module that receives a storage command response from the nonvolatile solid-state data storage device, the storage command response comprising a location where the nonvolatile solid-state data storage device appended the data of the data segment and associated source parameter.

9. The apparatus of claim 1 , wherein the apparatus emulates a random access, logical block storage device storing data as directed by the storage request, wherein the virtual address of the data segment comprises a logical block address.

10. The apparatus of claim 9 , wherein the source parameter comprises a virtual identifier in addition to the logical block address, the virtual identifier identifying a file or object of the data segment.

11. The apparatus of claim 1 , further comprising a compression module that compresses data of an append data storage command prior to storage of the data on the nonvolatile solid-state data storage device, the append data storage command associated with the data segment.

12. The apparatus of claim 1 , further comprising a command reordering module that modifies a sequence that two or more outstanding append data storage commands are executed.

13. The apparatus of claim 1 , wherein the storage request receiver module receives two or more storage requests and further comprising a request reordering module that reorders a sequence that the two or more storage requests are serviced.

14. The apparatus of claim 1 , wherein the source parameter further comprises at least one of a virtual identifier associated with the data segment, a device identifier, a partition identifier, lengths of one or more data packets of the data segment, one or more memory locations in a memory of a host where the data segment is located prior to or subsequent to the storage request, one or more lengths of data in the one or more memory locations, attributes of the data segment, metadata of the data segment, and control parameters of the data segment.

15. The apparatus of claim 1 , wherein the source parameter includes one or more physical memory addresses where the data segment is read from as a result of the storage request.

16. The apparatus of claim 15 , wherein at least one of the storage request and the one or more append data storage commands initiate one of a direct memory access (“DMA”) process and a remote DMA (“RDMA”) process to transfer data of the data segment to the nonvolatile solid-state data storage device.

17. The apparatus of claim 1 , further comprising a response transmission module that transmits a storage request response to the requesting device, the storage request response comprising information regarding execution of the storage request.

18. A system to sequentially store data, the system comprising:

a nonvolatile solid-state data storage device; and

a storage controller controlling the nonvolatile solid-state data storage device, the storage controller comprising

a storage request receiver module that receives a storage request from a requesting device, the storage request comprising a source parameter for a data segment, the source parameter comprising a virtual address;

a translation module that translates the storage request to one or more append data storage commands, each append data storage command directing a nonvolatile solid-state data storage device to store data of the data segment and the source parameter at an append point of a sequential log, each append data storage command organized to maintain an order that data segments are received such that the sequential log stores the data segment in an order that the data segment is received, the translation module including a location of the append point in the one or more append data storage commands; and

a mapping module that maps the source parameter of the data segment to a location of the data segment on the nonvolatile solid-state data storage device, the mapping module receiving, from the translation module, the location where the nonvolatile solid-state data storage device appends the data segment, the data segment and the source parameter stored in the sequential log such that the sequential log maintains a mapping between the source parameter and the location of the data segment on the nonvolatile solid-state storage device.

19. The system of claim 18 , wherein the requesting device comprises a client in communication with the storage controller over a computer network.

20. The system of claim 19 , wherein one or more of the storage request receiver module, the translation module, and the mapping module operate independent of the client.

21. The system of claim 18 , further comprising a server, wherein the storage controller is within the server.

22. A method for sequentially storing data, the method comprising:

receiving a storage request from a requesting device, the storage request comprising a source parameter for a data segment, the source parameter comprising a virtual address;

translating the storage request to one or more append data storage commands, each append data storage command directing a nonvolatile solid-state data storage device to store data of the data segment and the source parameter at an append point of a sequential log, each append data storage command organized to maintain an order that data segments are received such that the sequential log stores the data segment in an order that the data segment is received;

receiving a storage command response from the nonvolatile solid-state data storage device, the storage command response comprising a location where the nonvolatile solid-state data storage device appended the data segment and associated source parameter; and

mapping the source parameter of the data segment to the location of the data segment on the nonvolatile solid-state data storage device in response to receiving the location from the storage command response, the data segment and the source parameter stored in the sequential log such that the sequential log maintains a mapping between the source parameter and the location of the data segment on the nonvolatile solid-state data storage device.

23. The method of claim 22 , further comprising moving valid data to the append point of the sequential log and remapping the source parameter of the valid data to a new location where the nonvolatile solid-state storage device appended the valid data and the associated source parameter.

24. The method of claim 22 , further comprising rebuilding the mapping of the source parameter of the data segment to the location of the data segment on the nonvolatile solid-state data storage device using the source parameter stored with the data of the data segment in the sequential log and using a physical location on the nonvolatile solid-state storage device where the data of the data segment is stored.

25. The method of claim 22 , wherein the data of the data segment is stored as a data packet and wherein storing the source parameter with the data of the data segment comprises storing the source parameter in a data packet header, the data packet header stored together with the data of the data packet.

26. The method of claim 22 , wherein data segments are stored sequentially within a region of the nonvolatile solid-state data storage device and further comprising storing sequence information of the region that identifies when the region was written with data segments with respect to when other regions were written with data segments, wherein the sequential log comprises the sequence information of the regions and the sequence that data segments are stored in each region.

27. A method for sequentially storing data, the method comprising:

receiving a storage request from a requesting device, the storage request comprising a source parameter for a data segment;

translating, by a translation module, the storage request to one or more append data storage commands, each append data storage command directing a nonvolatile solid-state data storage device to store data of the data segment at an append point of a sequential log, each append data storage command organized to maintain an order that data segments are received such that the sequential log stores the data segment in an order that the data segment is received, the one or more append data storage commands including a location of the append point; and

mapping, by a mapping module, the source parameter of the data segment to a location on the nonvolatile solid-state storage device in response to receiving, from the translation module, the location where the nonvolatile solid-state data storage device appends the data segment.

28. The method of claim 27 , further comprising moving valid data to the append point of the sequential log and remapping the source parameter of the valid data to a new location where the nonvolatile solid-state storage device appends the valid data.

29. The method of claim 27 , further comprising rebuilding the mapping of the source parameter of the data segment to the location on the nonvolatile solid-state data storage device using the source parameter stored with the data of the data segment in the sequential log and using a physical location on the nonvolatile solid-state storage device where the data of the data segment is stored.

30. The method of claim 27 , wherein the data of the data segment is stored as a data packet and wherein the source parameter is stored in a data packet header, the data packet header stored together with the data of the data packet.

31. The method of claim 27 , wherein data segments are stored sequentially within a region of the nonvolatile solid-state data storage device and further comprising storing sequence information of the region that identifies when the region was written with data segments with respect to when other regions were written with data segments, wherein the sequential log comprises the sequence information of the regions and the sequence that data segments are stored in each region.

Assignments (15)
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE NAME PREVIOUSLY RECORDED AT REEL: 053654 FRAME: 0254. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Nov 15, 2021
From: STARBOARD VALUE INTERMEDIATE FUND LP, AS COLLATERAL AGENT
To: UNIFICATION TECHNOLOGIES LLC
Reel/Frame 058134/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNOR NAME PREVIOUSLY RECORDED AT REEL: 052853 FRAME: 0153. ASSIGNOR(S) HEREBY CONFIRMS THE PATENT SECURITY AGREEMENT. Recorded Nov 15, 2021
From: UNIFICATION TECHNOLOGIES LLC
To: STARBOARD VALUE INTERMEDIATE FUND LP, AS COLLATERAL AGENT
Reel/Frame 058223/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS Recorded Jul 8, 2020
From: STARBOARD VALUE INTERMEDIATE FUND LP
To: ACACIA RESEARCH GROUP LLC; AMERICAN VEHICULAR SCIENCES LLC; BONUTTI SKELETAL INNOVATIONS LLC; CELLULAR COMMUNICATIONS EQUIPMENT LLC; INNOVATIVE DISPLAY TECHNOLOGIES LLC; LIFEPORT SCIENCES LLC; LIMESTONE MEMORY SYSTEMS LLC; MOBILE ENHANCEMENT SOLUTIONS LLC; MONARCH NETWORKING SOLUTIONS LLC; NEXUS DISPLAY TECHNOLOGIES LLC; PARTHENON UNIFIED MEMORY ARCHITECTURE LLC; R2 SOLUTIONS LLC; SAINT LAWRENCE COMMUNICATIONS LLC; STINGRAY IP SOLUTIONS LLC; SUPER INTERCONNECT TECHNOLOGIES LLC; TELECONFERENCE SYSTEMS LLC; UNIFICATION TECHNOLOGIES LLC
Reel/Frame 053654/0254 →
PATENT SECURITY AGREEMENT Recorded Jun 5, 2020
From: ACACIA RESEARCH GROUP LLC; AMERICAN VEHICULAR SCIENCES LLC; BONUTTI SKELETAL INNOVATIONS LLC; CELLULAR COMMUNICATIONS EQUIPMENT LLC; INNOVATIVE DISPLAY TECHNOLOGIES LLC; LIFEPORT SCIENCES LLC; LIMESTONE MEMORY SYSTEMS LLC; MERTON ACQUISITION HOLDCO LLC; MOBILE ENHANCEMENT SOLUTIONS LLC; MONARCH NETWORKING SOLUTIONS LLC; NEXUS DISPLAY TECHNOLOGIES LLC; PARTHENON UNIFIED MEMORY ARCHITECTURE LLC; R2 SOLUTIONS LLC; SAINT LAWRENCE COMMUNICATIONS LLC; STINGRAY IP SOLUTIONS LLC; SUPER INTERCONNECT TECHNOLOGIES LLC; TELECONFERENCE SYSTEMS LLC; UNIFICATION TECHNOLOGIES LLC
To: STARBOARD VALUE INTERMEDIATE FUND LP, AS COLLATERAL AGENT
Reel/Frame 052853/0153 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 5, 2020
From: FIO SEMICONDUCTOR TECHNOLOGIES, LLC
To: ACACIA RESEARCH GROUP LLC
Reel/Frame 052095/0903 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 5, 2020
From: ACACIA RESEARCH GROUP LLC
To: UNIFICATION TECHNOLOGIES LLC
Reel/Frame 052096/0225 →
CORRECTIVE ASSIGNMENT TO CORRECT THE INCORRECT DOCUMENT FILED PREVIOUSLY RECORDED ON REEL 047702 FRAME 0413. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Apr 16, 2019
From: LONGITUDE ENTERPRISE FLASH S.A.R.I.
To: FIO SEMICONDUCTOR TECHNOLOGIES, LLC
Reel/Frame 048918/0035 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 7, 2018
From: LONGITUDE ENTERPRISE FLASH S.A.R.I.
To: FIO SEMICONDUCTOR TECHNOLOGIES LIMITED
Reel/Frame 047702/0413 →
RELEASE OF SECURITY INTEREST Recorded May 4, 2016
From: FUSION-IO, INC.
To: SANDISK CORPORATION
Reel/Frame 038748/0880 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 13, 2016
From: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS 2 LLC
To: PS12 LUXCO S.A.R.L.
Reel/Frame 038362/0575 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 13, 2016
From: PS12 LUXCO S.A.R.L.
To: LONGITUDE ENTERPRISE FLASH S.A.R.L.
Reel/Frame 038362/0604 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 26, 2014
From: FUSION-IO, INC.
To: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS 2 LLC
Reel/Frame 033419/0748 →
SECURITY INTEREST Recorded Jul 24, 2014
From: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS 2 LLC
To: FUSION-IO, INC.
Reel/Frame 033410/0158 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 23, 2014
From: FUSION-IO, INC.
To: INTELLECTUAL PROPERTY HOLDINGS 2 LLC
Reel/Frame 033389/0511 →
CHANGE OF NAME Recorded Jul 9, 2010
From: FUSION MULTISYSTEMS, INC.
To: FUSION-IO, INC.
Reel/Frame 024651/0914 →