IP Library Granted Patent US 11,442,860
Granted Patent B2
US 11,442,860 · App. 16/530,111 · Granted Sep 13, 2022

Host cache coherency when reading data

Inventors: Michael J. Scharland (Franklin, MA); Ian Wigmore (Westborough, MA); Arieh Don (Newton, MA)
Assignee: EMC IP Holding Company LLC
G06F12/084G06F2212/1021G06F2212/608
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,442,860
App. No.
16/530,111
Granted
Sep 13, 2022
Kind
B2
Abstract

When a read request for the data portion is received from an application executing on a host, the host may determine whether the data portion is in host cache, and if so, whether the logical storage unit of the data portion is shared by another host system. If there is another host system sharing the logical storage unit, a latest version stored on the storage system may be determined and compared to the version stored in the host cache. If the version in the host cache is the same as the latest version stored on the storage system, the data portion may be retrieved from the host cache. If the version in the host cache is not the latest version stored on the storage system, the data portion may be retrieved from the storage system, and the host cache may be updated with the latest version of the data portion.

Claims (66)

1. For a data storage network including a data storage system and one or more host systems having applications executing thereon, the execution of which results in data being stored on one or more physical storage devices of the data storage system, a method comprising:

on a first of the one or more host systems, maintaining a cache including a plurality of entries, wherein a first of the plurality of entries represents a first portion of data that is stored on a first of the one or more physical storage devices, and the first entry specifies a particular version of the first portion of data;

receiving a read request on the first host system from a first of the one or more applications, wherein the read request is a request to read the first portion of data stored at a logical address on a logical storage unit configured on the data storage system, wherein the first entry of the cache is associated with the logical address on the logical storage unit and indicates that the particular version of the first portion of data of the first entry is stored at the logical address on the logical storage unit; and

responsive to receiving the read request, the first host system performing processing including:

determining whether the cache of the first host system includes the first portion of data stored at the logical address on the logical storage unit; and

responsive to determining that the cache of the first host includes the first portion of data stored at the logical address on the logical storage unit, performing first processing including:

determining whether the logical storage unit including the first portion of data is shared by the first host system with at least a second of the one or more host systems or whether the logical storage unit is used exclusively by the first host system; and

if it is determined that the logical storage unit including the first portion of data is shared by the first host system with at least the second of the one or more host systems and thereby not used exclusively by the first host system, performing second processing including:

determining if the particular version specified by the first entry is a latest version of the first portion of data, wherein said determining if the particular version specified by the first entry is a latest version includes sending a communication from the first host system to the data storage system; and

if it is determined that the particular version is the latest version of the first portion of data, retrieving the first portion of data from the first entry to satisfy the read request.

2. The method of claim 1 , wherein the first processing further comprises:

if it is determined that the logical storage unit including the first portion of data is used by used exclusively by the first host system and thereby not shared by the first host system with at least the second of the one or more host systems, retrieving the first portion of data from the first entry of the cache to satisfy the read request.

3. The method of claim 1 , further comprising:

storing on the first host system a first value indicating whether the logical storage unit is shared by the first host system with at least the second of the one or more storage systems or whether the logical storage unit is used exclusively by the first host system,

wherein said determining whether the logical storage unit including the first portion of data is shared by the first host system with at least the second of the one or more storage systems or whether the logical storage unit is used exclusively by the first host system further includes accessing the first value on the first host system.

4. The method of claim 1 , wherein said second processing further comprises:

if it is determined that the particular version is not the latest version of the first portion of data, retrieving the first portion of data from the first physical storage device.

5. The method of claim 1 , wherein each entry of the cache represents a portion of data, and specifies an associated logical storage unit and an associated version of the respective portion.

6. The method of claim 1 , wherein the first host system is directly connected to an internal fabric of the data storage system without an intervening component of the storage system controlling access of the at least first host system to the internal fabric, and

wherein the communication is sent directly to the internal fabric without going through any intervening component of the storage system.

7. The method of claim 6 , wherein the communication is a remote direct memory access communication to a global memory of the storage system that does not require use of any central processing unit resources of the storage system.

8. The method of claim 6 , wherein the first host system and the data storage system are separate physical systems, wherein the first host system includes a storage system interface that is directly connected, over at least one direct connection from a port of the storage system interface, to the internal fabric of the data storage system, wherein the data storage system includes the internal fabric that is internal within the data storage system and that is used for internal communications between components of the data storage system, wherein the components of the data storage system include a memory that is connected to the internal fabric, one or more directors, and the one or more physical devices of the data storage system.

9. A first host system of a data storage network including a data storage system and one or more host systems having applications executing thereon, including the first host system, the execution of which results in data being stored on one or more physical storage devices of the data storage system, the first host system comprising:

one or more processors; and

a memory comprising code stored thereon that, when executed, performs a method comprising:

maintaining a cache including a plurality of entries, wherein a first of the plurality of entries represents a first portion of data that is stored on a first of the one or more physical storage devices, and the first entry specifies a particular version of the first portion of data;

receiving a read request on the first host system from a first of the one or more applications, wherein the read request is a request to read the first portion of data stored at a logical address on a logical storage unit configured on the data storage system, wherein the first entry of the cache is associated with the logical address on the logical storage unit and indicates that the particular version of the first portion of data of the first entry is stored at the logical address on the logical storage unit; and

responsive to receiving the read request, the first host system performing processing including:

determining whether the cache of the first host system includes the first portion of data stored at the logical address on the logical storage unit; and

responsive to determining that the cache of the first host includes the first portion of data stored at the logical address on the logical storage unit, performing first processing including:

determining whether the logical storage unit including the first portion of data is shared by the first host system with at least a second of the one or more host systems or whether the logical storage unit is used exclusively by the first host system; and

if it is determined that the logical storage unit including the first portion of data is shared by the first host system with at least the second of the one or more host systems and thereby not used exclusively by the first host system, performing second processing including:

 determining if the particular version specified by the first entry is a latest version of the first portion of data, wherein said determining if the particular version specified by the first entry is a latest version includes sending a communication from the first host system to the data storage system; and

 if it is determined that the particular version is the latest version of the first portion of data, retrieving the first portion of data from the first entry to satisfy the read request.

10. The first host system of claim 9 , wherein the first processing further comprises:

if it is determined that the logical storage unit including the first portion of data is used by used exclusively by the first host system and thereby not shared by the first host system with at least the second of the one or more host systems, retrieving the first portion of data from the first entry of the cache to satisfy the read request.

11. The first host system of claim 9 , wherein the method further comprises:

storing on the first host system a first value indicating whether the logical storage unit is shared by the first host system with at least the second of the one or more storage systems or whether the logical storage unit is used exclusively by the first host system,

wherein said determining whether the logical storage unit including the first portion of data is shared by the first host system with at least the second of the one or more storage systems or whether the logical storage unit is used exclusively by the first host system further includes accessing the first value on the first host system.

12. The first host system of claim 9 , wherein said second processing further comprises:

if it is determined that the particular version is not the latest version of the first portion of data, retrieving the first portion of data from the first physical storage device.

13. The first host system of claim 9 , wherein each entry of the cache represents a portion of data, and specifies an associated logical storage unit and an associated version of the respective portion.

14. The first host system of claim 9 , wherein the first host system is directly connected to an internal fabric of the data storage system without an intervening component of the storage system controlling access of the at least first host system to the internal fabric, and

wherein the communication is sent directly to the internal fabric without going through any intervening component of the storage system.

15. One or more non-transitory computer-readable media having software stored thereon for a data storage network including a data storage system and one or more host systems having applications executing thereon, the execution of which results in data being stored on one or more physical storage devices of the data storage system, the software comprising:

executable code that, on a first of the one or more host systems, maintains a cache including a plurality of entries, wherein a first of the plurality of entries represents a first portion of data that is stored on a first of the one or more physical storage devices, and the first entry specifies a particular version of the first portion of data;

executable code that receives a read request on the first host system from a first of the one or more applications, wherein the read request is a request to read the first portion of data stored at a logical address on a logical storage unit configured on the data storage system, wherein the first entry of the cache is associated with the logical address on the logical storage unit and indicates that the particular version of the first portion of data of the first entry is stored at the logical address on the logical storage unit; and

executable code that, responsive to receiving the read request, causes the first host system to perform processing including:

determining whether the cache of the first host system includes the first portion of data stored at the logical address on the logical storage unit; and

responsive to determining that the cache of the first host includes the first portion of data stored at the logical address on the logical storage unit, performing first processing including:

determining whether the logical storage unit including the first portion of data is shared by the first host system with at least a second of the one or more host systems or whether the logical storage unit is used exclusively by the first host system; and

if it is determined that the logical storage unit including the first portion of data is shared by the first host system with at least the second of the one or more host systems and thereby not used exclusively by the first host system, performing second processing including:

determining if the particular version specified by the first entry is a latest version of the first portion of data, wherein said determining if the particular version specified by the first entry is a latest version includes sending a communication from the first host system to the data storage system; and

if it is determined that the particular version is the latest version of the first portion of data, retrieving the first portion of data from the first entry to satisfy the read request.

16. The one or more non-transitory computer-readable media of claim 15 , wherein the first processing further comprises:

if it is determined that the logical storage unit including the first portion of data is used exclusively by the first host system and thereby not shared by the first host system with at least the second of the one or more host systems, retrieving the first portion of data from the first entry of the cache to satisfy the read request.

17. The one or more non-transitory computer-readable media of claim 15 , wherein the software further comprises:

executable code that controls storing on the first host system a first value indicating whether the logical storage unit is shared by the first host system with at least the second of the one or more storage systems or whether the logical storage unit is used exclusively by the first host system,

wherein said determining whether the logical storage unit including the first portion of data is shared by the first host system with at least the second of the one or more storage systems or whether the logical storage unit is used exclusively by the first host system further includes accessing the first value on the first host system.

18. The one or more non-transitory computer-readable media of claim 15 , wherein said second processing further comprises:

if it is determined that the particular version is not the latest version of the first portion of data, retrieving the first portion of data from the first physical storage device.

19. The one or more non-transitory computer-readable media of claim 15 , wherein each entry of the cache represents a portion of data, and specifies an associated logical storage unit and an associated version of the respective portion.

20. The system of claim 14 , wherein the communication is a remote direct memory access communication to a global memory of the storage system that does not require use of any central processing unit resources of the storage system.

21. The one or more non-transitory computer-readable media of claim 15 , wherein the first host system is directly connected to an internal fabric of the data storage system without an intervening component of the storage system controlling access of the at least first host system to the internal fabric,

wherein the communication is sent directly to the internal fabric without going through any intervening component of the storage system, and

wherein the communication is a remote direct memory access communication to a global memory of the storage system that does not require use of any central processing unit resources of the storage system.

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 Aug 2, 2019
From: SCHARLAND, MICHAEL J.; WIGMORE, IAN; DON, ARIEH
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 049941/0887 →