IP Library Granted Patent US 8,205,015
Granted Patent B2
US 8,205,015 · App. 13/235,114 · Granted Jun 19, 2012

Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment

Assignee: Fusion-io, Inc.
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,205,015
App. No.
13/235,114
Granted
Jun 19, 2012
Kind
B2
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.

Claims (27)

1. An apparatus for coordinating storage requests, comprising:

a storage controller to generate a first append storage command in response to a first request to store first data on a storage device and to generate a second append storage command in response to a second request to store second data on the storage device, the second data overlapping at least a portion of the first data, the second request received after the first request; and

wherein the storage controller is further configured to update an index for the first append storage command and the second append storage command, wherein the update for the first append storage command retains a reference to the second data in the index when the index is updated for the first append storage command after the index is updated for the second append storage command.

2. The apparatus of claim 1 , wherein the storage controller prevents access to a region of the index pertaining to the second append storage command while updating the index for the second append storage command.

3. The apparatus of claim 1 , the index comprising a forward index comprising a plurality of nodes associating logical identifiers with storage locations on the storage device, wherein the storage controller restructures the forward index to include a node associating a logical identifier of the second request with a storage location of the second data on the storage device.

4. The apparatus of claim 3 , wherein the second data overlapping at least a portion of the first data comprises a first set of logical identifiers that identify a storage location of the second data, the first set of logical identifiers intersecting with a second set of logical identifiers that identify a storage location of the first data, and wherein the storage controller restructures the forward index such that a single node identifies a set of logical identifiers comprising the intersection of the first set of logical identifiers and the second set of logical identifiers.

5. The apparatus of claim 1 , wherein the storage controller updates the index to mark the portion of the first data overlapped by the second data as invalid and to reference a storage location of the second data on the storage device.

6. The apparatus of claim 5 , wherein the storage controller updates a reverse index associating storage locations of the storage device with logical identifiers to mark the portion of the first data overlapped by the second data as invalid.

7. The apparatus of claim 1 , wherein the second append storage command comprises a command to store the second data sequentially on the storage device to preserve an ordered sequence of storage operations performed on the storage device.

8. The apparatus of claim 1 , wherein the second request comprises a logical identifier of the second data, and wherein the second append storage command comprises a command to store the logical identifier with the second data on the storage device.

9. The apparatus of claim 1 , wherein the first request and the second request originate from different clients.

10. The apparatus of claim 1 , wherein the storage controller updates the index for the first append storage command by way of a first thread and updates the index for the second append storage command by way of a second thread operating concurrently with the first thread.

11. The apparatus of claim 1 , wherein the storage controller associates the first and the second append storage commands with respective sequence indicators, the sequence indicators indicating that the second append storage command is more recent than the first append storage command.

12. The apparatus of claim 11 , wherein the sequence indicators represent one of an order in which the first and the second requests were received and an order in which the first and the second requests were transmitted.

13. The apparatus of claim 1 , wherein the storage controller delays a request to read data pertaining to the second request until the index is updated for the second append storage command.

14. The apparatus of claim 1 , wherein the storage controller comprises a driver operating on a storage client.

15. The apparatus of claim 1 , wherein the index is stored on a volatile memory of a storage client.

16. An apparatus for coordinating storage requests, comprising:

a storage controller configured to generate a first append storage command in response to a first request to store first data on a storage device and to generate a second append storage command in response to a second request to store second data on the storage device, the second data pertaining to a logical identifier range that overlaps at least a portion of a logical identifier range of the first data, wherein the second request is more recent than the first request; and

an append/invalidate module configured to update an index associating logical identifiers with storage locations on the storage device for the first append storage command and to update the index for the second append storage command, the update to retain an association between a storage location of the second data and the overlapping logical identifier range when the index is updated for the second append storage command before being updated for the first append storage command, wherein the append/invalidate module is configured to invalidate a portion of the first data associated with the overlapping logical address range.

17. The apparatus of claim 16 , wherein the storage controller prevents access to a region of the index pertaining to the second append storage command while the append/invalid module updates the index for the second append storage command.

18. The apparatus of claim 16 , wherein the storage controller prevents access to a first region of the index pertaining to the second append storage command while the append/invalid modules updates the first region of the index to associate a logical address range of the second data with a storage location of the second data on the storage device, such that other regions of the index are accessible while the first region is updated, and allows access to the first region after the first region is updated for the second append storage command.

19. The apparatus of claim 16 , wherein a first thread updates the index for the first append storage command, and a second thread updates the index for the second append storage command.

20. A system for coordinating storage requests, comprising:

a storage controller to generate a first append storage command in response to a first request to store first data on a storage device and to generate a second append storage command in response to a second request to store second data on the storage device, the second data pertaining to a logical identifier range that overlaps at least a portion of a logical identifier range of the first data, wherein the second request is more recent than the first request; and

an append/invalid module to update an index associating logical identifiers with storage locations on the storage device for the first append storage command and to update the index for the second append storage command, the updates to retain an association between a storage location of the second data on the storage device and the overlapping logical identifier range when the index is updated for the second append storage command before the index is updated for the first append storage command; and

wherein the storage controller prevents access to a region of the index pertaining to the second append storage command while the append/invalid module updates the index for the second append storage command.

Assignments (8)
CHANGE OF NAME Recorded May 25, 2016
From: SANDISK TECHNOLOGIES INC
To: SANDISK TECHNOLOGIES LLC
Reel/Frame 038807/0850 →
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 Mar 31, 2016
From: LONGITUDE ENTERPRISE FLASH SARL
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 038324/0628 →
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 →
Continuity (2)
Continuation 12900336 · Oct 7, 2010
Related Publication 20120005443A1 · Jan 5, 2012