# US 2021/0342273 A1 · Mapping virtual block addresses to portions of a logical address space that point to the virtual block addresses

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2021/0342273 A1
- Document ID: US20210342273A1
- Status: Published application
- Kind: A1
- Application number: 16/862,735
- Filed: 2020-04-30
- Published: 2021-11-04
- Earliest claimed: 2020-04-30
- Assignees: EMC IP Holding Company LLC
- Applicants: EMC IP Holding Company LLC
- Inventors: Dixitkumar Vishnubhai Patel; Rohit K. Chawla; Soumyadeep Sen
- Web page: https://patentgrep.com/patent/US20210342273A1

## CPC

- G06F 12/0868: Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
- G06F 12/109: for multiple virtual address spaces, e.g. segmentation (G06F12/1036 takes precedence)
- G06F 3/0608: {Saving storage space on storage systems}
- G06F 3/0641: {De-duplication techniques}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 11/1068: {in sector programmable memories, e.g. flash disk (G06F11/1072 takes precedence)}
- G06F 11/108: {Parity data distribution in semiconductor storages, e.g. in SSD}
- G06F 12/0246: {in block erasable memory, e.g. flash memory}
- G06F 12/1009: using page tables, e.g. page table structures
- G06F 12/1036: for multiple virtual address spaces, e.g. segmentation (G06F12/1045 takes precedence)
- G06F 16/2246: {Trees, e.g. B+trees}
- G06F 2212/1016: Performance improvement
- G06F 2212/214: Solid state disk
- G06F 2212/283: Plural cache memories
- G06F 2212/401: Compressed data
- G06F 2212/651: Multi-level translation tables
- G06F 2212/657: Virtual address space management
- G06F 2212/7201: Logical to physical mapping or translation of blocks or pages
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## 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

### Claim 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.

### Claim 2 (depends on 1)

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.

### Claim 3 (depends on 2)

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.

### Claim 4 (depends on 3)

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.

### Claim 5 (depends on 4)

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

### Claim 6 (depends on 3)

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.

### Claim 7 (depends on 6)

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.

### Claim 8 (depends on 1)

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.

### Claim 9 (depends on 8)

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

### Claim 10 (depends on 1)

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.

### Claim 11 (depends on 10)

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.

### Claim 12 (depends on 10)

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.

### Claim 13 (depends on 12)

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.

### Claim 14 (depends on 1)

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.

### Claim 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.

### Claim 16 (depends on 15)

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.

### Claim 17 (depends on 16)

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.

### Claim 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.

### Claim 19 (depends on 18)

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.

### Claim 20 (depends on 19)

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