# US 10,372,624 B2 · Destaging pinned retryable data in cache

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

- Number: US 10,372,624 B2
- Document ID: US10372624B2
- Status: Granted
- Kind: B2
- Application number: 15/680,732
- Filed: 2017-08-18
- Published: 2019-02-21
- Granted: 2019-08-06
- Earliest claimed: 2017-08-18
- Assignees: International Business Machines Corporation
- Applicants: International Business Machines Corporation
- Inventors: Kyler A. Anderson; Kevin J. Ash; Matthew G. Borlick; Lokesh M. Gupta
- Web page: https://patentgrep.com/patent/US10372624B2

## CPC

- G06F 12/126: with special data handling, e.g. priority of data or instructions, handling errors or pinning
- G06F 12/0842: for multiprocessing or multitasking
- G06F 12/0846: Cache with multiple tag or data arrays being simultaneously accessible
- G06F 12/0868: Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
- G06F 12/0891: using clearing, invalidating or resetting means
- G06F 12/0895: of parts of caches, e.g. directory or tag array
- G06F 2212/1024: Latency reduction
- G06F 2212/1044: Space efficiency improvement
- G06F 2212/154: Networked environment
- G06F 2212/262: configured as RAID
- G06F 2212/263: Network storage, e.g. SAN or NAS
- G06F 2212/282: Partitioned cache
- G06F 2212/312: In storage controller
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Provided are techniques for destaging pinned retryable data in cache. A ranks scan structure is created with an indicator for each rank of multiple ranks that indicates whether pinned retryable data in a cache for that rank is destageable. A cache directory is partitioned into chunks, wherein each of the chunks includes one or more tracks from the cache. A number of tasks are determined for the scan of the cache. The number of tasks are executed to scan the cache to destage pinned retryable data that is indicated as ready to be destaged by the ranks scan structure, wherein each of the tasks selects an unprocessed chunk of the cache directory for processing until the chunks of the cache directory have been processed.

## Claims

### Claim 1

A computer program product, the computer program product comprising a computer readable storage medium having program code embodied therewith, the program code executable by at least one processor to perform:
creating a ranks scan structure with an indicator for each rank of multiple ranks that indicates whether pinned retryable data in a cache for that rank is destageable;
partitioning a cache directory into chunks, wherein each of the chunks includes one or more tracks from the cache;
determining a number of tasks for a scan of the cache; and
executing the number of tasks to scan the cache to destage pinned retryable data that is indicated as ready to be destaged by the ranks scan structure, wherein each of the tasks selects an unprocessed chunk of the cache directory for processing until the chunks of the cache directory have been processed.

### Claim 2 (depends on 1)

The computer program product of claim 1, wherein the program code is executable by the at least one processor to perform:
creating a ranks destageable structure with an indicator for each rank of multiple ranks that indicates whether pinned retryable data for that rank is destageable, wherein the ranks scan structure is a copy of the ranks destageable structure.

### Claim 3 (depends on 2)

The computer program product of claim 2, wherein the program code is executable by the at least one processor to perform:
for each rank, in response to determining that the rank has pinned retryable data and that a state change has occurred so that the pinned retryable data is destageable, setting an indicator in the ranks destageable structure to indicate that the pinned retryable data for the rank is destageable.

### Claim 4 (depends on 2)

The computer program product of claim 2, wherein the program code is executable by the at least one processor to perform:
in response to creating the ranks scan structure, clearing each indicator in the ranks destageable structure to indicate that a corresponding rank does not have pinned retryable data that is not destageable.

### Claim 5 (depends on 2)

The computer program product of claim 2, wherein the program code is executable by the at least one processor to perform:
in response to the scan completing and determining that there is at least one indicator set in the ranks destageable structure to indicate that a corresponding rank has pinned retryable data and a state change has occurred so that the pinned retryable data is destageable, starting another scan.

### Claim 6 (depends on 1)

The computer program product of claim 1, wherein the program code is executable by the at least one processor to perform:
determining the number of tasks based on any of a number of processors of a storage controller, a type of each of the multiple ranks, a speed of each of the multiple ranks and a number of the multiple ranks.

### Claim 7 (depends on 6)

The computer program product of claim 6, wherein the number of tasks is adjusted based on weights assigned to each of the ranks that has an indicator set in the ranks scan structure to indicate that pinned retryable data for that rank is destageable.

### Claim 8

A computer system, comprising:
one or more processors, one or more computer-readable memories and one or more computer-readable, tangible storage devices; and
program instructions, stored on at least one of the one or more computer-readable, tangible storage devices for execution by at least one of the one or more processors via at least one of the one or more memories, to perform operations comprising:
creating a ranks scan structure with an indicator for each rank of multiple ranks that indicates whether pinned retryable data in a cache for that rank is destageable;
partitioning a cache directory into chunks, wherein each of the chunks includes one or more tracks from the cache;
determining a number of tasks for a scan of the cache; and
executing the number of tasks to scan the cache to destage pinned retryable data that is indicated as ready to be destaged by the ranks scan structure, wherein each of the tasks selects an unprocessed chunk of the cache directory for processing until the chunks of the cache directory have been processed.

### Claim 9 (depends on 8)

The computer system of claim 8, wherein the operations further comprise:
creating a ranks destageable structure with an indicator for each rank of multiple ranks that indicates whether pinned retryable data for that rank is destageable, wherein the ranks scan structure is a copy of the ranks destageable structure.

### Claim 10 (depends on 9)

The computer system of claim 9, wherein the operations further comprise:
for each rank, in response to determining that the rank has pinned retryable data and that a state change has occurred so that the pinned retryable data is destageable, setting an indicator in the ranks destageable structure to indicate that the pinned retryable data for the rank is destageable.

### Claim 11 (depends on 9)

The computer system of claim 9, wherein the operations further comprise:
in response to creating the ranks scan structure, clearing each indicator in the ranks destageable structure to indicate that a corresponding rank does not have pinned retryable data that is not destageable.

### Claim 12 (depends on 9)

The computer system of claim 9, wherein the operations further comprise:
in response to the scan completing and determining that there is at least one indicator set in the ranks destageable structure to indicate that a corresponding rank has pinned retryable data and a state change has occurred so that the pinned retryable data is destageable, starting another scan.

### Claim 13 (depends on 8)

The computer system of claim 8, wherein the operations further comprise:
determining the number of tasks based on any of a number of processors of a storage controller, a type of each of the multiple ranks, a speed of each of the multiple ranks and a number of the multiple ranks.

### Claim 14 (depends on 13)

The computer system of claim 13, wherein the number of tasks is adjusted based on weights assigned to each of the ranks that has an indicator set in the ranks scan structure to indicate that pinned retryable data for that rank is destageable.

### Claim 15

A method, comprising:
creating, with a processor of a computer, a ranks scan structure with an indicator for each rank of multiple ranks that indicates whether pinned retryable data in a cache for that rank is destageable;
partitioning a cache directory into chunks, wherein each of the chunks includes one or more tracks from the cache;
determining a number of tasks for a scan of the cache; and
executing the number of tasks to scan the cache to destage pinned retryable data that is indicated as ready to be destaged by the ranks scan structure, wherein each of the tasks selects an unprocessed chunk of the cache directory for processing until the chunks of the cache directory have been processed.

### Claim 16 (depends on 15)

The method of claim 15, further comprising:
creating a ranks destageable structure with an indicator for each rank of multiple ranks that indicates whether pinned retryable data for that rank is destageable, wherein the ranks scan structure is a copy of the ranks destageable structure.

### Claim 17 (depends on 16)

The method of claim 16, further comprising:
for each rank, in response to determining that the rank has pinned retryable data and that a state change has occurred so that the pinned retryable data is destageable, setting an indicator in the ranks destageable structure to indicate that the pinned retryable data for the rank is destageable.

### Claim 18 (depends on 16)

The method of claim 16, further comprising:
in response to creating the ranks scan structure, clearing each indicator in the ranks destageable structure to indicate that a corresponding rank does not have pinned retryable data that is not destageable.

### Claim 19 (depends on 16)

The method of claim 16, further comprising:
in response to the scan completing and determining that there is at least one indicator set in the ranks destageable structure to indicate that a corresponding rank has pinned retryable data and a state change has occurred so that the pinned retryable data is destageable, starting another scan.

### Claim 20 (depends on 15)

The method of claim 15, further comprising:
determining the number of tasks based on any of a number of processors of a storage controller, a type of each of the multiple ranks, a speed of each of the multiple ranks and a number of the multiple ranks.
