IP Library Granted Patent US 11,010,059
Granted Patent B2
US 11,010,059 · App. 16/525,907 · Granted May 18, 2021

Techniques for obtaining metadata and user data

Inventors: Anton Kucherov (Dudley, MA); Amitai Alkalay (Kadima, IL)
Assignee: EMC IP Holding Company LLC
G06F3/061G06F3/067G06F3/0655G06F13/20
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,010,059
App. No.
16/525,907
Granted
May 18, 2021
Kind
B2
Abstract

Techniques for processing I/O operations include receiving an I/O operation that accesses a target location. Metadata (MD) pages are accessed in a consecutive order to access the target location in a user data (UD) page. First processing is performed by first code. The first processing includes determining that a first MD page is not in cache; responsive to determining the first MD page is not in the cache, issuing a forwarding read command to a component to obtain pages including the first MD page and one or more other MD pages subsequent to the first MD page in the consecutive order; and receiving a response to the forwarding read command that includes the requested pages.

Claims (80)

1. A method of processing I/O operations comprising:

receiving a read I/O operation that reads first data stored at a target location, wherein a plurality of metadata (MD) pages are accessed and read in a consecutive order to access the target location in a user data (UD) page including the first data;

performing first processing by first code, the first processing including:

determining that a first MD page of the plurality of MD pages is not in cache;

responsive to determining the first MD page is not in the cache, issuing a forwarding read command to a component to obtain the UD page and obtain the first MD page and one or more other MD pages of the plurality of MD pages that are subsequent to the first MD page in the consecutive order; and

receiving, by the first code from the component, a response to the forwarding read command, wherein the response includes the UD page, the first MD page, and the one or more other MD pages subsequent to the first MD page in the consecutive order;

determining whether any page of MD or UD returned in the response to the forwarding read command includes invalid data; and

responsive to determining that no page of MD or UD returned in the response to the forwarding read command includes invalid data, updating the cache to include the UD page, the first MD page and the any one or more other MD pages subsequent to the first MD page in the consecutive order.

2. The method of claim 1 , wherein the plurality of MD pages are included in a linked list of MD pages, and wherein the linked list of MD pages includes the plurality of MD pages arranged in an ordering in accordance with the consecutive order.

3. The method of claim 2 , wherein a last of the plurality of MD pages in the linked list references the target location in the UD page.

4. The method of claim 1 , wherein the component includes second code stored in a memory, wherein the second code, when executed, performs second processing that services the forwarding read command.

5. The method of claim 4 , wherein the component is a physical storage device that includes the second code and the second processing performed by the component further comprises:

reading the UD page, the first MD page, and the one or more other MD pages from storage media of the first physical storage device; and

returning the UD page, the first MD page and the one or more other MD pages to the first code.

6. The method of claim 5 , wherein the second code is embedded on the physical storage device.

7. The method of claim 4 , wherein the component is a controller that communicates with a plurality of physical storage devices, and wherein the controller includes the second code and the second processing performed by the component further comprises:

reading the UD page, the first MD page, and the one or more other MD pages from one or more of the plurality of physical devices; and

returning the UD page, the first MD page and the one or more other MD pages to the first code.

8. The method of claim 4 , wherein the component is kernel code that communicates with a plurality of physical storage devices, and wherein the kernel code includes the second code and the second processing performed by the component further comprises:

reading the UD page, the first MD page, and the one or more other MD pages from one or more of the plurality of physical storage devices; and

returning the UD page, the first MD page and the one or more other MD pages to the first code.

9. The method of claim 8 , wherein the kernel code and the first code are executed by one or more processors of a data storage system, and wherein the kernel code executes at a higher priority than the first code.

10. The method of claim 4 , wherein a plurality of physical storage devices includes a first physical storage device and one or more other physical storage devices, wherein the component is the first physical storage device that communicates with the one or more other physical storage devices, and wherein the first physical storage device includes the second code and the second processing performed by the component further comprises:

reading the UD page, the first MD page, and the one or more other MD pages from one or more of the plurality of physical storage devices; and

returning the UD page, the first MD page and the one or more other MD pages to the first code.

11. The method of claim 10 wherein the first physical storage device communicates directly with the one or more other physical storage devices over a communications bus.

12. A method of processing I/O operations comprising:

receiving a read I/O operation that reads first data stored at a target location, wherein a plurality of metadata (MD) pages are accessed and read in a consecutive order to access the target location in a user data (UD) page including the first data;

performing first processing by first code, the first processing including:

determining that a first MD page of the plurality of MD pages is not in cache;

responsive to determining the first MD page is not in the cache, issuing a forwarding read command to a component to obtain the UD page and obtain the first MD page and one or more other MD pages of the plurality of MD pages that are subsequent to the first MD page in the consecutive order; and

receiving, by the first code from the component, a response to the forwarding read command, wherein the response includes the UD page, the first MD page, and the one or more other MD pages subsequent to the first MD page in the consecutive order;

determining, by the first code, whether one MD page returned in the response to the forwarding read command includes invalid data, wherein the one MD page included in the response is a first version of the one MD page and a second version of the one MD page is stored in the cache, wherein the second version stored in the cache is a more recent version than the first version, wherein the second version includes second content stored at an address of interest in the one MD page stored in the cache and the first version includes first content stored at the address of interest, wherein the first content and the second content are different, and wherein the component uses the first content rather than the second content as a pointer to identify another MD page when performing processing to service the forwarding read command;

responsive to determining that the one MD page of the response includes invalid data issuing, by the first code, a second forwarding read command to the component to obtain one or more pages including a MD page pointed to or reference by the second content; and

receiving, from the component, a second response to the second forwarding read command, wherein the second response includes a returned MD page pointed to or referenced by the second content.

13. The method of claim 12 , further comprising:

updating the cache to include at least some pages returned in the first response and the second response.

14. The method of claim 13 , wherein said updating comprising:

storing the first MD page and the UD page of the response and the returned MD page of the second response in the cache.

15. A system comprising:

one or more processors; and:

a memory comprising code stored thereon that, when executed, performs method of processing I/O operations comprising:

receiving a read I/O operation that reads first data stored at a target location, wherein a plurality of metadata (MD) pages are accessed and read in a consecutive order to access the target location in a user data (UD) page including the first data;

performing first processing by first code, the first processing including:

determining that a first MD page of the plurality of MD pages is not in cache;

responsive to determining the first MD page is not in the cache, issuing a forwarding read command to a component to obtain the UD page and obtain the first MD page and one or more other MD pages of the plurality of MD pages that are subsequent to the first MD page in the consecutive order; and

receiving, by the first code from the component, a response to the forwarding read command, wherein the response includes the UD page, the first MD page, and the one or more other MD pages subsequent to the first MD page in the consecutive order;

determining whether any page of MD or UD returned in the response to the forwarding read command includes invalid data; and

responsive to determining that no page of MD or UD returned in the response to the forwarding read command includes invalid data, updating the cache to include the UD page, the first MD page and the any one or more other MD pages subsequent to the first MD page in the consecutive order.

16. A non-transitory computer readable medium comprising code stored thereon that, when executed, performs a method of processing I/O operations comprising:

receiving a read I/O operation that reads first data stored at a target location, wherein a plurality of metadata (MD) pages are accessed and read in a consecutive order to access the target location in a user data (UD) page including the first data;

performing first processing by first code, the first processing including:

determining that a first MD page of the plurality of MD pages is not in cache;

responsive to determining the first MD page is not in the cache, issuing a forwarding read command to a component to obtain the UD page and obtain the first MD page and one or more other MD pages of the plurality of MD pages that are subsequent to the first MD page in the consecutive order; and

receiving, by the first code from the component, a response to the forwarding read command, wherein the response includes the UD page, the first MD page, and the one or more other MD pages subsequent to the first MD page in the consecutive order;

determining whether any page of MD or UD returned in the response to the forwarding read command includes invalid data; and

responsive to determining that no page of MD or UD returned in the response to the forwarding read command includes invalid data, updating the cache to include the UD page, the first MD page and the any one or more other MD pages subsequent to the first MD page in the consecutive order.

17. The non-transitory computer readable medium of claim 16 , wherein the plurality of MD pages are included in a linked list of MD pages, and wherein the linked list of MD pages includes the plurality of MD pages arranged in an ordering in accordance with the consecutive order.

18. The non-transitory computer readable medium of claim 17 , wherein a last of the plurality of MD pages in the linked list references the target address in the UD page.

19. The non-transitory computer readable medium of claim 16 , wherein the component includes second code stored in a memory, wherein the second code, when executed, performs second processing that services the forwarding read command.

20. A system comprising:

one or more processors; and

a memory comprising code stored thereon that, when executed, performs a method of processing I/O operations comprising:

receiving a read I/O operation that reads first data stored at a target location, wherein a plurality of metadata (MD) pages are accessed and read in a consecutive order to access the target location in a user data (UD) page including the first data;

performing first processing by first code, the first processing including:

determining that a first MD page of the plurality of MD pages is not in cache;

responsive to determining the first MD page is not in the cache, issuing a forwarding read command to a component to obtain the UD page and obtain the first MD page and one or more other MD pages of the plurality of MD pages that are subsequent to the first MD page in the consecutive order; and

receiving, by the first code from the component, a response to the forwarding read command, wherein the response includes the UD page, the first MD page, and the one or more other MD pages subsequent to the first MD page in the consecutive order;

determining, by the first code, whether one MD page returned in the response to the forwarding read command includes invalid data, wherein the one MD page included in the response is a first version of the one MD page and a second version of the one MD page is stored in the cache, wherein the second version stored in the cache is a more recent version than the first version, wherein the second version includes second content stored at an address of interest in the one MD page stored in the cache and the first version includes first content stored at the address of interest, wherein the first content and the second content are different, and wherein the component uses the first content rather than the second content as a pointer to identify another MD page when performing processing to service the forwarding read command;

responsive to determining that the one MD page of the response includes invalid data issuing, by the first code, a second forwarding read command to the component to obtain one or more pages including a MD page pointed to or reference by the second content; and

receiving, from the component, a second response to the second forwarding read command, wherein the second response includes a returned MD page pointed to or referenced by the second content.

21. A non-transitory computer readable memory comprising code stored thereon that, when executed, performs a method of processing I/O operations comprising:

receiving a read I/O operation that reads first data stored at a target location, wherein a plurality of metadata (MD) pages are accessed and read in a consecutive order to access the target location in a user data (UD) page including the first data;

performing first processing by first code, the first processing including:

determining that a first MD page of the plurality of MD pages is not in cache;

responsive to determining the first MD page is not in the cache, issuing a forwarding read command to a component to obtain the UD page and obtain the first MD page and one or more other MD pages of the plurality of MD pages that are subsequent to the first MD page in the consecutive order; and

receiving, by the first code from the component, a response to the forwarding read command, wherein the response includes the UD page, the first MD page, and the one or more other MD pages subsequent to the first MD page in the consecutive order;

determining, by the first code, whether one MD page returned in the response to the forwarding read command includes invalid data, wherein the one MD page included in the response is a first version of the one MD page and a second version of the one MD page is stored in the cache, wherein the second version stored in the cache is a more recent version than the first version, wherein the second version includes second content stored at an address of interest in the one MD page stored in the cache and the first version includes first content stored at the address of interest, wherein the first content and the second content are different, and wherein the component uses the first content rather than the second content as a pointer to identify another MD page when performing processing to service the forwarding read command;

responsive to determining that the one MD page of the response includes invalid data issuing, by the first code, a second forwarding read command to the component to obtain one or more pages including a MD page pointed to or reference by the second content; and

receiving, from the component, a second response to the second forwarding read command, wherein the second response includes a returned MD page pointed to or referenced by the second content.

Assignments (9)
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 (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 (050724/0571) 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 060436/0088 →
RELEASE OF SECURITY INTEREST AT REEL 050406 FRAME 421 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 058213/0825 →
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 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 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Oct 15, 2019
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 050724/0571 →
SECURITY AGREEMENT Recorded Sep 17, 2019
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 050406/0421 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 30, 2019
From: KUCHEROV, ANTON; ALKALAY, AMITAI
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 049899/0826 →