IP Library Granted Patent US 9,910,777
Granted Patent B2
US 9,910,777 · App. 13/837,628 · Granted Mar 6, 2018

Enhanced integrity through atomic writes in cache

Inventors: David Flynn (Sandy, UT); Nisha Talagala (Livermore, CA)
Assignee: SanDisk Technologies LLC
G06F12/0815G06F3/0619G06F3/0643G06F3/0679G06F3/0688G06F11/1471G06F12/0246G06F2212/7201G06F2212/7207
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,910,777
App. No.
13/837,628
Granted
Mar 6, 2018
Kind
B2
Abstract

A system and method facilitate processing atomic storage requests. The method includes receiving, from a storage client, an atomic storage request for a first storage device that is incapable of processing atomic write operations. The method also includes processing the atomic storage request at a translation interface. The method also includes storing the atomic storage request in one or more storage operations in a second storage device capable of processing the atomic storage request.

Claims (64)

1. A method, comprising:

receiving an atomic storage request for a first storage device;

servicing the atomic storage request using a second storage device, separate from the first storage device, the second storage device comprising a log structure, the log structure persisting an order of storage operations performed on the second storage device and including data to be invalidated by the atomic storage request, wherein servicing the atomic storage request comprises:

storing the data of the atomic storage request within the log structure of the second storage device,

retaining the data to be invalidated by the atomic storage request within the log structure of the second storage device such that the atomic storage request is capable of being rolled back on the second storage device by use of the retained data and the order of storage operations persisted by the log structure, and

recording that the data of the atomic storage request stored within the log structure is dirty;

writing the data of the atomic storage request stored within the log structure of the second storage device to the first storage device in a plurality of destage operations, in response to storing the data of the atomic storage request within the log on the second storage device;

recording that the data of the atomic storage request stored within the log structure is clean in response to successful completion of all of the plurality of destage operations; and

rolling back one or more completed destage operations on the first storage device by use of the retained data and the order of storage operations persisted within the log structure of the second storage device in response to a failure of one or more of the plurality of destage operations.

2. The method of claim 1 , further comprising acknowledging completion of the atomic storage request in response to storing the data of the atomic storage request within the log structure of the second storage device.

3. The method of claim 1 , further comprising: determining that all of the plurality of destage operations were completed successfully in response to receiving one or more acknowledgements from the first storage device.

4. The method of claim 1 , wherein the destage operations comprise cache write back operations.

5. The method of claim 1 , further comprising evicting the data of the atomic storage request from the second storage device subsequent to recording that the data of the atomic storage request stored within the log structure is clean.

6. The method of claim 1 , wherein the data of the atomic storage request is stored within the log structure of the second storage device in a plurality of append operations, the method further comprising:

rolling back one or more completed append operations from the log in response to a failure of one or more of the plurality of append operations.

7. The method of claim 1 , further comprising notifying a storage client of a capability to process the atomic write operation on behalf of the first storage device that is incapable of processing atomic write operations.

8. An apparatus, comprising:

a cache manager configured to receive an atomic storage request directed to a backing store; and

a cache storage device configured to implement a first atomic transaction on a non-volatile storage medium, comprising:

appending a data set corresponding to the atomic storage request to a log maintained on the non-volatile storage medium, the log comprising an ordered sequence of storage operations performed on the non-volatile storage medium, including data to be invalidated by the atomic storage request,

retaining the data to be invalidated by the atomic storage request within the log such that the atomic storage request is capable of being rolled back on the non-volatile storage medium by use of the data retained within the ordered sequence of storage operations of the log, and

marking the data set appended to the log as being non-discardable from the non-volatile storage medium,

wherein the cache manager is further configured to implement a second atomic transaction, comprising:

directing the cache storage device to write the data set appended to the log on the non-volatile storage medium to the backing store in a plurality of write operations,

marking the data set as being discardable from the non-volatile storage medium in response to successful completion of all of the plurality of write operations, and

rolling back one or more completed write operations from the backing store by use of the data retained within the ordered sequence of storage operations of the log on the non-volatile storage medium in response to a failure of one or more of the plurality of write operations.

9. The apparatus of claim 8 , wherein the cache manager is configured to acknowledge completion of the atomic storage request in response to one of: appending the data set corresponding to the atomic storage request to the log, and writing the data set corresponding to the atomic storage request to the backing store.

10. The apparatus of claim 8 , wherein the cache storage device is configured to cache the data set corresponding to the atomic storage request in a write back cache mode.

11. The apparatus of claim 8 , wherein the cache manager is configured to monitor a utilization of the backing store and to direct the cache storage device to write the data set to the backing store in response to a monitored utilization of the backing store being below a threshold.

12. The apparatus of claim 8 , wherein the cache manager is configured to direct the cache storage device to write the data set to the backing store according to a predetermined schedule.

13. The apparatus of claim 8 , wherein the cache manager is configured to direct the cache storage device to write the data set to the backing store in response to determining that an available capacity of the cache storage device is less than a threshold.

14. The apparatus of claim 8 , wherein the cache storage device is configured to:

append the data set corresponding to the atomic storage request to the log in a plurality of log storage operations; and

roll back one or more completed log storage operations from the log in response to a failure of one or more of the plurality of log append operations.

15. The apparatus of claim 8 , wherein the cache manager is configured to evict the data set from the cache storage device subsequent to marking the data set as discardable.

16. The apparatus of claim 8 , wherein the cache manager is configured to update a logical-to-physical translation layer to associate the data set appended to the log maintained on the non-volatile storage medium with respective logical addresses.

17. A memory device, comprising:

a storage controller configured to store data within a log on a non-volatile memory, the log comprising data stored in a log-based format that persists an ordering of storage operations performed on the non-volatile memory, the storage controller further configured to process atomic storage requests addressed to a backing store, wherein processing an atomic storage request comprises:

performing a first atomic transaction on the non-volatile memory, comprising:

writing the data of the atomic storage request to the log, the data of the atomic storage request marked as non-evictable from the non-volatile memory, and

preserving data to be invalidated by the atomic storage request within the log such that the first atomic transaction is capable of being rolled back on the non-volatile memory by use of the preserved data and ordering of storage operations persisted within the log on the non-volatile storage medium; and

performing a second atomic transaction on the backing store, comprising:

destaging the data of the atomic storage request from the log on the non-volatile storage medium to the backing store in a plurality of write operations,

marking that the data of the atomic storage request is evictable from the non-volatile storage medium in response to completion of all of the plurality of write operations, and

rolling back one or more completed write operations from the backing store by use of the preserved data and ordering of storage operations persisted within the log on the non-volatile memory in response to a failure of one or more of the plurality of write operations.

18. The memory device of claim 17 , wherein the storage controller is further configured to acknowledge completion of the atomic storage request in response to one or more of: completing the first atomic transaction, and completing the second atomic transaction.

19. The memory device of claim 17 , wherein the storage controller is further configured to evict the data of the atomic storage request from the non-volatile memory in response to marking the data of the atomic storage request as evictable.

20. A system, comprising:

means for processing an atomic storage request directed to a backing store comprising:

means for appending data of the atomic storage request to a log maintained on a non-volatile memory, the log comprising an ordered sequence of storage operations performed on the non-volatile memory, including data to be invalidated by the atomic storage request;

means for designating that the data of the atomic storage request appended to the log on the non-volatile memory comprises dirty data that must be retained on the non-volatile memory;

means for retaining data to be invalidated by the atomic storage request within the log such that the atomic storage request is capable of being rolled back on the non-volatile memory by use of the retained data within the ordered sequence of storage operations of the log maintained on the non-volatile memory;

means for destaging the data of the atomic storage request to the backing store in a plurality of write operations;

means for designating that the data of the atomic storage request appended to the log on the non-volatile memory comprises clean data that can be evicted from the non-volatile memory in response to completion of all of the plurality of write operations; and

means for rolling back one or more completed write operations from the backing store by use of the retained data within the ordered sequence of storage operations of the log maintained on the non-volatile memory in response to a failure of one or more of the plurality of write operations.

21. The system of claim 20 , wherein the means for destaging comprises means for performing a plurality of write back operations.

22. The system of claim 20 , wherein the means for destaging comprises:

means for determining a utilization of the backing store; and

means for performing write operations of the plurality of write operations in response to the determined utilization of the backing store is below a threshold.

23. The system of claim 20 , wherein the means for destaging comprises:

means for determining an available capacity of the non-volatile memory; and

means for performing the plurality of write operations in response to determining that the available capacity of the non-volatile memory is less than a threshold.

24. The system of claim 20 , further comprising means for acknowledging completion of the atomic storage request in response to one or more of: appending the data of the atomic storage request to the log on the non-volatile memory, and destaging the data of the atomic storage request to the backing store.

25. The system of claim 20 , further comprising means for evicting the data of the atomic storage request from the non-volatile memory.

Assignments (12)
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/0807 →
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 033390/0566 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 10, 2013
From: FLYNN, DAVID; TALAGALA, NISHA
To: FUSION-IO, INC.
Reel/Frame 031381/0202 →
Continuity (8)
Continuation In Part 13193559 · Jul 28, 2011
Continuation In Part 12879004 · Sep 9, 2010
Continuation In Part 13837628
Continuation In Part 13335922 · Dec 22, 2011
Provisional Application 61368564 · Jul 28, 2010
Provisional Application 61382816 · Sep 14, 2010
Provisional Application 61579627 · Dec 22, 2011
Related Publication 20130205097A1 · Aug 8, 2013