# US 10,482,026 B2 · Deduplicated host cache flush to remote storage

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

- Number: US 10,482,026 B2
- Document ID: US10482026B2
- Status: Granted
- Kind: B2
- Application number: 15/816,029
- Filed: 2017-11-17
- Published: 2018-03-15
- Granted: 2019-11-19
- Earliest claimed: 2015-07-30
- Assignees: NetApp, Inc.
- Applicants: NetApp, Inc.
- Inventors: Girish Kumar Bk; Gaurav Makkar
- Web page: https://patentgrep.com/patent/US10482026B2

## CPC

- G06F 12/0891: using clearing, invalidating or resetting means
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/0641: {De-duplication techniques}
- G06F 3/065: {Replication mechanisms}
- G06F 3/0656: {Data buffering arrangements}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 12/0868: Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
- G06F 3/0608: {Saving storage space on storage systems}
- G06F 12/0802: Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F 12/0804: with main memory updating (G06F12/0806 takes precedence)
- G06F 2212/60: Details of cache memory
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

In addition to caching I/O operations at a host, at least some data management can migrate to the host. With host side caching, data sharing or deduplication can be implemented with the cached writes before those writes are supplied to front end storage elements. When a host cache flush to distributed storage trigger is detected, the host deduplicates the cached writes. The host aggregates data based on the deduplication into a “change set file” (i.e., a file that includes the aggregation of unique data from the cached writes). The host supplies the change set file to the distributed storage system. The host then sends commands to the distributed storage system. Each of the commands identifies a part of the change set file to be used for a target of the cached writes.

## Claims

### Claim 1

A method comprising:
aggregating a set of data units, unique among data units of writes cached by a host in a cache, into a change set file;
generating commands for the cached writes based on mappings between targets of the cached writes and locations of data units in the change set file; and
communicating the change set file and the commands to a storage system, wherein a metadata update operation to modify metadata of a file targeted by a command to increase a size of the file is transmitted to the storage system, and wherein transmission of the command to the storage system is dependent upon the metadata update operation completing.

### Claim 2 (depends on 1)

The method of claim 1, wherein the generating comprises:
generating a first command which indicates a first data unit as a donor and a target of a first cached write as a recipient.

### Claim 3 (depends on 1)

The method of claim 1, wherein the communicating comprises:
communicating to a front end device of the storage system the commands for the cached writes based upon receiving confirmation that the change set file was stored by the storage system.

### Claim 4 (depends on 3)

The method of claim 3, wherein the generating comprises:
generating a first command which instructs the storage system to set metadata of a target for a first cached write to reference a location of a corresponding data unit in the change set file on the storage system.

### Claim 5 (depends on 1)

The method of claim 1, wherein the aggregating and generating is triggered based upon a cache flush trigger of the cache.

### Claim 6 (depends on 1)

The method of claim 1, comprising:
caching writes in the cache by creating an entry within the cache for the write, wherein the entry is marked as dirty.

### Claim 7 (depends on 6)

The method of claim 6, comprising:
restricting, until after the change set file and the commands are communicated to the storage system, entries in the cache marked as dirty to read access based upon detecting a cache flush trigger.

### Claim 8 (depends on 1)

The method of claim 1, wherein the metadata update operation allocates additional logical representations of data units for the file.

### Claim 9

A non-transitory machine-readable medium comprising instructions, which when executed by a machine, causes the machine to:
aggregate a set of data units, unique among data units of writes cached by a host in a cache, into a change set file;
generate commands for the cached writes based on mappings between targets of the cached writes and locations of data units in the change set file; and
communicate the change set file and the commands to a storage system, wherein a metadata update operation to modify metadata of a file targeted by a command to increase a size of the file is transmitted to the storage system, and wherein transmission of the command to the storage system is dependent upon the metadata update operation completing.

### Claim 10 (depends on 9)

The non-transitory machine-readable medium of claim 9, wherein the instructions cause the machine to:
generate a first command which indicates a first data unit as a donor and a target of a first cached write as a recipient.

### Claim 11 (depends on 9)

The non-transitory machine-readable medium of claim 9, wherein the instructions cause the machine to:
communicate to a front end device of the storage system the commands for the cached writes based upon receiving confirmation that the change set file was stored by the storage system.

### Claim 12 (depends on 11)

The non-transitory machine-readable medium of claim 11, wherein the instructions cause the machine to:
generate a first command which instructs the storage system to set metadata of a target for a first cached write to reference a location of a corresponding data unit in the change set file on the storage system.

### Claim 13

A computing device comprising:
a memory comprising machine executable code for performing a method; and
a processor coupled to the memory, the processor configured to execute the machine executable code to cause the processor to:
aggregate a set of data units, unique among data units of writes cached by a host in a cache, into a change set file;
generate commands for the cached writes based on mappings between targets of the cached writes and locations of data units in the change set file; and
communicate the change set file and the commands to a storage system, wherein a metadata update operation to modify metadata of a file targeted by a command to increase a size of the file is transmitted to the storage system, and wherein transmission of the command to the storage system is dependent upon the metadata update operation completing.

### Claim 14 (depends on 13)

The computing device of claim 13, wherein the metadata update operation allocates additional logical representations of data units for the file.

### Claim 15 (depends on 13)

The computing device of claim 13, wherein the machine executable code causes the processor to:
communicate to a front end device of the storage system the commands for the cached writes based upon receiving confirmation that the change set file was stored by the storage system.

### Claim 16 (depends on 15)

The computing device of claim 15, wherein the machine executable code causes the processor to:
generate a first command which instructs the storage system to set metadata of a target for a first cached write to reference a location of a corresponding data unit in the change set file on the storage system.

### Claim 17 (depends on 13)

The computing device of claim 13, wherein the aggregation and generation is triggered based upon a cache flush trigger of the cache.

### Claim 18 (depends on 13)

The computing device of claim 13, wherein machine executable code causes the processor to:
cache writes in the cache by creating an entry within the cache for the write, wherein the entry is marked as dirty.

### Claim 19 (depends on 18)

The computing device of claim 18, wherein the machine executable code causes the processor to:
restrict, until after the change set file and the commands are communicated to the storage system, entries in the cache marked as dirty to read access based upon detecting a cache flush trigger.

### Claim 20 (depends on 13)

The computing device of claim 13, wherein the machine executable code causes the processor to:
generate a first command which indicates a first data unit as a donor and a target of a first cached write as a recipient.
