# US 10,769,021 B1 · Cache protection through cache

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

- Number: US 10,769,021 B1
- Document ID: US10769021B1
- Status: Granted
- Kind: B1
- Application number: 12/930,247
- Filed: 2010-12-31
- Granted: 2020-09-08
- Earliest claimed: 2010-12-31
- Assignees: EMC IP Holding Company LLC
- Applicants: Victor Salamon; Paul A. Shelley; Ronald C. Unrau; Steven R. Bromling
- Inventors: Victor Salamon; Paul A. Shelley; Ronald C. Unrau; Steven R. Bromling
- Web page: https://patentgrep.com/patent/US10769021B1

## CPC

- G06F 11/1438: {Restarting or rejuvenating}
- G06F 12/0824: {Distributed directories, e.g. linked lists of caches}
- G06F 11/1064: {in cache or content addressable memories}
- G06F 11/1497: Time redundant execution of software on a single processing unit
- G06F 11/1633: {using mutual exchange of the output between the redundant processing components}
- G06F 11/2094: {Redundant storage or storage space (G06F11/2056 takes precedence)}
- G06F 12/0815: Cache consistency protocols
- G06F 12/0866: for peripheral storage systems, e.g. disk cache
- G06F 12/1425: {the protection being physical, e.g. cell, word, block}
- G06F 11/1662: {the resynchronized component or unit being a persistent storage device (re-synchronization of failed mirror storage G06F11/2082; rebuild or reconstruction of parity RAID storage G06F11/1008)}
- G06F 2212/1052: Security improvement
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A cache coherency protection system provides for data redundancy by sharing a cache coherence memory pool for protection purposes. The system works consistently across all communication protocols, yields improved data availability with potentially less memory waster and makes data availability faster in node/director failure scenarios. According to various embodiments, the cache coherency protection system may include a writer/requester director that receives a write request from host, a protection target director that is a partner of the writer/request director and a directory.

## Claims

### Claim 1

A method for providing cache coherency protection, comprising:
receiving a data write request for a data block at a first director from a host;
immediately in response to receiving the data write request, and independent of any subsequent read request or write request:
storing the data block in a cache of the first director;
transmitting a copy of the data block from the first director to a second director; and
storing the copy of the data block in a cache of the second director;
maintaining a directory that identifies a location of the data block;
in response to a read request received at a respective one of the first director or the second director for the data block, locally servicing the read request using the data block or the copy of the data block stored in the cache of the respective one of the first director or the second director;
in response to failure of the first director, a failure recovery process is initiated using the data block or the copy of the data block stored in the cache of the second director, and a third director operates as a protection partner of the second director in place of the first director during a failure recovery process until the first director returns to operation and the first and second directors become protection partners; and
in response to failure of the second director, the failure recovery process is initiated using the data block or the copy of the data block stored in the cache of the first director and the third director operates as a protection partner of the first director in place of the second director during the failure recovery process until the second director returns to operation and the first and second directors become protection partners.

### Claim 2 (depends on 1)

The method according to claim 1, wherein the directory includes a plurality of components that are distributed among at least the first director and the second director.

### Claim 3 (depends on 1)

The method according to claim 1, wherein the first director manages location information of the copy of the data block.

### Claim 4 (depends on 1)

The method according to claim 1, wherein the directory manages location information of the copy of the data block.

### Claim 5 (depends on 1)

The method according to claim 1, further comprising:
in response to a second data write request involving a write to the data block to generate a new data block:
storing the new data block in a cache of a director that receives the second data write request;
transmitting a copy of the new data block to a cache of a partner director that is a partner of the director that receives the second data write request; and
invalidating the data block on the first director and the copy of the data block on the second director.

### Claim 6 (depends on 1)

The method of claim 1, wherein the second director includes a CPU, and wherein the copy of the data block is transmitted from the first director to the second director as part of an RDMA request that does not require cooperation of the CPU of the second director.

### Claim 7

A non-transitory computer readable storage medium storing computer software for providing cache coherency protection, the computer software comprising:
executable code that receives a data write request for a data block at a first director from a host;
executable code that, immediately in response to receiving the data write request, and independent of any subsequent read request or write request:
stores the data block in a cache of the first director;
transmits a copy of the data block from the first director to a second director; and
stores the copy of the data block in a cache of the second director;
executable code that maintains a directory that identifies a location of the data block;
executable code that locally services a read request using the data block or the copy of the data block stored in the cache of one of the first director or the second director; and
executable code that initiates a failure recovery process in response to failure of the first director by using the data block or the copy of the data block stored in the cache of the second director, and a third director operates as a protection partner of the second director during the failure recovery process of the first director and until the first director returns to operation and the first and second directors become protection partners; and
executable code that initiates a failure recovery process in response to failure of the second director by using the data block or the copy of the data block stored in the cache of the first director, and a third director operates as a protection partner of the first director during the failure recovery process of the second director until the second director returns to operation and the first and second directors become protection partners.

### Claim 8 (depends on 7)

The non-transitory computer readable storage medium according to claim 7, wherein the directory includes a plurality of components that are distributed among at least the first director and the second director.

### Claim 9 (depends on 7)

The non-transitory computer readable storage medium according to claim 7, wherein the first director manages location information of the copy of the data block.

### Claim 10 (depends on 7)

The non-transitory computer readable storage medium according to claim 7, wherein the directory manages location information of the copy of the data block.

### Claim 11 (depends on 7)

The non-transitory computer readable storage medium according to claim 7, further comprising:
executable code that, in response to a second data write request involving a write to the data block to generate a new data block:
stores the new data block in a cache of a director that receives the second data write request;
transmits a copy of the new data block to a cache of a partner director that is a partner of the director that receives the second data write request; and
invalidates the data block on the first director and the copy of the data block on the second director.

### Claim 12 (depends on 7)

The non-transitory computer readable storage medium of claim 7, wherein the second director includes a CPU, and wherein the copy of the data block is transmitted from the first director to the second director as part of an RDMA request that does not require cooperation of the CPU of the second director.

### Claim 13

A system for providing cache coherency protection, comprising:
a first director having at least one processor and a cache;
a second director having at least one processor and a cache, wherein, immediately in response to the first director receiving a data write request for a data block from a host, and independent of any subsequent read request or write request, the data block is stored in the cache of the first director, a copy of the data block is generated by the first director and transmitted to and stored on the cache of the second;
a directory that identifies a location of the data block, wherein the directory is distributed among at least the first director and the second director; and
a processor that performs the following:
in response to a read request received at a respective one of the first director or the second director for the data block, locally servicing the read request using the data block or the copy of the data block stored in the cache of the respective one of the first director or the second director;
in response to failure of the first director, a failure recovery process is initiated using the data block or the copy of the data block stored in the cache of the second director, and a third director operates as a protection partner of the second director in place of the first director during a failure recovery process until the first director returns to operation and the first and second directors become protection partners; and
in response to failure of the second director, the failure recovery process is initiated using the data block or the copy of the data block stored in the cache of the first director and the third director operates as a protection partner of the first director in place of the second director during the failure recovery process until the second director returns to operation and the first and second directors become protection partners.

### Claim 14 (depends on 13)

The system according to claim 13, wherein at least one of the following is provided: (i) the first director manages location information of the copy of the data block or (ii) the directory manages location information of the copy of the data block.

### Claim 15 (depends on 13)

The system according to claim 13, further comprising:
at least one fourth director that is a partner of the third director, wherein, in response to a second data write request that is received at the third director involving a write to the data block to generate a new data block:
the new data block is stored in a cache of the third director;
a copy of the new data block is transmitted to a cache of the fourth director; and
the data block is invalidated on the first director and the copy of the data block is invalidated on the second director.

### Claim 16 (depends on 13)

The system according to claim 13, wherein the second director is selected as a protection target of the first director using an algorithm.

### Claim 17 (depends on 13)

The system of claim 13, wherein the copy of the data block is transmitted from the first director to the second director as part of an RDMA request that does not require cooperation of the at least one processor of the second director.
