IP Library Granted Patent US 9,251,062
Granted Patent B2
US 9,251,062 · App. 14/087,297 · Granted Feb 2, 2016

Apparatus, system, and method for conditional and atomic storage operations

Inventors: David Flynn (Sandy, UT); David Nellans (Salt Lake City, UT); Xiangyong Ouyang (Columbus, OH)
Assignee: Intelligent Intellectual Property Holdings 2 LLC
G06F12/0246G06F9/30043G06F9/30072G06F11/108G06F11/1048G06F12/0238G06F11/1471G06F2212/7207G06F2212/7208
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,251,062
App. No.
14/087,297
Granted
Feb 2, 2016
Kind
B2
Abstract

An apparatus, system, and method are disclosed for implementing conditional storage operations. Storage clients access and allocate portions of an address space of a non-volatile storage device. A conditional storage request is provided, which causes data to be stored to the non-volatile storage device on the condition that the address space of the device can satisfy the entire request. If only a portion of the request can be satisfied, the conditional storage request may be deferred or fail. An atomic storage request is provided, which may comprise one or more storage operations. The atomic storage request succeeds if all of the one or more storage operations are complete successfully. If one or more of the storage operations fails, the atomic storage request is invalidated, which may comprise deallocating logical identifiers of the request and/or invalidating data on the non-volatile storage device pertaining to the request.

Claims (44)

1. A method, comprising:

storing data of an atomic storage request in one or more storage operations on a non-volatile storage medium of a non-volatile storage device;

allocating one or more logical identifiers to satisfy the atomic storage request in a logical address space of the non-volatile storage device;

in response to completion of the one or more storage operations,

updating storage metadata on the non-volatile storage medium to assign the allocated logical identifiers to storage locations comprising data of the atomic storage request, and

updating the storage metadata to indicate that the atomic storage request is complete; and

in response to failure of one or more of the storage operations, rolling back the atomic storage request by deallocating the allocated logical identifiers in response to failure of one or more of the storage operations.

2. The method of claim 1 , further comprising:

storing a persistent indicator on the non-volatile storage medium that indicates the atomic storage request is incomplete; and

storing a persistent indicator on the non-volatile storage medium that indicates the atomic storage request is complete in response to completion of the one or more storage operations.

3. The method of claim 1 , further comprising:

storing a persistent indicator on the non-volatile storage medium that indicates the atomic storage request is incomplete; and

invalidating data of the atomic storage request on the non-volatile storage medium when the non-volatile storage medium does not include a persistent indicator that indicates the atomic storage request is complete.

4. The method of claim 1 , further comprising rolling back the atomic storage request if one of the updating operations fails.

5. A method, comprising:

receiving an atomic storage request to store data on a non-volatile storage medium of a non-volatile storage device;

allocating, in a logical address space of the non-volatile storage device, a logical identifier for each data packet corresponding to the atomic storage request;

storing a first indicator on the non-volatile storage medium of the non-volatile storage device which indicates that the atomic storage request is in progress;

storing the data in a log based format on the non-volatile storage medium of the non-volatile storage device;

in response to storing the data of the atomic storage request,

updating storage metadata on the non-volatile storage medium to assign the allocated logical identifiers to storage locations comprising the data of the atomic storage request, and

invalidating the first indicator stored on the non-volatile storage medium; and

deallocating the allocated logical identifiers, in response to a failure during storage of the data of the atomic storage request.

6. The method of claim 5 , wherein invalidating the first indicator comprises a second indicator on the non-volatile storage medium of the non-volatile storage device to indicate that the atomic storage request is complete.

7. The method of claim 5 , further comprising storing the data of the atomic storage request sequentially on the non-volatile storage medium of the non-volatile storage device.

8. The method of claim 5 , wherein the atomic storage request includes multiple storage operations.

9. The method of claim 8 , further comprising rolling back the atomic storage request in response to determining that the atomic storage request is not complete.

10. The method of claim 5 , wherein the storage metadata stored on the non-volatile storage medium of the non-volatile storage device comprises an index to track allocation of the logical address space and to associate logical identifiers with storage locations on the non-volatile storage medium of the non-volatile storage device.

11. The method of claim 10 , wherein invalidating the first indicator comprises a second indicator on the non-volatile storage medium of the non-volatile storage device to indicate that the atomic storage request is complete, wherein the first and second indicators distinguish between data of complete atomic storage requests stored on the non-volatile storage medium and data of failed atomic storage requests stored on the non-volatile storage medium.

12. A method, comprising:

receiving an atomic storage request to store data comprising multiple data packets on a solid state storage device, wherein each data packet contains a logical identifier associated with the data packet;

allocating, in a logical address space of the solid state storage device, logical identifiers for a plurality of data packets corresponding to the atomic storage request;

storing the data packets on the solid state storage device, wherein the data packets stored on the solid state storage device comprise an indicator of the progress of the atomic storage request;

in response to storing one or more data packets of the atomic storage request,

updating storage metadata on the solid state storage device to assign the allocated logical identifiers to storage locations comprising the data of the atomic storage request, and

updating the storage metadata to indicate that the atomic storage request is complete; and

deallocating the allocated logical identifiers, in response to a failure during storage of the one or more data packets of the atomic storage request.

13. The method of claim 12 , wherein a first data packet contains a first indicator configured to indicate that the atomic storage request is in progress.

14. The method of claim 13 , wherein updating the storage metadata to indicate that the atomic storage request is complete comprises storing a second data packet of the atomic storage request with a second indicator configured to indicate that the atomic storage request is complete.

15. The method of claim 12 , further comprising storing the data packets on the non-volatile storage device in a log based format.

16. The method of claim 12 , further comprising determining if the atomic storage request is complete based on indicators of the stored data packets.

17. The method of claim 16 , further comprising rolling back the atomic storage request in response to determining that the atomic storage request is not complete.

18. The method of claim 12 , wherein the storage metadata stored on the solid state storage device comprises an index to track allocation of the logical address space and to allocate logical identifiers to storage locations on the non-volatile storage device.

19. The method of claim 14 , wherein the first and second indicators of the stored data packets distinguish data packets of complete atomic storage requests from data packets of atomic storage requests that are not complete.

Assignments (11)
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/0948 →
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: PS12 LUXCO S.A.R.L.
To: LONGITUDE ENTERPRISE FLASH S.A.R.L.
Reel/Frame 038362/0604 →
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 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 (10)
Division 13107820 · May 13, 2011
Continuation In Part 12879004 · Sep 9, 2010
Provisional Application 61240966 · Sep 9, 2009
Provisional Application 61373271 · Aug 12, 2010
Provisional Application 61368564 · Jul 28, 2010
Provisional Application 61334532 · May 13, 2010
Provisional Application 61382816 · Sep 14, 2010
Provisional Application 61424585 · Dec 17, 2010
Provisional Application 61425167 · Dec 20, 2010
Related Publication 20140189216A1 · Jul 3, 2014