IP Library Granted Patent US 10,223,208
Granted Patent B2
US 10,223,208 · App. 14/230,844 · Granted Mar 5, 2019

Annotated atomic write

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 10,223,208
App. No.
14/230,844
Granted
Mar 5, 2019
Kind
B2
Abstract

Techniques are disclosed relating to writing data atomically to one or more recording media. In one embodiment, a request is received to perform an atomic write for a set of data. Responsive to the request, the set of data is written across a plurality of storage units including storing metadata at a dedicated location within at least one of the plurality of storage units. The metadata is usable to determine whether the writing completed successfully. In some embodiments, the request is received from an application that has been assigned an address range of the plurality of storage units. In such an embodiment, the address range is accessible to the application for storing data, and the dedicated location resides outside of the address range. In one embodiment, the metadata specifies an address range where the set of data was written and a sequence number.

Claims (80)

1. A method to improve recovery of a system crash using metadata the method comprising:

receiving, from an application, a request to perform an atomic write operation for a set of data;

responsive to the request, writing the set of data across a plurality of storage units including storing metadata at a dynamic location within at least one of the plurality of storage units; and

deny the application access to the dynamic location at which the metadata is written,

wherein:

the metadata is usable to determine whether the writing completed;

the metadata comprises multiple bits that identify the set of data of the atomic write operation; and

the application has been assigned an accessible address range of the plurality of storage units.

2. The method of claim 1 , further comprising:

assigning at least one sequence number to atomic write operations performed to the plurality of storage units,

wherein:

the sequence numbers are indicative of an order in which the atomic write operations occurred; and

the metadata specifies an address range where the set of data is written and a sequence number corresponding to the writing of the set of data.

3. The method of claim 2 , further comprising:

rolling back the atomic write operation, wherein the rolling back includes invalidating data written to the specified address range.

4. The method of claim 1 , wherein:

the writing includes storing a respective instance of a sequence number on each of the plurality of storage units to which the set of data is written;

the metadata includes another instance of the sequence number; and

the method further comprises determining whether the writing completed by verifying that the instances of the sequence number match.

5. The method of claim 1 , further comprising:

reading the metadata from each of the plurality of storage units; and

determining, based on reading the metadata, that the atomic write operation failed.

6. The method of claim 1 , further comprising:

indicating, to the application, that the writing failed to complete successfully, wherein the indicating includes identifying one or more logical block addresses for which the set of data was not written successfully; and

receiving, from the application, a request to rollback the atomic write operation.

7. The method of claim 1 , wherein the stored metadata includes metadata provided by the application.

8. The method of claim 1 , wherein storing the metadata includes:

storing a first instance of the metadata at a dedicated location within a first of the plurality of storage devices; and

storing a second instance of the metadata at a dedicated location within a second of the plurality of storage devices, wherein the first and second instances are redundant.

9. An apparatus to improve recovery of a system crash using metadata, the apparatus comprising:

a vector storage module configured to perform a group of storage operations for a set of data on a plurality of storage devices, including storing the metadata independent of the set of data, wherein:

the metadata indicates whether the group of storage operations was performed successfully:

the metadata comprises multiple bits that identify the set of data;

the vector storage module is configured to store the metadata within a dynamic storage block in at least one of the plurality of storage devices; and

the vector storage module is configured to deny an application associated with the set of data access to the dynamic storage block; and

a rollback module configured to rollback, in response to receiving a request, the group of storage operations based on the stored metadata;

wherein the vector storage module and the rollback module comprise one or more of circuitry and instructions stored on a non-transitory computer readable medium, and the instructions stored on the non-transitory computer readable medium are executable by one or more processors.

10. The apparatus of claim 9 , wherein:

the request is a request to perform a partial rollback; and

the rollback module is configured to rollback a subset of the group of storage operations but not all of the group of storage operations in response to the request.

11. The apparatus of claim 9 , wherein the rollback module is configured to rollback the group of storage operations by issuing one or more TRIM commands to the plurality of storage devices.

12. The apparatus of claim 9 , wherein:

the vector storage module is configured to perform a storage operation for a portion of the set of data that includes encapsulating the portion within a packet having a packet header;

the packet header includes one or more bits usable to determine whether the storage operation was performed successfully; and

the one or more bits are distinct from the stored metadata.

13. An apparatus to improve recovery of a system crash using metadata, the apparatus comprising:

a controller configured to:

attempt an atomic write for a set of data to an address range associated with a group of storage devices;

store metadata in a storage block having a dynamic address external to the address range, wherein:

the address range is accessible to an application associated with the data;

the metadata is indicative of writing the set of data; and

the metadata comprises multiple bits that identify the set of data of the atomic write;

deny the application access to the dynamic address external to the address range;

write a respective portion of the set of data to each storage device in the group of storage devices along with a respective instance of a sequence number indicative of an ordering in which the atomic write was attempted; and

determine whether the atomic write completed successfully by comparing the instances of the sequence number with an instance of the sequence number in the metadata;

wherein the controller comprises one or more of circuitry and instructions stored on a non-transitory computer readable medium, and the instructions stored on the non-transitory computer readable medium are executable by one or more processors.

14. The apparatus of claim 13 , wherein:

the controller is configured to maintain a respective storage block for each of a plurality of applications; and

each storage block includes metadata corresponding to a most recent atomic write for that application.

15. The apparatus of claim 13 , wherein:

the controller is configured to maintain a plurality of storage blocks for an application; and

the plurality of storage blocks includes metadata corresponding to a plurality of most recent atomic writes for the application.

16. The apparatus of claim 13 , wherein:

the address range is a logical block address range of a sparse address space; and

the external address is a logical block address that does not abut the logical block address range.

17. An apparatus to improve recovery of a system crash using metadata, the apparatus comprising:

a first means for storing data using a log-structure, wherein the first means includes a plurality of storage blocks;

a second means for writing data atomically to a subset of the plurality of storage blocks and writing the metadata to a dynamic storage block that is not within the subset,

wherein:

the metadata is usable to determine whether the atomical writing of the data completed;

the metadata is usable to rollback the atomical writing of the data; and

the metadata comprises multiple bits that identify that data atomically written; and

a third means for denying a application that requests data to be written atomically access to an address of the dynamic storage block.

18. A method to improve recovery of a system crash using metadata, the method comprising:

an application issuing a request for an atomic write operation, wherein:

the atomic write operation includes writing a set of data across a plurality of storage units and writing he metadata at a dynamic location within at least one of the plurality of storage units;

the metadata is usable to determine whether the writing of the data completed; and

the metadata comprises multiple bits that identify the set of data of the atomic write operation;

the application determining, based on an attempt to read the metadata, whether the atomic write operation completed; and

denying the application access to the dynamic location.

Assignments (16)
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 31, 2024
From: SANDISK TECHNOLOGIES LLC
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 069796/0423 →
RELEASE OF SECURITY INTEREST Recorded Jun 3, 2024
From: ANTARES CAPITAL LP, AS ADMINISTRATIVE AGENT
To: CUSTOM SPINE ACQUISITION, INC.
Reel/Frame 067605/0646 →
RELEASE OF SECURITY INTEREST Recorded Jun 3, 2024
From: CORTLAND CAPITAL MARKET SERVICES LLC, AS AGENT
To: CUSTOM SPINE ACQUISITION, INC.
Reel/Frame 067605/0717 →
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 →
SECURITY INTEREST Recorded May 4, 2016
From: CUSTOM SPINE ACQUISITION, INC.
To: CORTLAND CAPITAL MARKET SERVICES LLC, AS AGENT
Reel/Frame 038608/0230 →
SECURITY INTEREST Recorded Apr 29, 2016
From: CUSTOM SPINE ACQUISITION, INC.
To: ANTARES CAPITAL LP, AS AGENT
Reel/Frame 038581/0722 →
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 033390/0566 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 31, 2014
From: WIPFEL, ROBERT
To: FUSION-IO, INC.
Reel/Frame 032564/0314 →