# US 11,442,860 B2 · Host cache coherency when reading data

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 11,442,860 B2
- Document ID: US11442860B2
- Status: Granted
- Kind: B2
- Application number: 16/530,111
- Filed: 2019-08-02
- Published: 2021-02-04
- Granted: 2022-09-13
- Earliest claimed: 2019-08-02
- Assignees: EMC IP Holding Company LLC
- Applicants: EMC IP Holding Company LLC
- Inventors: Michael J. Scharland; Ian Wigmore; Arieh Don
- Web page: https://patentgrep.com/patent/US11442860B2

## CPC

- G06F 12/084: with a shared cache
- G06F 12/0868: Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
- G06F 3/0611: {in relation to response time}
- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 12/0815: Cache consistency protocols
- G06F 2212/1021: Hit rate improvement
- G06F 2212/1024: Latency reduction
- G06F 2212/284: being distributed
- G06F 2212/311: In host system
- G06F 2212/462: Track or segment
- G06F 2212/608: Details relating to cache mapping
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## 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

### Claim 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.

### Claim 2 (depends on 1)

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.

### Claim 3 (depends on 1)

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.

### Claim 4 (depends on 1)

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.

### Claim 5 (depends on 1)

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.

### Claim 6 (depends on 1)

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.

### Claim 7 (depends on 6)

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.

### Claim 8 (depends on 6)

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.

### Claim 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.

### Claim 10 (depends on 9)

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.

### Claim 11 (depends on 9)

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.

### Claim 12 (depends on 9)

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.

### Claim 13 (depends on 9)

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.

### Claim 14 (depends on 9)

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.

### Claim 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.

### Claim 16 (depends on 15)

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.

### Claim 17 (depends on 15)

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.

### Claim 18 (depends on 15)

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.

### Claim 19 (depends on 15)

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.

### Claim 20 (depends on 14)

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.

### Claim 21 (depends on 15)

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.
