IP Library Granted Patent US 10,860,221
Granted Patent B1
US 10,860,221 · App. 16/503,804 · Granted Dec 8, 2020

Page write to non-volatile data storage with failure recovery

Inventors: Vladimir Shveidel (Pardes-Hana, IL); Ronen Gazit (Tel Aviv, IL)
Assignee: EMC IP Holding Company LLC
G06F3/0619G06F3/064G06F3/0611G06F3/0623G06F3/0679G06F12/1009
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,860,221
App. No.
16/503,804
Granted
Dec 8, 2020
Kind
B1
Abstract

Modifications to be made to a page of non-volatile data storage and a current transaction sequence number are store into a protected memory. The current transaction sequence number is added to a previous version of the page and the modifications are applied to the previous version of the page to create a new version of the page that is written to the non-volatile data storage. A failure of the write may cause the stored modifications to be re-applied to the page in response to a transaction sequence number in a retrieved version of the page not matching the saved current transaction sequence number. A write completion status stored in a protected memory may indicate which ones of multiple copies of the page have been overwritten with the new version. Alternatively, an error-detecting code may be generated and written to non-volatile data storage with the new version to the multiple copies.

Claims (49)

1. A method of performing a page-write to a page of non-volatile data storage, comprising:

saving a set of modifications and a current transaction sequence number in a protected memory;

creating a new version of the page of non-volatile data storage by adding the current transaction sequence number to a previous version of the page and applying the set of modifications to the previous version of the page;

writing the new version of the page to non-volatile data storage; and

in response to a failure, retrieving a current version of the page from the non-volatile data storage, comparing a transaction sequence number contained in the current version of the page to a current transaction sequence number, and re-applying the set of modifications to the page of non-volatile data storage in response to the transaction sequence number contained in the current version of the page being less than the current transaction sequence number.

2. The method of claim 1 , wherein multiple copies of the page are maintained in the non-volatile data storage, each one of the multiple copies of the page containing a transaction sequence number, and further comprising:

in response to the new version of the page being written to the non-volatile data storage,

overwriting, within the non-volatile data storage, each of the multiple copies of the page with the new version of the page, and

after each one of the multiple copies of the page is overwritten with the new version of the page, updating a write completion status stored in protected memory to indicate which ones of the multiple copies of the page have been successfully overwritten with the new version of the page.

3. The method of claim 2 , further comprising:

in response to the failure, selecting one of the multiple copies of the page as the current version of the page based on the write completion status stored in the protected memory.

4. The method of claim 3 , wherein selecting one of the multiple copies of the page as the current version of the page based on the write completion status stored in the protected memory comprises:

in response to the write completion status stored in the protected memory indicating that no copies of the multiple copies of the page have been successfully overwritten with the new version of the page to which the set of modifications were previously applied, selecting one of the multiple copies of the page as the current version of the page that is the same as the previous version of the page.

5. The method of claim 3 , wherein selecting one of the multiple copies of the page as the current version of the page based on the write completion status stored in the protected memory comprises:

in response to the write completion status saved in the protected memory indicating that at least one of the multiple copies of the page has been successfully overwritten with the new version of the page to which the set of modifications were previously applied, selecting one of the multiple copies of the page as the current version of the page that is the same as the new version of the page.

6. The method of claim 1 , wherein multiple copies of the page are maintained in the non-volatile data storage, wherein each copy of the page in the non-volatile data storage has an error-detecting code stored therewith, and further comprising:

calculating an error-detecting code for the new version of the page;

adding the error-detecting code for the new version of the page to the new version of the page before writing the new version of the page to the non-volatile data storage; and

in response to the failure, selecting one of the multiple copies of the page as the current version of the page such that the error-detecting code for the current version of the page indicates that a contents of the current version of the page have not been corrupted.

7. The method of claim 1 , further comprising:

prior to saving the current transaction sequence number to the protected memory, generating the current transaction sequence number by incrementing a last previously used transaction sequence number.

8. A data storage system, comprising:

processing circuitry and memory coupled to the processing circuitry, the memory storing instructions, wherein the instructions, when executed by the processing circuitry, cause the processing circuitry to:

save a set of modifications and a current transaction sequence number in a protected memory;

create a new version of the page of non-volatile data storage by adding the current transaction sequence number to a previous version of the page and applying the set of modifications to the previous version of the page;

write the new version of the page to non-volatile data storage; and

in response to a failure, retrieve a current version of the page from the non-volatile data storage, compare a transaction sequence number contained in the current version of the page to a current transaction sequence number, and re-apply the set of modifications to the page of non-volatile data storage in response the transaction sequence number contained in the current version of the page being less than the current transaction sequence number.

9. The data storage system of claim 8 , wherein multiple copies of the page are maintained in the non-volatile data storage, each one of the multiple copies of the page containing a transaction sequence number, and wherein the instructions, when executed by the processing circuitry, cause the processing circuitry to:

in response to the new version of the page being written to the non-volatile data storage,

overwrite, within the non-volatile data storage, each of the multiple copies of the page with the new version of the page, and

after each one of the multiple copies of the page is overwritten with the new version of the page, update a write completion status stored in protected memory to indicate which ones of the multiple copies of the page have been successfully overwritten with the new version of the page.

10. The data storage system of claim 9 , wherein the instructions, when executed by the processing circuitry, cause the processing circuitry to:

in response to the failure, select one of the multiple copies of the page as the current version of the page based on the write completion status stored in the protected memory.

11. The data storage system of claim 10 , wherein the instructions, when executed by the processing circuitry, cause the processing circuitry to select one of the multiple copies of the page as the current version of the page based on the write completion status stored in the protected memory at least in part by causing the processing circuitry to:

in response to the write completion status stored in the protected memory indicating that no copies of the multiple copies of the page have been successfully overwritten with the new version of the page to which the set of modifications were previously applied, select one of the multiple copies of the page as the current version of the page that is the same as the previous version of the page.

12. The data storage system of claim 10 , wherein the instructions, when executed by the processing circuitry, cause the processing circuitry to select one of the multiple copies of the page as the current version of the page based on the write completion status stored in the protected memory at least in part by causing the processing circuitry to:

in response to the write completion status saved in the protected memory indicating that at least one of the multiple copies of the page has been successfully overwritten with the new version of the page to which the set of modifications were previously applied, select one of the multiple copies of the page as the current version of the page that is the same as the new version of the page.

13. The data storage system of claim 8 , wherein multiple copies of the page are maintained in the non-volatile data storage, wherein each copy of the page in the non-volatile data storage has an error-detecting code stored therewith, and wherein the instructions, when executed by the processing circuitry, further cause the processing circuitry to:

calculate an error-detecting code for the new version of the page;

add the error-detecting code for the new version of the page to the new version of the page before writing the new version of the page to the non-volatile data storage; and

in response to the failure, select one of the multiple copies of the page as the current version of the page such that the error-detecting code for the current version of the page indicates that a contents of the current version of the page have not been corrupted.

14. The data storage system of claim 8 , wherein the instructions, when executed by the processing circuitry, further cause the processing circuitry to:

prior to saving the current transaction sequence number to the protected memory, generate the current transaction sequence number by incrementing a last previously used transaction sequence number.

15. A computer program product, comprising:

a non-transitory, computer-readable medium having instructions stored thereon that, when executed by processing circuitry, cause the processing circuitry to perform a method comprising the steps of:

saving a set of modifications and a current transaction sequence number in a protected memory;

creating a new version of the page of non-volatile data storage by adding the current transaction sequence number to a previous version of the page and applying the set of modifications to the previous version of the page;

writing the new version of the page to non-volatile data storage; and

in response to a failure, retrieving a current version of the page from the non-volatile data storage, comparing a transaction sequence number contained in the current version of the page to a current transaction sequence number, and re-applying the set of modifications to the page of non-volatile data storage in response to the transaction sequence number contained in the current version of the page being less than the current transaction sequence number.

Assignments (9)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053311/0169) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 060438/0742 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (050724/0571) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 060436/0088 →
RELEASE OF SECURITY INTEREST AT REEL 050406 FRAME 421 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: EMC CORPORATION; DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 058213/0825 →
SECURITY INTEREST Recorded Jun 5, 2020
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 053311/0169 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Oct 15, 2019
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 050724/0571 →
SECURITY AGREEMENT Recorded Sep 17, 2019
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 050406/0421 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 28, 2019
From: SHVEIDEL, VLADIMIR; GAZIT, RONEN
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 050201/0660 →