IP Library Granted Patent US 10,528,529
Granted Patent B1
US 10,528,529 · App. 14/581,254 · Granted Jan 7, 2020

Multi-core journal system and method

Inventors: Sitaram Pawar (Shrewsbury, MA); Philippe Armangau (Acton, MA); Srinivasa Rao Vempati (Upton, MA)
Assignee: EMC IP Holding Company LLC
G06F16/1815G06F3/065G06F3/0619G06F3/0656G06F3/0689
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 10,528,529
App. No.
14/581,254
Granted
Jan 7, 2020
Kind
B1
Abstract

A method, computer program product, and computing system for receiving a first write request on a front-end computing system within a storage system. The first write request concerns writing a first data portion to a storage array within the storage system. A first log entry is generated within a journal file. The first log entry identifies a first differential storage quantity associated with storing the first data portion in the storage array within the storage system.

Claims (51)

1. A computer-implemented method comprising:

receiving, on a computing device, a first write request on a front-end computing system within a storage system, wherein the first write request concerns writing a first data portion to a storage array within the storage system;

generating, on the computing device, a first log entry within a journal file, wherein the first log entry identifies a first differential storage quantity associated with storing the first data portion in the storage array within the storage system and includes one or more of a log record number for the first data portion, attributes of the first data portion, a location within the storage array of the first data portion, permissions associated with the first data portion, and a unique transaction identifier for the first write request, wherein the first log entry includes tracking slice differential metadata defining a change in free data blocks in a target slice partition required to store the first data portion and tracking cylinder group differential metadata defining a change in free data blocks and block bitmaps in a target cylinder group partition required to store the first data portion;

receiving a second write request on the front-end computing system within the storage system, wherein the second write request concerns writing a second data portion to the storage array within the storage system;

generating a second log entry within the journal file, wherein the second log entry identifies a second differential storage quantity associated with storing the second data portion in the storage array within the storage system;

processing the first write request on a first core of a multi-core microprocessor included within the front-end computing system of the storage system and the second write request on a second core of the multi-core microprocessor, wherein the first write request is processed before the second write request, wherein processing the second core of the multi-core microprocessor occurs independently from processing the first write request by the first core of the multi-core microprocessor, and wherein the journal file includes a committed record number where, in an event of a failure of the first front-end computing system and the journal file being processed to recover data that was not yet written to the storage array, only entries of the first log entry and the second log entry within the journal file having a greater log record number than the committed record number are processed;

determining a first available storage quantity for the first write request based, at least in part, upon the first differential storage quantity identified in the first log entry; and

determining a second available storage quantity for the second write request based, at least in part, upon the first differential storage quantity identified in the first log entry and the second differential storage quantity identified in the second log entry.

2. The computer-implemented method of claim 1 wherein the first log entry includes tracking superblock differential metadata defining a change in free data blocks in a target file system required to store the first data portion.

3. The computer-implemented method of claim 1 wherein the second log entry includes tracking metadata including one or more of:

superblock differential metadata,

slice differential metadata, and

cylinder group differential metadata.

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

storing the first data portion and the second data portion within a buffer system for subsequent storage within the storage array of the storage system;

copying the first data portion from the buffer system to the storage array of the storage system; and

copying the second data portion from the buffer system to the storage array of the storage system.

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 a first write request on a front-end computing system within a storage system, wherein the first write request concerns writing a first data portion to a storage array within the storage system;

generating a first log entry within a journal file, wherein the first log entry identifies a first differential storage quantity associated with storing the first data portion in the storage array within the storage system and includes one or more of a log record number for the first data portion, attributes of the first data portion, a location within the storage array of the first data portion, permissions associated with the first data portion, and a unique transaction identifier for the first write request, wherein the first log entry includes tracking slice differential metadata defining a change in free data blocks in a target slice partition required to store the first data portion and tracking cylinder group differential metadata defining a change in free data blocks and block bitmaps in a target cylinder group partition required to store the first data portion;

receiving a second write request on the front-end computing system within the storage system, wherein the second write request concerns writing a second data portion to the storage array within the storage system;

generating a second log entry within the journal file, wherein the second log entry identifies a second differential storage quantity associated with storing the second data portion in the storage array within the storage system;

processing the first write request on a first core of a multi-core microprocessor included within the front-end computing system of the storage system and the second write request on a second core of the multi-core microprocessor, wherein the first write request is processed before the second write request, wherein processing the second core of the multi-core microprocessor occurs independently from processing the first write request by the first core of the multi-core microprocessor, and wherein the journal file includes a committed record number where, in an event of a failure of the first front-end computing system and the journal file being processed to recover data that was not yet written to the storage array, only entries of the first log entry and the second log entry within the journal file having a greater log record number than the committed record number are processed;

determining a first available storage quantity for the first write request based, at least in part, upon the first differential storage quantity identified in the first log entry; and

determining a second available storage quantity for the second write request based, at least in part, upon the first differential storage quantity identified in the first log entry and the second differential storage quantity identified in the second log entry.

6. The computer program product of claim 5 wherein the first log entry includes tracking superblock differential metadata defining a change in free data blocks in a target file system required to store the first data portion.

7. The computer program product of claim 5 wherein the second log entry includes tracking metadata including one or more of:

superblock differential metadata,

slice differential metadata, and

cylinder group differential metadata.

8. The computer program product of claim 5 further comprising instructions configured to perform operations including:

storing the first data portion and the second data portion within a buffer system for subsequent storage within the storage array of the storage system;

copying the first data portion from the buffer system to the storage array of the storage system; and

copying the second data portion from the buffer system to the storage array of the storage system.

9. A computing system including a processor and memory configured to perform operations comprising:

receiving a first write request on a front-end computing system within a storage system, wherein the first write request concerns writing a first data portion to a storage array within the storage system;

generating a first log entry within a journal file, wherein the first log entry identifies a first differential storage quantity associated with storing the first data portion in the storage array within the storage system and includes one or more of a log record number for the first data portion, attributes of the first data portion, a location within the storage array of the first data portion, permissions associated with the first data portion, and a unique transaction identifier for the first write request, wherein the first log entry includes tracking slice differential metadata defining a change in free data blocks in a target slice partition required to store the first data portion and tracking cylinder group differential metadata defining a change in free data blocks and block bitmaps in a target cylinder group partition required to store the first data portion;

receiving a second write request on the front-end computing system within the storage system, wherein the second write request concerns writing a second data portion to the storage array within the storage system;

generating a second log entry within the journal file, wherein the second log entry identifies a second differential storage quantity associated with storing the second data portion in the storage array within the storage system;

processing the first write request on a first core of a multi-core microprocessor included within the front-end computing system of the storage system and the second write request on a second core of the multi-core microprocessor, wherein the first write request is processed before the second write request, wherein processing the second core of the multi-core microprocessor occurs independently from processing the first write request by the first core of the multi-core microprocessor, and wherein the journal file includes a committed record number where, in an event of a failure of the first front-end computing system and the journal file being processed to recover data that was not yet written to the storage array, only entries of the first log entry and the second log entry within the journal file having a greater log record number than the committed record number are processed;

determining a first available storage quantity for the first write request based, at least in part, upon the first differential storage quantity identified in the first log entry; and

determining a second available storage quantity for the second write request based, at least in part, upon the first differential storage quantity identified in the first log entry and the second differential storage quantity identified in the second log entry.

10. The computing system of claim 9 wherein the first log entry includes tracking superblock differential metadata defining a change in free data blocks in a target file system required to store the first data portion.

11. The computing system of claim 9 wherein the second log entry includes tracking metadata including one or more of:

superblock differential metadata,

slice differential metadata, and

cylinder group differential metadata.

12. The computing system of claim 9 further configured to perform operations comprising:

storing the first data portion and the second data portion within a buffer system for subsequent storage within the storage array of the storage system;

copying the first data portion from the buffer system to the storage array of the storage system; and

copying the second data portion from the buffer system to the storage array of the storage system.

Assignments (9)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052216/0758) 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 060438/0680 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST AF REEL 052243 FRAME 0773 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 058001/0152 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 13, 2021
From: EMC CORPORATION
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 057183/0344 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 26, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 052243/0773 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Mar 24, 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 052216/0758 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 23, 2014
From: PAWAR, SITARAM; ARMANGAU, PHILIPPE; VEMPATI, SRINIVASA RAO
To: EMC CORPORATION
Reel/Frame 034578/0857 →