IP Library Granted Patent US 9,274,937
Granted Patent B2
US 9,274,937 · App. 13/725,728 · Granted Mar 1, 2016

Systems, methods, and interfaces for vector input/output operations

Inventors: Ashish Batwara (Fremont, CA); James G. Peterson (San Jose, CA); Nisha Talagala (Livermore, CA); Nick Piggin (Yarralumla, AU); Michael Zappe (Arvada, CO)
Assignee: Longitude Enterprise Flash S.a.r.l.
G06F12/00G06F3/0608G06F3/0659G06F3/0688G06F3/064
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 9,274,937
App. No.
13/725,728
Granted
Mar 1, 2016
Kind
B2
Abstract

Data of a vector storage request pertaining to one or more disjoint, non-adjacent, and/or non-contiguous logical identifier ranges are stored contiguously within a log on a non-volatile storage medium. A request consolidation module modifies one or more sub-requests of the vector storage request in response to other, cached storage requests. Data of an atomic vector storage request may comprise persistent indicators, such as persistent metadata flags, to identify data pertaining to incomplete atomic storage requests. A restart recovery module identifies and excludes data of incomplete atomic operations.

Claims (39)

1. An apparatus, comprising:

a non-volatile storage medium;

a request consolidation module configured to modify a storage request of an atomic vector storage request in response to another pending storage request;

a storage fulfillment module configured to service storage requests including the one or more modified storage requests;

a log storage module configured to append data pertaining to the atomic vector storage request contiguously within a log on the non-volatile storage medium; and

an atomic storage module configured to include a first persistent indicator on the non-volatile storage medium, wherein the first persistent indicator is configured to indicate that the data pertains to an atomic storage operation.

2. The apparatus of claim 1 , wherein the storage request is modified in response to another storage request of the vector storage request.

3. The apparatus of claim 1 , wherein the storage request is modified in response to a storage request that is independent of the vector storage request.

4. The apparatus of claim 1 , wherein modifying the storage request comprises combining two or more storage requests, wherein the two or more storage requests include a storage request of the vector storage request.

5. The apparatus of claim 4 , wherein the two or more storage requests comprise logical identifiers that reference one of adjacent and overlapping logical identifiers.

6. The apparatus of claim 4 , wherein the two or more storage requests comprise trim storage requests that pertain to one of adjacent and overlapping logical identifier ranges.

7. The apparatus of claim 1 , wherein modifying the storage request comprises removing the storage request in response to determining that the storage request is obviated by one or more of the pending storage requests.

8. The apparatus of claim 7 , wherein the request consolidation module is configured to remove the storage request in response to determining that the storage request comprises a trim request that pertains to one or more logical identifiers to be written by other pending storage requests.

9. The apparatus of claim 1 , wherein the vector storage request comprises an atomic vector storage request, the apparatus further comprising:

a log storage module configured to append data pertaining to the atomic vector storage request contiguously within a log on the non-volatile storage medium; and

an atomic storage module configured to include a first persistent indicator on the non-volatile storage medium, wherein the first persistent indicator is configured to indicate that the data pertains to an atomic storage operation.

10. The apparatus of claim 9 , wherein the atomic storage module is configured to include a second persistent indicator on the non-volatile storage medium to indicate that the atomic vector storage request is complete.

11. The apparatus of claim 9 , wherein the atomic storage module is configured to append one or more data packets pertaining to the atomic vector storage request contiguously within the log, and wherein a last data packet of the atomic storage operation within the log comprises a persistent metadata flag configured to indicate completion of the atomic storage operation.

12. An apparatus, comprising:

a request buffer configured to store one or more storage requests, including an atomic vector storage request;

a request consolidation module configured to modify one or more of the storage requests in the request buffer based on one or more other storage requests in the request buffer; and

a storage request execution module configured to service storage requests in the request buffer;

a log storage module configured to append data pertaining to the atomic vector storage request contiguously within a log on anon-volatile storage medium; and

an atomic storage module configured to include a first persistent indicator on the non-volatile storage medium, wherein the first persistent indicator is configured to indicate that the data pertains to an atomic storage operation.

13. The apparatus of claim 12 , wherein the request consolidation module is configured to delete a storage request from the request buffer in response to one or more other storage requests in the request buffer.

14. The apparatus of claim 12 , wherein the request consolidation module is configured to omit a trim storage request from the request buffer in response a storage request to store data to a set of logical identifiers that overlaps a set of logical identifiers of the trim storage request.

15. The apparatus of claim 12 , wherein the request consolidation module is configured to consolidate two or more trim storage requests that overlap and/or are contiguous in a logical address space.

16. A non-transitory computer-readable storage medium comprising instructions configured to cause a computing device to perform a method, comprising:

buffering a plurality of storage requests, the plurality of storage requests comprising an atomic vector storage request;

modifying one of the plurality of storage requests based on a logical identifier range of the storage request and respective logical identifier ranges of others of the plurality of storage requests;

executing the buffered storage requests, wherein execution of one of the buffered storage requests comprises storing one or more data packets to a non-volatile solid-state storage medium;

appending data pertaining to the atomic vector storage request contiguously within a log on the non-volatile solid-state storage medium; and

including a first persistent indicator on the non-volatile solid-state storage medium, wherein the first persistent indicator is configured to indicate that the data pertains to an atomic storage operation.

17. The non-transitory computer-readable storage medium of claim 16 , wherein modifying the storage request comprises one or more of:

deleting the storage request in response to identifying one or more storage requests that pertain to logical identifiers that overlap the logical identifier range of the storage request; and

combining the storage request with another storage request in response to one or more of the storage requests comprising logical identifier ranges that overlap in a logical address space and the storage requests comprising logical identifier ranges that are adjacent in the logical address space.

18. The non-transitory computer-readable storage medium of claim 16 , wherein modifying the storage request comprises one or more of:

removing a trim storage request in response to a subsequent storage request to store data in association with a range of logical identifiers that overlaps the logical identifier range of the trim storage request; and

consolidating the storage request with another storage request having a logical identifier range that overlaps with and/or is contiguous with the logical identifier range of the storage request within a logical address space.

Assignments (14)
PARTIAL RELEASE OF SECURITY INTERESTS Recorded Apr 25, 2025
From: JPMORGAN CHASE BANK, N.A., AS AGENT
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 071382/0001 →
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 31, 2024
From: SANDISK TECHNOLOGIES LLC
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 069796/0423 →
CHANGE OF NAME Recorded May 25, 2016
From: SANDISK TECHNOLOGIES INC
To: SANDISK TECHNOLOGIES LLC
Reel/Frame 038807/0898 →
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 Jan 13, 2016
From: BATWARA, ASHISH; PETERSON, JAMES G.; TALAGALA, NISHA; PIGGIN, NICK; ZAPPE, MICHAEL
To: FUSION-IO, INC.
Reel/Frame 037476/0609 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 12, 2016
From: PS12 LUXCO S.A.R.L.
To: LONGITUDE ENTERPRISE FLASH S.A.R.L.
Reel/Frame 037487/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 12, 2016
From: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS 2 LLC
To: PS12 LUXCO S.A.R.L.
Reel/Frame 037487/0171 →
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 033390/0566 →
Continuity (6)
Continuation In Part 13539235 · Jun 29, 2012
Continuation In Part 13335922 · Dec 22, 2011
Provisional Application 61625475 · Apr 17, 2012
Provisional Application 61637155 · Apr 23, 2012
Provisional Application 61579627 · Dec 22, 2011
Related Publication 20130166855A1 · Jun 27, 2013