IP Library Granted Patent US 11,847,346
Granted Patent B2
US 11,847,346 · App. 16/897,463 · Granted Dec 19, 2023

System and method for cooperative tail promotion in a log buffer

Inventors: Nimrod Shani (Raanana, IL); Ronen Gazit (Tel Aviv, IL); Uri Shabi (Tel Mond, IL)
Assignee: EMC IP Holding Company, LLC
G06F3/0656G06F3/0604G06F3/067
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,847,346
App. No.
16/897,463
Granted
Dec 19, 2023
Kind
B2
Abstract

A method, computer program product, and computing system for receiving data for storage in a storage system. The data may be written to a head entry of a log buffer, wherein the log buffer includes a plurality of data entries for flushing to the storage system. At least a portion of the plurality of data entries of the log buffer may be flushed, via a plurality of threads, to the storage system based upon, at least in part, a tail entry of the log buffer. A queue of committed data entries may be updated, via each thread of the plurality of threads, with one or more data entries of the log buffer flushed to the storage system by each thread. A new tail entry of the log buffer may be determined, via a thread of the plurality of threads, based upon, at least in part, the queue of committed data entries.

Claims (30)

1. A computer-implemented method, executed on a computing device, comprising:

receiving, via the computing device, data for storage in a storage system;

writing the data to a head entry of a log buffer, wherein the log buffer includes a plurality of data entries for flushing to the storage system;

flushing, via a plurality of threads, at least a portion of the plurality of data entries of the log buffer to the storage system based upon, at least in part, a tail entry of the log buffer, wherein flushing, via the plurality of threads, the at least a portion of the plurality of data entries of the log buffer to the storage system includes assigning one or more data entries of the log buffer to one or more threads of the plurality of threads for flushing to the storage system, wherein the one or more threads are assigned the at least a portion of the plurality of data entries ordered by logical block address, wherein a first data entry assigned to the plurality of threads is the tail entry of the log buffer;

updating, via each thread of the plurality of threads, a queue of committed data entries with one or more data entries of the log buffer flushed to the storage system by each thread;

determining whether the plurality of threads has flushed tail entry of the log buffer;

in response to determining that the plurality of threads has flushed the tail entry of the log buffer, aggregating committed data entries from the queue of committed data entries into a list of one or more committed data entries and one or more uncommitted data entries; and

determining, via a thread of the plurality of threads, a new tail entry of the log buffer based upon, at least in part, the queue of committed data entries, wherein the new tail entry of the log buffer indicates a next data entry to flush from the log buffer.

2. The computer-implemented method of claim 1 , wherein determining the new tail entry of the log buffer includes determining a first uncommitted data entry from the list of the one or more committed data entries and the one or more uncommitted data entries.

3. The computer-implemented method of claim 1 further comprising:

flushing, via the thread, additional entries of the plurality of data entries of the log buffer assigned to the thread in response to determining that the thread has not flushed the tail entry of the log buffer.

4. The computer-implemented method of claim 1 , wherein the queue of committed data entries is separate from the log buffer.

5. A computer program product residing on a non-transitory computer readable medium having a plurality of instructions stored thereon which, when executed by a processor, cause the processor to perform operations comprising:

receiving data for storage in a storage system;

writing the data to a head entry of a log buffer, wherein the log buffer includes a plurality of data entries for flushing to the storage system;

flushing, via a plurality of threads, at least a portion of the plurality of data entries of the log buffer to the storage system based upon, at least in part, a tail entry of the log buffer, wherein flushing, via the plurality of threads, the at least a portion of the plurality of data entries of the log buffer to the storage system includes assigning one or more data entries of the log buffer to one or more threads of the plurality of threads for flushing to the storage system, wherein the one or more threads are assigned the at least a portion of the plurality of data entries ordered by logical block address, wherein a first data entry assigned to the plurality of threads is the tail entry of the log buffer;

updating, via each thread of the plurality of threads, a queue of committed data entries with one or more data entries of the log buffer flushed to the storage system by each thread;

determining whether the plurality of threads has flushed tail entry of the log buffer;

in response to determining that the plurality of threads has flushed the tail entry of the log buffer, aggregating committed data entries from the queue of committed data entries into a list of one or more committed data entries and one or more uncommitted data entries; and

determining, via a thread of the plurality of threads, a new tail entry of the log buffer based upon, at least in part, the queue of committed data entries, wherein the new tail entry of the log buffer indicates a next data entry to flush from the log buffer.

6. The computer program product of claim 5 , wherein determining the new tail entry of the log buffer includes determining a first uncommitted data entry from the list of the one or more committed data entries and the one or more uncommitted data entries.

7. The computer program product of claim 5 , wherein the operations further comprise:

flushing, via the thread, additional entries of the plurality of data entries of the log buffer assigned to the thread in response to determining that the thread has not flushed the tail entry of the log buffer.

8. The computer program product of claim 5 , wherein the queue of committed data entries is separate from the log buffer.

9. A computing system comprising:

a memory; and

a processor configured to receive data for storage in a storage system, wherein the processor is further configured to write the data to a head entry of a log buffer, wherein the log buffer includes a plurality of data entries for flushing to the storage system, wherein the processor is further configured to flush, via a plurality of threads, at least a portion of the plurality of data entries of the log buffer to the storage system based upon, at least in part, a tail entry of the log buffer, wherein flushing, via the plurality of threads, the at least a portion of the plurality of data entries of the log buffer to the storage system includes assigning one or more data entries of the log buffer to one or more threads of the plurality of threads for flushing to the storage system, wherein the one or more threads are assigned the at least a portion of the plurality of data entries ordered by logical block address, wherein a first data entry assigned to the plurality of threads is the tail entry of the log buffer, wherein the processor is further configured to update, via each thread of the plurality of threads, a queue of committed data entries with one or more data entries of the log buffer flushed to the storage system by each thread, wherein the processor if further configured to determine whether the plurality of threads has flushed tail entry of the log buffer, and in response to determining that the plurality of threads has flushed the tail entry of the log buffer, aggregate committed data entries from the queue of committed data entries into a list of one or more committed data entries and one or more uncommitted data entries, and wherein the processor is further configured to determine, via a thread of the plurality of threads, a new tail entry of the log buffer based upon, at least in part, the queue of committed data entries, wherein the new tail entry of the log buffer indicates a next data entry to flush from the log buffer.

10. The computing system of claim 9 , wherein determining the new tail includes determining a first uncommitted data entry from the list of the one or more committed data entries and the one or more uncommitted data entries.

11. The computing system of claim 9 , wherein the processor is further configured to:

flush, via the thread, additional entries of the plurality of data entries of the log buffer assigned to the thread in response to determining that the thread has not flushed the tail entry of the log buffer.

Assignments (9)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053578/0183) Recorded Jun 10, 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 060332/0864 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053574/0221) Recorded Jun 10, 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 060333/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053573/0535) Recorded Jun 10, 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 060333/0106 →
RELEASE OF SECURITY INTEREST AT REEL 053531 FRAME 0108 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 058001/0371 →
SECURITY INTEREST Recorded Aug 21, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 053578/0183 →
SECURITY INTEREST Recorded Aug 21, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 053573/0535 →
SECURITY INTEREST Recorded Aug 21, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 053574/0221 →
SECURITY AGREEMENT Recorded Aug 18, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 053531/0108 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 10, 2020
From: SHANI, NIMROD; GAZIT, RONEN; SHABI, URI
To: EMC IP HOLDING COMPANY, LLC
Reel/Frame 052891/0708 →