# US 2021/0342153 A1 · Flushing dirty pages from page buffers indicated by non-sequential page descriptors

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

- Number: US 2021/0342153 A1
- Document ID: US20210342153A1
- Status: Published application
- Kind: A1
- Application number: 16/864,764
- Filed: 2020-05-01
- Published: 2021-11-04
- Earliest claimed: 2020-05-01
- Assignees: EMC IP Holding Company LLC
- Applicants: EMC IP Holding Company LLC
- Inventors: Geng Han; Philippe Armangau; Jian Gao; Vamsi K. Vankamamidi
- Web page: https://patentgrep.com/patent/US20210342153A1

## CPC

- G06F 9/30047: {Prefetch instructions; cache control instructions}
- G06F 12/0246: {in block erasable memory, e.g. flash memory}
- G06F 9/5016: {the resource being the memory}
- G06F 9/5022: {Mechanisms to release resources}
- G06F 9/544: {Buffers; Shared memory; Pipes}
- G06F 12/0882: Page mode
- G06F 12/123: with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
- G06F 2209/5011: Pool
- G06F 2212/7201: Logical to physical mapping or translation of blocks or pages
- G06F 2212/7203: Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Dirty pages of cached user data are persistently stored to page buffers that are allocated from a page buffer pool in a persistent data storage resource of a data storage system, and are indicated by page descriptors that are stored at a head of a temporally ordered page descriptor ring as the dirty pages are stored to the page buffers. The disclosed technology performs a flush operation by selecting a work-set of non-sequential page descriptors within the page descriptor ring, flushing dirty pages from page buffers indicated by the page descriptors in the work-set to non-volatile data storage drives of the data storage system, and storing, for each one of the page buffers indicated by the page descriptors in the work-set, an indication that the page buffer is available for re-use.

## Claims

### Claim 1

A method comprising:
persistently storing dirty pages of cached user data received by a data storage system to page buffers that are allocated from a page buffer pool and indicated by page descriptors that are allocated at a head of a temporally ordered page descriptor ring as the dirty pages are stored to the page buffers; and
performing a flush operation by selecting a work-set of non-sequential page descriptors within the page descriptor ring, flushing dirty pages from page buffers indicated by the page descriptors in the work-set to non-volatile data storage drives of the data storage system, and storing, for each one of the page buffers indicated by the page descriptors in the work-set, an indication that the page buffer is available for re-use.

### Claim 2 (depends on 1)

The method of claim 1, wherein a tail of the page descriptor ring indicates one of the page descriptors in the work-set prior to performing the flush operation; and
wherein performing the flush operation further comprises:
updating the tail of the page descriptor ring to indicate a page descriptor not contained in the work-set and located after the page descriptor in the work-set indicated by the tail of the page descriptor ring prior to performing the flush operation;
generating a tail marker that includes the updated tail of the page descriptor ring and a location within the descriptor ring of each page descriptor in the work-set that is located above the updated tail of the page descriptor ring; and
storing the tail marker at the head of the page descriptor ring.

### Claim 3 (depends on 2)

The method of claim 2, wherein the page buffers are allocated from a page buffer pool in a persistent data storage resource that is separate from the non-volatile data storage drives of the data storage system; and
wherein the page descriptor ring is located in a memory of a storage processor of the data storage system.

### Claim 4 (depends on 3)

The method of claim 3, wherein selecting the work-set of non-sequential page descriptors within the page descriptor ring comprises selecting page descriptors indicating buffer descriptors that store dirty pages having logical block addresses that are mapped by a single branch of a mapping tree that is used by the storage processor to map logical block addresses to corresponding physical page locations on the non-volatile data storage drives.

### Claim 5 (depends on 4)

The method of claim 4, further comprising:
maintaining, for the page buffer pool, a page buffer allocation bit map, wherein the page buffer allocation bit map includes a bit for each page buffer in the page buffer pool indicating whether that page buffer is currently available to store a dirty page; and
wherein storing the indication, for each one of the page buffers indicated by the page descriptors in the work-set processed by the flush operation, that the page buffer is available for re-use after completion of the flush operation includes modifying the bit corresponding to the page buffer in the page buffer allocation bit map to indicate that the page buffer is currently available to store a dirty page.

### Claim 6 (depends on 5)

The method of claim 5, further comprising:
maintaining a persistent page descriptor buffer pool in the persistent data storage resource, wherein the persistent page descriptor buffer pool contains a plurality of persistent page descriptor buffers;
wherein each page descriptor in the page descriptor ring that indicates a page buffer storing a dirty page is associated with a persistent page descriptor buffer that is allocated from the persistent page descriptor buffer pool.

### Claim 7 (depends on 6)

The method of claim 6, wherein the persistent page descriptor buffers allocated from the persistent page descriptor pool store copies of page descriptors in the page descriptor ring.

### Claim 8 (depends on 7)

The method of claim 7, further comprising overprovisioning the page descriptor ring such that the page descriptor ring has a total capacity that exceeds a total capacity of the persistent page descriptor buffer pool.

### Claim 9 (depends on 8)

The method of claim 8, wherein the persistent data storage resource comprises a battery-backed memory within the data storage system that is separate from the non-volatile data storage drives of the data storage system.

### Claim 10

A data storage system comprising:
at least one storage processor including processing circuitry and a memory;
a plurality of non-volatile data storage drives communicably coupled to the storage processor; and
wherein the memory has program code stored thereon, wherein the program code, when executed by the processing circuitry, causes the processing circuitry to:
persistently store dirty pages of cached user data received by a data storage system to page buffers that are allocated from a page buffer pool and indicated by page descriptors that are allocated at a head of a temporally ordered page descriptor ring as the dirty pages are stored to the page buffers; and
perform a flush operation by selecting a work-set of non-sequential page descriptors within the page descriptor ring, flushing dirty pages from page buffers indicated by the page descriptors in the work-set to non-volatile data storage drives of the data storage system, and storing, for each one of the page buffers indicated by the page descriptors in the work-set, an indication that the page buffer is available for re-use.

### Claim 11 (depends on 10)

The data storage system of claim 10, wherein a tail of the page descriptor ring indicates one of the page descriptors in the work-set prior to performing the flush operation, and wherein the program code, when executed by the processing circuitry, further causes the processing circuitry perform the flush operation at least in part by causing the processing circuitry to:
update the tail of the page descriptor ring to indicate a page descriptor not contained in the work-set and located after the page descriptor in the work-set indicated by the tail of the page descriptor ring prior to performing the flush operation;
generate a tail marker that includes the updated tail of the page descriptor ring and a location within the descriptor ring of each page descriptor in the work-set that is located above the updated tail of the page descriptor ring; and
store the tail marker at the head of the page descriptor ring.

### Claim 12 (depends on 11)

The data storage system of claim 11, further comprising:
wherein the data storage system includes a persistent data storage resource that is separate from the non-volatile data storage drives;
wherein the page buffers are allocated from a page buffer pool in the persistent data storage resource; and
wherein the page descriptor ring is located in the memory of the storage processor of the data storage system.

### Claim 13 (depends on 12)

The data storage system of claim 12, wherein the program code, when executed by the processing circuitry, further causes the processing circuitry to select the work-set of non-sequential page descriptors within the page descriptor ring at least in part by causing the processing circuitry to select page descriptors indicating buffer descriptors that store dirty pages having logical block addresses that are mapped by a single branch of a mapping tree that is used by the storage processor to map logical block addresses to corresponding physical page locations on the non-volatile data storage drives.

### Claim 14 (depends on 13)

The data storage system of claim 13, wherein the program code, when executed by the processing circuitry, further causes the processing circuitry to:
maintain, for the page buffer pool, a page buffer allocation bit map, wherein the page buffer allocation bit map includes a bit for each page buffer in the page buffer pool indicating whether that page buffer is currently available to store a dirty page; and
store the indication, for each one of the page buffers indicated by the page descriptors in the work-set processed by the flush operation, that the page buffer is available for re-use after completion of the flush operation at least in part by modifying the bit corresponding to the page buffer in the page buffer allocation bit map to indicate that the page buffer is currently available to store a dirty page.

### Claim 15 (depends on 14)

The data storage system of claim 14, wherein the program code, when executed by the processing circuitry, further causes the processing circuitry to:
maintain a persistent page descriptor buffer pool in the persistent data storage resource, wherein the persistent page descriptor buffer pool contains a plurality of persistent page descriptor buffers; and
wherein each page descriptor in the page descriptor ring that indicates a page buffer storing a dirty page is associated with a persistent page descriptor buffer allocated from the persistent page descriptor pool.

### Claim 16 (depends on 15)

The data storage system of claim 15, wherein the persistent page descriptor buffers allocated from the persistent page descriptor buffer pool store copies of page descriptors in the page descriptor ring.

### Claim 17 (depends on 16)

The data storage system of claim 16, wherein the program code, when executed by the processing circuitry, further causes the processing circuitry to overprovision the page descriptor ring such that the page descriptor ring has a total capacity that exceeds a total capacity of the page descriptor pool.

### Claim 18 (depends on 17)

The data storage system of claim 17, wherein the persistent data storage resource comprises a battery-backed memory within the data storage system that is separate from the non-volatile data storage drives of the data storage system.

### Claim 19

A computer program product including a non-transitory computer readable medium having instructions stored thereon, wherein the instructions, when executed on processing circuitry, cause the processing circuitry to perform the steps of:
persistently storing dirty pages of cached user data received by a data storage system to page buffers that are allocated from a page buffer pool and indicated by page descriptors that are allocated at a head of a temporally ordered page descriptor ring as the dirty pages are stored to the page buffers; and
performing a flush operation by selecting a work-set of non-sequential page descriptors within the page descriptor ring, flushing dirty pages from page buffers indicated by the page descriptors in the work-set to non-volatile data storage drives of the data storage system, and storing, for each one of the page buffers indicated by the page descriptors in the work-set, an indication that the page buffer is available for re-use.
