IP Library Granted Patent US 11,269,746
Granted Patent B1
US 11,269,746 · App. 17/156,030 · Granted Mar 8, 2022

Recovery of page description blocks based on context

Inventors: Edward Zhao (Beijing, CN); Socheavy Heng (Framingham, MA); Sihang Xia (Beijing, CN); Xinlei Xu (Beijing, CN); Vamsi K. Vankamamidi (Hopkinton, MA)
Assignee: EMC IP Holding Company LLC
G06F11/2094G06F12/06G06F2201/82G06F2212/1032
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 11,269,746
App. No.
17/156,030
Granted
Mar 8, 2022
Kind
B1
Abstract

A method performed by a computing device having memory is provided. The method includes (a) detecting corruption in a first page description block (PDB) of a plurality of PDBs stored in sequence in the memory, each PDB storing a set of page descriptors (PDs) that point to pages of data sequentially stored in the memory that are part of a single transaction, PDBs that represent the same transaction being contiguous within the sequence; (b) searching for a second PDB of the plurality of PDBs, the second PDB satisfying the following criteria: (1) it is not corrupted, and (2) it represents a same transaction as the first PDB; and (c) reconstructing the first PDB using the second PDB. An apparatus, system, and computer program product for performing a similar method are also provided.

Claims (85)

1. A method, performed by a computing device having memory, the method comprising:

detecting corruption in a first page description block (PDB) of a plurality of PDBs stored in sequence in the memory, each PDB storing a set of page descriptors (PDs) that point to pages of data sequentially stored in the memory that are part of a single transaction, PDBs that represent the same transaction being contiguous within the sequence;

searching for a second PDB of the plurality of PDBs, the second PDB satisfying the following criteria:

(1) it is not corrupted, and

(2) it represents a same transaction as the first PDB; and

reconstructing the first PDB using the second PDB.

2. The method of claim 1 wherein searching includes, for a candidate PUB, determining whether it represents the same transaction as the first PDB based on (a) an index of the candidate PDB within its transaction and (b) a position within the sequence of the candidate PDB compared to the first PDB.

3. The method of claim 2 wherein the candidate PDB is located immediately prior to the first PDB, and determining whether it represents the same transaction as the first PDB includes:

reading, from the candidate PDB, (i) the index of the candidate PDB within its transaction and (ii) a total number of PDBs that represent its transaction; and

determining whether the total number exceeds the index.

4. The method of claim 2 wherein the candidate PDB is located subsequent to the first PDB, and determining whether it represents the same transaction as the first PDB includes:

reading, from the candidate PDB, the index of the candidate PDB within its transaction;

calculating a distance flow the first PDB to the candidate PDB, the distance being inclusive of endpoints; and

determining whether the distance is less than or equal to the index.

5. The method of claim 1 wherein reconstructing the first PDB using the second PDB includes:

reading an index of the second PDB within its transaction from the second PDB;

calculating an index of the first PDB within its transaction by subtracting a distance of the second PDB from the first PDB from the index of the second PDB within its transaction; and

storing the calculated index of the first PDB in a reconstruction of the first PDB.

6. The method of claim 1 wherein reconstructing the first PDB using the second PDB includes:

reading a value of a pointer of an initial PD of the second PDB from the second PDB;

calculating a value of a pointer of an initial PD of the first PDB by:

determining a distance of the second PDB from the first PDB;

multiplying the distance by a maximum number of PDs allowed per PDB, yielding a product; and

subtracting the product from the value of the pointer of the initial PD of the second PDB; and

storing the calculated value of the pointer of the initial PD of the first PDB in a reconstruction of the first PDB.

7. The method of claim 1 wherein reconstructing the first PDB using the second PDB includes:

reading header information from the second PDB; and

storing the read header information in a reconstruction of the first PDB.

8. The method of claim 1 wherein:

the memory of the computing device includes a non-volatile memory portion (NVMP) and a volatile system memory portion;

the plurality of PDBs are stored in sequence in the NVMP, each page of data pointed to by the PDs of the plurality of PDBs also being stored in the NVMP;

the method further comprises, in response to the computing device restarting, attempting to copy contents of the NVMP into the volatile system memory portion; and

detecting corruption in the first PDB is performed while attempting to copy contents of the NVMP into the volatile system memory portion.

9. The method of claim 8 wherein:

the computing device is a data storage apparatus (DSA) coupled to another DSA, each DSA being configured to perform data storage operations on a set of shared persistent storage, the DSA and the other DSA being configured to operate in an active-active arrangement, each transaction represented by the PDBs belonging to either the DSA or the other DSA, the NVMP being shared between the DSA and the other DSA;

the plurality of PDBs are stored within a first ring buffer of the NVMP shared between the DSA and the other DSA;

the NVMP includes a second ring buffer assigned to the DSA and a third ring buffer assigned to the other DSA; and

each page of data pointed to by the PDs of the plurality of PDBs is stored in one of the second ring buffer of the NVMP and the third ring buffer of the NVMP, based on whether the transaction represented by the PDB whose PDs point to that page belongs to the DSA or the other DSA, respectively.

10. An apparatus comprising:

memory; and

processing circuitry coupled to the memory, configured to:

detect corruption in a first page description block (PDB) of a plurality of PDBs stored in sequence in the memory, each PDB storing a set of page descriptors (PDs) that point to pages of data sequentially stored in the memory that are part of a single transaction, PDBs that represent the same transaction being contiguous within the sequence;

search for a second PDB of the plurality of PDBs, the second PDB satisfying the following criteria:

(1) it is not corrupted, and

(2) it represents a same transaction as the first PDB; and

reconstruct the first PDB using the second PDB.

11. The apparatus of claim 10 wherein searching includes, for a candidate PDB, determining whether it represents the same transaction as the first PDB based on (a) an index of the candidate PDB within its transaction and (b) a position within the sequence of the candidate PDB compared to the first PDB.

12. The apparatus of claim 11 wherein, when the candidate PDB is located immediately prior to the first PDB, determining whether it represents the same transaction as the first PDB includes:

reading, from the candidate PDB, (i) the index of the candidate PDB within its transaction and (ii) a total number of PDBs that represent its transaction; and

determining whether the total number exceeds the index.

13. The apparatus of claim 11 wherein, when the candidate PDB is located subsequent to the first PDB, determining whether it represents the same transaction as the first PDB includes:

reading, from the candidate PDB, the index of the candidate PDB within its transaction;

calculating a distance from the first PDB to the candidate PDB, the distance being inclusive of endpoints; and

determining whether the distance is less than or equal to the index.

14. The apparatus of claim 10 wherein reconstructing the first PDB using the second PDB includes:

reading an index of the second PDB within its transaction from the second PDB;

calculating an index of the first PDB within its transaction by subtracting a distance of the second PDB from the first PDB from the index of the second PDB within its transaction; and

storing the calculated index of the first PDB in a reconstruction of the first PDB.

15. The apparatus of claim 10 wherein reconstructing the first PDB using the second PDB includes:

reading a value of a pointer of an initial PD of the second PDB from the second PDB;

calculating a value of a pointer of an initial PD of the first PDB by:

determining a distance of the second PDB from the first PDB;

multiplying the distance by a maximum number of PDs allowed per PDB, yielding a product; and

subtracting the product from the value of the pointer of the initial PD of the second PDB; and

storing the calculated value of the pointer of the initial PD of the first PDB in a reconstruction of the first PDB.

16. The apparatus of claim 10 wherein reconstructing the first PDB using the second PDB includes:

reading header information from the second PDB; and

storing the read header information in the first PDB.

17. The apparatus of claim 10 wherein:

the memory includes a non-volatile memory portion (NVMP) and a volatile system memory portion;

the plurality of PDBs are stored in sequence in the NVMP, each page of data pointed to by the PDs of the plurality of PDBs also being stored in the NVMP;

the processing circuitry coupled to the memory is further configured to, in response to the apparatus restarting, attempt to copy contents of the NVMP into the volatile system memory portion of the memory; and

the processing circuitry coupled to the memory is configured to detect the corruption in the first PDB while attempting to copy contents of the NVMP into the volatile system memory portion.

18. The apparatus of claim 17 wherein:

the apparatus is a data storage appliance (DSA) coupled to another DSA, each DSA being configured to perform data storage operations on a set of shared persistent storage, the DSA and the other DSA being configured to operate in an active-active arrangement, each transaction represented by the PDBs belonging to either the DSA or the other DSA, the NVMP being shared between the DSA and the other DSA;

the plurality of PDBs are stored within a first ring buffer of the NVMP shared between the DSA and the other DSA;

the NVMP includes a second ring buffer assigned to the DSA and a third ring buffer assigned to the other DSA; and

each page of data pointed to by the PDs of the plurality of PDBs is stored in one of the second ring buffer of the NVMP and the third ring buffer of the NVMP, based on whether the transaction represented by the PDB whose PDs point to that page belongs to the DSA or the other DSA, respectively.

19. A computer program product comprising a non-transitory computer-readable storage medium storing a set of instructions, which, when perform by a computer having memory, cause the computer to:

detect corruption in a first page description block (PDB) of a plurality of PDBs stored in sequence in the memory, each PDB storing a set of page descriptors (PDs) that point to pages of data sequentially stored in the memory that are part of a single transaction, PDBs that represent the same transaction being contiguous within the sequence;

search for a second PDB of the plurality of PDBs, the second PDB satisfying the following criteria:

(1) it is not corrupted, and

(2) it represents a same transaction as the first PDB; and

reconstruct the first PDB using the second PDB.

20. The computer program product of claim 19 wherein searching includes, for a candidate PDB, determining whether it represents the same transaction as the first PDB based on (a) an index of the candidate PDB within its transaction and (b) a position within the sequence of the candidate PDB compared to the first PDB.

Assignments (9)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (055479/0342) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
Reel/Frame 062021/0460 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (055479/0051) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
Reel/Frame 062021/0663 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (056136/0752) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
Reel/Frame 062021/0771 →
RELEASE OF SECURITY INTEREST AT REEL 055408 FRAME 0697 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 058001/0553 →
SECURITY INTEREST Recorded Mar 3, 2021
From: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 056136/0752 →
SECURITY INTEREST Recorded Mar 3, 2021
From: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 055479/0051 →
SECURITY INTEREST Recorded Mar 3, 2021
From: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 055479/0342 →
SECURITY AGREEMENT Recorded Feb 25, 2021
From: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 055408/0697 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 17, 2021
From: ZHAO, EDWARD; HENG, SOCHEAVY; XIA, SIHANG; XU, XINLEI; VANKAMAMIDI, VAMSI K.
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 055297/0260 →