IP Library Granted Patent US 11,340,900
Granted Patent B2
US 11,340,900 · App. 16/864,764 · Granted May 24, 2022

Flushing dirty pages from page buffers indicated by non-sequential page descriptors

Inventors: Geng Han (Beijing, CN); Philippe Armangau (Acton, MA); Jian Gao (Beijing, CN); Vamsi K. Vankamamidi (Hopkinton, MA)
Assignee: EMC IP Holding Company LLC
G06F9/30047G06F9/5016G06F9/5022G06F9/544G06F12/0882G06F12/123G06F2209/5011G06F2212/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,340,900
App. No.
16/864,764
Granted
May 24, 2022
Kind
B2
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 (52)

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;

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.

2. The method of claim 1 , 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.

3. The method of claim 2 , 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.

4. The method of claim 3 , 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.

5. The method of claim 4 , 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.

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

7. The method of claim 6 , 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.

8. The method of claim 7 , 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.

9. 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;

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.

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;

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.

11. The data storage system of claim 10 , 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.

12. The data storage system of claim 11 , 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.

13. The data storage system of claim 12 , 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.

14. The data storage system of claim 13 , 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.

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

16. The data storage system of claim 15 , 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.

17. The data storage system of claim 16 , 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.

Assignments (9)
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 (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 (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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 7, 2020
From: HAN, GENG; ARMANGAU, PHILIPPE; GAO, JIAN; VANKAMAMIDI, VAMSI K.
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 053430/0070 →
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 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 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 →