IP Library Granted Patent US 11,232,043
Granted Patent B2
US 11,232,043 · App. 16/862,735 · Granted Jan 25, 2022

Mapping virtual block addresses to portions of a logical address space that point to the virtual block addresses

Inventors: Dixitkumar Vishnubhai Patel (Monroe, NJ); Rohit K. Chawla (Scotch Plains, NJ); Soumyadeep Sen (Highland Park, NJ)
Assignee: EMC IP Holding Company LLC
G06F12/109G06F11/1068G06F12/0246G06F12/1009G06F12/1036G06F16/2246G06F2212/7201
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,232,043
App. No.
16/862,735
Granted
Jan 25, 2022
Kind
B2
Abstract

An apparatus includes a processing device configured to generate log records each representing a pointer from a leaf page in a logical address space of a storage system to a virtual block address and comprising a leaf page address of the leaf page. The processing device is also configured to identifying a subset of the log records representing pointers to a given virtual block address to determine a first reference count, and to determine whether the first reference count is different than a second reference count obtained from a given virtual entry of a given virtual block structure that corresponds to the given virtual block address. The processing device is further configured, responsive to determining that the first and second reference counts are different, to modify pointers to the given virtual block address in leaf pages with associated leaf page addresses in the identified subset of the log records.

Claims (39)

1. An apparatus comprising:

at least one processing device comprising a processor coupled to a memory;

the at least one processing device being configured to perform steps of:

generating a plurality of log records each (i) representing a pointer from one of a plurality of leaf pages in a logical address space of a storage system to one of a plurality of virtual block addresses in the logical address space and (ii) comprising a leaf page address of said one of the plurality of leaf pages;

identifying a subset of the plurality of log records that represent pointers to a given one of the plurality of virtual block addresses to determine a first reference count for the given virtual block address;

determining whether the first reference count for the given virtual block address is different than a second reference count for the given virtual block address, the second reference count being obtained from a given virtual entry of a given virtual block structure in the logical address space that corresponds to the given virtual block address; and

responsive to determining that the first reference count for the given virtual block address is different than the second reference count for the given virtual block address, modifying pointers to the given virtual block address in a subset of the plurality of leaf pages with associated leaf page addresses in the identified subset of the plurality of log records.

2. The apparatus of claim 1 wherein the logical address space is organized as a B-tree comprising a leaf logical page level comprising the plurality of leaf pages and one or more additional logical page levels above the leaf logical page level.

3. The apparatus of claim 2 wherein the one or more additional logical page levels comprise:

a middle page level comprising a plurality of middle pages associated with respective subsets of the plurality of leaf pages in the leaf page level; and

a top page level comprising one or more top pages associated with respective subsets of the plurality of middle pages in the middle page level.

4. The apparatus of claim 3 wherein a given one of the one or more top pages represents an n*m sized portion of the logical address space that references n of the plurality of middle pages in the middle page level, a given one of the n middle pages represents an m sized portion of the logical address space and references n of the plurality of leaf pages in the leaf page level, and a given one of the n leaf pages represents an m/n sized portion of the logical address space.

5. The apparatus of claim 4 wherein n is 512 and m is one gigabyte.

6. The apparatus of claim 3 wherein modifying the pointers to the given virtual block in the subset of the plurality of leaf pages further comprises:

identifying a subset of the plurality of middle pages that point to the subset of the plurality of leaf pages; and

generating a map of the identified subset of the plurality of middle pages.

7. The apparatus of claim 6 wherein the given virtual block address comprises a corrupted virtual block address, and wherein the generated map comprises a corrupted range bitmap of the logical address space.

8. The apparatus of claim 1 wherein modifying the pointers to the given block address in the subset of the plurality of leaf pages comprises marking the given virtual block address as corrupted and setting the pointers to the given block address in the subset of the plurality of leaf pages to a designated value.

9. The apparatus of claim 8 wherein the designated value comprises an uncorrectable bit marking an associated portion of the logical address space as corrupted.

10. The apparatus of claim 1 wherein generating the plurality of log records comprises maintaining two or more buffers associated with respective ranges of the plurality of virtual block addresses, each of the two or more buffers storing ones of the plurality of log records that reference virtual block addresses in its associated range of virtual block addresses.

11. The apparatus of claim 10 wherein determining the first reference count for the given virtual address comprises performing in-memory consolidation of log records for each virtual block address in a given one of the two or more ranges of virtual block addresses that includes the given virtual block address.

12. The apparatus of claim 10 wherein each of the two or more buffers has a designated size corresponding to a physical block address size in the storage system.

13. The apparatus of claim 12 wherein maintaining the two or more buffers comprises, responsive to a size of the log records in a given one of the two or more buffers reaching the physical block address size in the storage system, persisting log records stored in the given buffer from an in-memory cache to an external storage device.

14. The apparatus of claim 1 wherein generating the plurality of log records is performed as part of a file system consistency check of the storage system.

15. A computer program product comprising a non-transitory processor-readable storage medium having stored therein program code of one or more software programs, wherein the program code when executed by at least one processing device causes the at least one processing device to perform steps of:

generating a plurality of log records each (i) representing a pointer from one of a plurality of leaf pages in a logical address space of a storage system to one of a plurality of virtual block addresses in the logical address space and (ii) comprising a leaf page address of said one of the plurality of leaf pages;

identifying a subset of the plurality of log records that represent pointers to a given one of the plurality of virtual block addresses to determine a first reference count for the given virtual block address;

determining whether the first reference count for the given virtual block address is different than a second reference count for the given virtual block address, the second reference count being obtained from a given virtual entry of a given virtual block structure in the logical address space that corresponds to the given virtual block address; and

responsive to determining that the first reference count for the given virtual block address is different than the second reference count for the given virtual block address, modifying pointers to the given virtual block address in a subset of the plurality of leaf pages with associated leaf page addresses in the identified subset of the plurality of log records.

16. The computer program product of claim 15 wherein modifying the pointers to the given block address in the subset of the plurality of leaf pages comprises marking the given virtual block address as corrupted and setting the pointers to the given block address in the subset of the plurality of leaf pages to a designated value.

17. The computer program product of claim 16 wherein the designated value comprises an uncorrectable bit marking an associated portion of the logical address space as corrupted.

18. A method comprising steps of:

generating a plurality of log records each (i) representing a pointer from one of a plurality of leaf pages in a logical address space of a storage system to one of a plurality of virtual block addresses in the logical address space and (ii) comprising a leaf page address of said one of the plurality of leaf pages;

identifying a subset of the plurality of log records that represent pointers to a given one of the plurality of virtual block addresses to determine a first reference count for the given virtual block address;

determining whether the first reference count for the given virtual block address is different than a second reference count for the given virtual block address, the second reference count being obtained from a given virtual entry of a given virtual block structure in the logical address space that corresponds to the given virtual block address; and

responsive to determining that the first reference count for the given virtual block address is different than the second reference count for the given virtual block address, modifying pointers to the given virtual block address in a subset of the plurality of leaf pages with associated leaf page addresses in the identified subset of the plurality of log records;

wherein the method is performed by at least one processing device comprising a processor coupled to a memory.

19. The method of claim 18 wherein modifying the pointers to the given block address in the subset of the plurality of leaf pages comprises marking the given virtual block address as corrupted and setting the pointers to the given block address in the subset of the plurality of leaf pages to a designated value.

20. The method of claim 19 wherein the designated value comprises an uncorrectable bit marking an associated portion of the logical address space as corrupted.

Assignments (9)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052851/0917) 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 IP HOLDING COMPANY LLC
Reel/Frame 060436/0509 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052851/0081) 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 IP HOLDING COMPANY LLC
Reel/Frame 060436/0441 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052852/0022) 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 IP HOLDING COMPANY LLC
Reel/Frame 060436/0582 →
RELEASE OF SECURITY INTEREST AT REEL 052771 FRAME 0906 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 058001/0298 →
SECURITY INTEREST Recorded Jun 5, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052852/0022 →
SECURITY INTEREST Recorded Jun 5, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052851/0081 →
SECURITY INTEREST Recorded Jun 5, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052851/0917 →
SECURITY AGREEMENT Recorded May 28, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 052771/0906 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 30, 2020
From: PATEL, DIXITKUMAR VISHNUBHAI; CHAWLA, ROHIT K.; SEN, SOUMYADEEP
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 052534/0807 →
Continuity (1)
Related Publication 20210342273A1 · Nov 4, 2021
Cited By (1)
US 12,360,707