IP Library Granted Patent US 11,461,303
Granted Patent B2
US 11,461,303 · App. 16/783,855 · Granted Oct 4, 2022

IO metadata management for directly connected host

Inventors: Kevin M. Tobin (Hopedale, MA); Gabi Benhanokh (Tel-Aviv, IL); Andrew L. Chanler (Berlin, MA); Jerome J. Cartmell (Natick, MA)
Assignee: EMC IP Holding Company LLC
G06F16/2282G06F9/546G06F12/0882G06F12/123G06F16/1824G06F16/24573
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,461,303
App. No.
16/783,855
Granted
Oct 4, 2022
Kind
B2
Abstract

A node mask of a global metadata structure entry representing an MD portion in GM may be updated when an entry of a local MD table representing the MD portion is removed in response to receiving an IO operation, without negatively impacting performance of the IO operation. An update process that is independent of the process executing the IO operation may update the node mask so that performance of the IO operation is not negatively affected. In response to the entry for the MD portion being removed from the local MD table, an entry may be added to a queue. The update process may include accessing the entries in the queue, and, for each entry, updating the node mask (e.g., clearing a bit representing the processing node) and removing the entry from the queue.

Claims (75)

1. For a system including a plurality of physical storage devices for storing data, a plurality of IO (input/output) processing nodes for processing IO operations for data stored on the plurality of physical storage devices, and a global memory shared by the plurality of IO processing nodes, wherein each of the plurality of IO processing nodes includes a local metadata table that is dedicated to said each IO processing node and that specifies locations in the global memory corresponding to metadata for the data stored on the plurality of storage devices, and wherein the global memory includes a global data structure that tracks, for each of a plurality of metadata portions, one or more of the plurality of IO processing nodes each having a local metadata table including an entry corresponding to said each metadata portion, a method comprising:

receiving an IO request on a first of the plurality of IO processing nodes;

determining that an entry corresponding to an associated metadata portion for the IO request is not included in a first local metadata table dedicated to the first IO processing node;

removing a first entry of the first local metadata table dedicated to the first IO processing node, the first entry corresponding to a first metadata portion that is different from the associated metadata portion for the IO request;

creating a new entry in the first local metadata table of the first IO processing node corresponding to the associated metadata portion for the IO request;

processing the IO request using a first process and the associated metadata portion for the I/O request; and

independently of processing the IO request by the first process, updating, using a second process that is different from the first process, the global data structure to reflect that the first local metadata table no longer includes an entry corresponding to the first metadata portion.

2. The method of claim 1 , wherein said updating the global data structure includes:

adding a first entry for the first metadata portion to a queue of metadata portions for which the global data structure needs to be updated.

3. The method of claim 2 , wherein the global data structure includes a global entry for the first metadata portion, and wherein said updating the global data structure includes:

accessing the first entry in the queue;

the first IO processing node controlling the updating of the global entry; and

removing the first entry from the queue.

4. The method of claim 3 , wherein the plurality of IO processing nodes have access to the global data structure, and

wherein said controlling the updating of the global entry includes performing a synchronized update of the global entry with respect to the plurality of IO processing nodes.

5. The method of claim 4 , further comprising:

in response to said accessing the first entry in the queue, attempting to perform a synchronized update of the global entry;

if said attempting to perform the synchronized update of the global entry is unsuccessful, replacing the first entry from the queue with a new entry for the first metadata portion, wherein the new entry is placed at an end of the queue.

6. The method of claim 1 , further comprising:

in response to said receiving the IO request, determining that the first local metadata table is full; and

performing said removing the first entry from the first local metadata table based at least in part on the first local metadata table being full.

7. The method of claim 6 , wherein the system includes a queue of metadata portions removed from the first local metadata table for which the global data structure has not yet been updated, and wherein the method further comprises:

in response to said determining that the first local metadata table is full, determining whether the queue includes an entry for the first metadata portion; and

if the queue includes the entry for the first metadata portion, waiting until the entry for the first metadata portion is removed from the queue before performing said removing the first entry from the first local metadata table and said updating the global data structure.

8. A system comprising:

a plurality of physical storage devices for storing data;

a plurality of IO processing nodes for processing IO operations for data stored on the plurality of physical storage devices; and

a global memory shared by the plurality of IO processing nodes,

wherein each of the plurality of IO processing nodes includes a local metadata table dedicated to the said each IO processing node that specifies locations in the global memory corresponding to metadata for the data stored on the plurality of storage devices,

wherein the global memory includes a global data structure that tracks, for each of a plurality of metadata portions, one or more of the plurality of IO processing nodes that each have a local metadata table including an entry corresponding to the said each metadata portion, and

wherein a first of the plurality of IO processing nodes includes logic thereon that, when executed, performs a method including:

receiving an IO request on a first of the plurality of IO processing nodes;

determining that an entry corresponding to an associated metadata portion for the IO request is not included in a first local metadata table dedicated to the first IO processing node;

removing a first entry of the first local metadata table dedicated to the first IO processing node, the first entry corresponding to a first metadata portion that is different from the associated metadata portion for the IO request;

creating a new entry in the first local metadata table of the first IO processing node corresponding to the associated metadata portion for the IO request;

processing the IO request using a first process and the associated metadata portion for the I/O request; and

independently of processing the IO request by the first process, updating, using a second process that is different from the first process, the global data structure to reflect that the first local metadata table no longer includes an entry corresponding to the first metadata portion.

9. The system of claim 8 , wherein said updating the global data structure includes:

adding a first entry for the first metadata portion to a queue of metadata portions for which the global data structure needs to be updated.

10. The system of claim 9 , wherein the global data structure includes a global entry for the first metadata portion, and wherein said updating the global data structure includes:

accessing the first entry in the queue;

the first IO processing node controlling the updating of the global entry; and

removing the first entry from the queue.

11. The system of claim 10 , wherein the plurality of IO processing nodes have access to the global data structure, and

wherein said controlling the updating of the global entry includes performing a synchronized update of the global entry with respect to the plurality of IO processing nodes.

12. The system of claim 11 , wherein the method further includes:

in response to said accessing the first entry in the queue, attempting to perform a synchronized update of the global entry;

if said attempting to perform the synchronized update of the global entry is unsuccessful, replacing the first entry from the queue with a new entry for the first metadata portion, wherein the new entry is placed at an end of the queue.

13. The system of claim 8 , further the method further includes:

in response to said receiving the IO request, determining that the first local metadata table is full; and

performing said removing the first entry from the first local metadata table based at least in part on the first local metadata table being full.

14. The system of claim 13 , wherein the system includes a queue of metadata portions removed from the first local metadata table for which the global data structure has not yet been updated, and wherein the method further comprises:

in response to said determining that the first local metadata table is full, determining whether the queue includes an entry for the first metadata portion; and

if the queue includes the entry for the first metadata portion, waiting until the entry for the first metadata portion is removed from the queue before performing said removing the first entry from the first local metadata table and said updating the global data structure.

15. For a system including a plurality of physical storage devices for storing data, a plurality of IO (input/output) processing nodes for processing IO operations for data stored on the plurality of physical storage devices, and a global memory shared by the plurality of IO processing nodes, wherein each of the plurality of IO processing nodes includes a local metadata table dedicated to said each IO processing node that specifies locations in the global memory corresponding to metadata for the data stored on the plurality of storage devices, and wherein the global memory includes a global data structure that tracks, for each of a plurality of metadata portions, one or more of the plurality of IO processing nodes each having a local metadata table including an entry corresponding to said each metadata portion, non-transitory computer-readable media having software stored thereon, the software comprising:

executable code that receives an IO request on a first of the plurality of IO processing nodes;

executable code that determines that an entry corresponding to an associated metadata portion for the TO request is not included in a first local metadata table dedicated to the first IO processing node;

executable code that removes a first entry of the first local metadata table dedicated to the first TO processing node, the first entry corresponding to a first metadata portion that is different from the associated metadata portion for the IO request;

executable code that creates a new entry in the first local metadata table of the first IO processing node corresponding to the associated metadata portion for the IO request;

executable code of a first process that processes the IO request using the associated metadata portion for the IO request; and

executable code of a second process different from the first process that, independently of processing the IO request, updates the global data structure to reflect that the first local metadata table no longer includes an entry corresponding to the first metadata portion.

16. The non-transitory computer-readable media of claim 15 , wherein said updating the global data structure includes:

adding a first entry for the first metadata portion to a queue of metadata portions for which the global data structure needs to be updated.

17. The non-transitory computer-readable media of claim 16 , wherein the global data structure includes a global entry for the first metadata portion, and wherein said updating the global data structure includes:

accessing the first entry in the queue;

the first IO processing node controlling the updating of the global entry; and

removing the first entry from the queue.

18. The non-transitory computer-readable media of claim 17 , wherein the plurality of IO processing nodes have access to the global data structure, and

wherein said controlling the updating of the global entry includes performing a synchronized update of the global entry with respect to the plurality of IO processing nodes.

19. The non-transitory computer-readable media of claim 18 , wherein the software further comprises:

executable code that, in response to said accessing the first entry in the queue, attempts to perform a synchronized update of the global entry;

executable code that, if said attempting to perform the synchronized update of the global entry is unsuccessful, replaces the first entry from the queue with a new entry for the first metadata portion, wherein the new entry is placed at an end of the queue.

20. The non-transitory computer-readable media of claim 15 , wherein the software further comprises:

executable code that, in response to receiving the IO request, determines that the first local metadata table is full; and

executable code that removes the first entry from the first local metadata table based at least in part on the first local metadata table being full.

Assignments (13)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053311/0169) 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 CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 060438/0742 →
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 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 →
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 INTEREST Recorded Jun 5, 2020
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 053311/0169 →
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 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 →
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 6, 2020
From: TOBIN, KEVIN M.; BENHANOKH, GABI; CHANLER, ANDREW L.; CARTMELL, JEROME J.
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 051744/0408 →
Continuity (1)
Related Publication 20210248124A1 · Aug 12, 2021