IP Library Granted Patent US 12,688,125
Granted Patent B1
US 12,688,125 · App. 19/034,747 · Granted Jul 21, 2026

Method and apparatus for write destage

Inventors: Lixin Pang (Needham, MA); Rong Yu (West Roxbury, MA)
Assignee: Dell Products L.P.
G06F12/0802G06F2212/60
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 12,688,125
App. No.
19/034,747
Filed
Jan 23, 2025
Granted
Jul 21, 2026
Kind
B1
Art Unit
2132
USPC
711/118
Abstract

A method for use in a storage system, including: selecting one or more front-end (FE) tracks that are arranged to cache data associated with one or more write requests; selecting a given one of a plurality of buckets in an aging queue as a recipient for the FE tracks, the given bucket being selected based on one or more characteristics of the FE tracks; placing the FE tracks in the given bucket; updating an aging time for the given bucket; waiting until an age of the FE tracks is greater than the aging time of the aging queue, and placing the one or more FE tracks in a write commit queue after the age of the FE tracks has become greater than the aging time of the aging queue; and completing the write requests after one or more FE tracks have been placed in the write commit queue.

Claims (40)

1 . A method for use in a storage system, comprising:

selecting one or more front-end (FE) tracks that are arranged to cache data associated with one or more write requests;

selecting a given one of a plurality of buckets in an aging queue as a recipient for the FE tracks, the given bucket being selected based on one or more characteristics of the FE tracks;

placing the FE tracks in the given bucket;

updating an aging time for the given bucket;

waiting until an age of the FE tracks is greater than the aging time of the aging queue, and placing the one or more FE tracks in a write commit queue after the age of the FE tracks has become greater than the aging time of the aging queue; and

completing the write requests after one or more FE tracks have been placed in the write commit queue.

2 . The method of claim 1 , wherein the aging time of the given bucket is updated repeatedly by the storage system.

3 . The method of claim 1 , wherein waiting until the age of the FE tracks is greater than the aging time of the aging queue includes examining each of the buckets in a round-robin fashion to remove, from the given bucket, any FE tracks whose age is greater than the aging time of the given bucket.

4 . The method of claim 3 , wherein a respective aging time of each of the plurality of buckets is recalculated every time before the given bucket is examined.

5 . The method of claim 1 , wherein placing the FE tracks in the given bucket includes generating an object that points to the FE tracks and a BE track corresponding to the FE tracks and placing the object in the given bucket.

6 . The method of claim 1 , wherein the aging time of the given bucket is updated based on one or more of an indication of priority of the given bucket, a hit or miss rate that is associated with a caching space of the storage system, a load of the storage system or portion thereof, and a page-in time of the storage system.

7 . The method of claim 1 , wherein each of the plurality of buckets has a different priority.

8 . The method of claim 1 , wherein the given bucket is selected based on at least one of a frequency at which the FE tracks are expected to be updated in a future period and/or the frequency at which the one or more FE tracks have been updated in a past period.

9 . The method of claim 1 , wherein the given bucket is selected based on a write pattern associated with the FE tracks.

10 . The method of claim 1 , wherein the given bucket is selected based on a hit and/or miss rate that is associated with the FE tracks.

11 . A system, comprising:

a memory; and

at least one processor that is operatively coupled to the memory, the at least one processor being configured to perform the operations of:

selecting one or more front-end (FE) tracks that are arranged to cache data associated with one or more write requests;

selecting a given one of a plurality of buckets in an aging queue as a recipient for the FE tracks, the given bucket being selected based on one or more characteristics of the FE tracks;

placing the FE tracks in the given bucket;

updating an aging time for the given bucket;

waiting until an age of the FE tracks is greater than the aging time of the aging queue, and placing the one or more FE tracks in a write commit queue after the age of the FE tracks has become greater than the aging time of the aging queue; and

completing the write requests after one or more FE tracks have been placed in the write commit queue.

12 . The system of claim 11 , wherein the aging time of the given bucket is updated repeatedly by the storage system.

13 . The system of claim 11 , wherein waiting until the age of the FE tracks is greater than the aging time of the aging queue includes examining each of the buckets in a round-robin fashion to remove, from the given bucket, any FE tracks whose age is greater than the aging time of the given bucket.

14 . The system of claim 13 , wherein a respective aging time of each of the plurality of buckets is recalculated every time before the given bucket is examined.

15 . The system of claim 11 , wherein placing the FE tracks in the given bucket includes generating an object that points to the FE tracks and a BE track corresponding to the FE tracks and placing the object in the given bucket.

16 . The system of claim 11 , wherein the aging time of the given bucket is updated based on one or more of an indication of priority of the given bucket, a hit or miss rate that is associated with a caching space of the storage system, a load of the storage system or portion thereof, and a page-in time of the storage system.

17 . The system of claim 11 , wherein each of the plurality of buckets has a different priority.

18 . The system of claim 11 , wherein the given bucket is selected based on at least one of a frequency at which the FE tracks are expected to be updated in a future period and/or the frequency at which the one or more FE tracks have been updated in a past period.

19 . The system of claim 11 , wherein the given bucket is selected based on a write pattern associated with the FE tracks.

20 . A non-transitory computer readable medium storing one or more processor-executable instructions, which, when executed by at least one processor, cause the at least one processor to perform the operations of:

selecting one or more front-end (FE) tracks that are arranged to cache data associated with one or more write requests;

selecting a given one of a plurality of buckets in an aging queue as a recipient for the FE tracks, the given bucket being selected based on one or more characteristics of the FE tracks;

placing the FE tracks in the given bucket;

updating an aging time for the given bucket;

waiting until an age of the FE tracks is greater than the aging time of the aging queue, and placing the one or more FE tracks in a write commit queue after the age of the FE tracks has become greater than the aging time of the aging queue; and

completing the write requests after one or more FE tracks have been placed in the write commit queue.