# US 8,788,742 B2 · Using an attribute of a write request to determine where to cache data in a storage system having multiple caches including non-volatile storage cache in a sequential access storage device

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

- Number: US 8,788,742 B2
- Document ID: US8788742B2
- Status: Granted
- Kind: B2
- Application number: 13/113,949
- Filed: 2011-05-23
- Published: 2012-11-29
- Granted: 2014-07-22
- Earliest claimed: 2011-05-23
- Assignees: International Business Machines Corporation
- Applicants: Michael T. Benhase; Binny S. Gill; Lokesh M. Gupta; Matthew J. Kalos
- Inventors: Michael T. Benhase; Binny S. Gill; Lokesh M. Gupta; Matthew J. Kalos
- Web page: https://patentgrep.com/patent/US8788742B2

## CPC

- G06F 12/0866: for peripheral storage systems, e.g. disk cache
- G06F 12/123: with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Provided are a computer program product, system, and method for using an attribute of a write request to determine where to cache data in a storage system having multiple caches including non-volatile storage cache in a sequential access storage device. Received modified tracks are cached in the non-volatile storage device integrated with the sequential access storage device in response to determining to cache the modified tracks. A write request having modified tracks is received. A determination is made as to whether an attribute of the received write request satisfies a condition. The received modified tracks for the write request are cached in the non-volatile storage device in response to determining that the determined attribute does not satisfy the condition. A destage request is added to a request queue for the received write request having the determined attribute not satisfying the condition.

## Claims

### Claim 1

A computer program product for managing data in a sequential access storage device receiving read requests and write requests from a system with respect to tracks stored in a sequential access storage medium, the computer program product comprising a non-transitory computer readable storage medium having computer readable program code embodied therein that executes to perform operations, the operations comprising:
caching received modified tracks in a non-volatile storage device integrated with the sequential access storage device in response to determining to cache the modified tracks;
receiving a write request having modified tracks;
determining whether an attribute of the received write request satisfies a condition;
caching the received modified tracks for the write request in the non-volatile storage device in response to determining that the determined attribute does not satisfy the condition;
adding a destage request to a request queue for the received write request having the determined attribute not satisfying the condition; and
writing the received modified tracks for the write request having the determined attribute satisfying the condition at a higher priority than modified tracks for write requests having the attribute not satisfying the condition.

### Claim 2 (depends on 1)

The computer program product of claim 1, wherein the non-volatile storage device is a faster access device than the sequential access storage medium.

### Claim 3 (depends on 1)

The computer program product of claim 1, wherein the sequential access storage device comprises a hard disk drive including a buffer, wherein the non-volatile storage device comprises a flash device separate from a device including the buffer, wherein the sequential access storage medium comprises at least one magnetic disk, wherein the received modified tracks for the write request having the determined attribute satisfying the condition are stored in the buffer until written to the sequential access storage medium without being stored in the non-volatile storage device.

### Claim 4 (depends on 1)

The computer program product of claim 1, wherein the operations further comprise:
maintaining a spatial index indicating the modified tracks in the non-volatile storage device in an ordering based on their physical location in the sequential access storage medium; and
in response to processing a destage request in the request queue, comparing a current position of a write head to physical locations of the modified tracks on the sequential access storage medium indicated in the spatial index to select a modified track to destage from the non-volatile storage device to the sequential access medium, and wherein write requests having the determined attribute satisfying the condition are written to the sequential access storage medium without using the spatial index.

### Claim 5 (depends on 1)

The computer program product of claim 1, wherein the condition comprises the attribute being a sequential write request and wherein the determined attribute does not satisfy the condition if the write request comprises a non-sequential write request.

### Claim 6 (depends on 1)

The computer program product of claim 1, wherein the determined attribute comprises a number of tracks to write as part of the received write request, wherein the determined attribute satisfies the condition if the determined number of tracks to write is greater than a threshold number of tracks and wherein the condition is not satisfied if the determined number of tracks is less than the threshold number of tracks.

### Claim 7 (depends on 1)

The computer program product of claim 1, wherein the determined attribute comprises a first attribute and the determined condition comprises a first condition, wherein the operations further comprise:
determining a second attribute of the write request in response to determining that the first attribute satisfies the first condition;
determining whether the second attribute satisfies a second condition;
caching the received modified tracks in the non-volatile storage device in response to determining that the determined second attribute satisfies the second condition; and
adding a destage request to the request queue for the write request having the determined first attribute satisfying the first condition and the second attribute satisfying the second condition, wherein the received modified tracks for the write request having the determined first attribute satisfying the first condition and the determined second attribute satisfying the second condition are written at a higher priority than modified tracks for write requests having the first attribute not satisfying the first condition and for write requests having the first attribute satisfying the first condition but having the second attribute not satisfying the second condition.

### Claim 8 (depends on 7)

The computer program product of claim 7, wherein the determined first attribute indicates whether the write request is a sequential write or a non-sequential write, and wherein the determined first attribute satisfies the first condition if the first attribute is a sequential write request and the first condition is not satisfied if the first attribute is a non-sequential write request, wherein the second attribute comprises a number of tracks to write as part of the received write request, wherein the determined second attribute satisfies the second condition if the determined number of tracks to write is less than a threshold number of tracks and wherein the second condition is not satisfied if the determined number of tracks is greater than the threshold number of tracks.

### Claim 9 (depends on 1)

The computer program product of claim 1, wherein the operations further comprise:
maintaining a bypass queue queuing write requests for modified tracks having the determined attribute not satisfying the condition;
in response to completing processing of one write request in the request queue, processing one write request in the bypass queue in response to the bypass queue having at least one write request, wherein write requests in the bypass queue are processed at a higher priority over write requests in the request queue.

### Claim 10 (depends on 9)

The computer program product of claim 9, further comprising:
switching to processing a first predetermined number of write requests in the request queue after processing a predetermined second number of write requests in the bypass queue.

### Claim 11

A storage device receiving read requests and write requests for tracks from a system, comprising:
a sequential access storage medium storing tracks;
a non-volatile storage device; and
a computer readable storage medium having computer readable program code embodied therein that executes to perform operations, the operations comprising:
caching received modified tracks in the non-volatile storage device in response to determining to cache the modified tracks;
receiving a write request having modified tracks;
determining whether an attribute of the received write request satisfies a condition;
caching the received modified tracks for the write request in the non-volatile storage device in response to determining that the determined attribute does not satisfy the condition;
adding a destage request to a request queue for the received write request having the determined attribute not satisfying the condition; and
writing the received modified tracks for the write request having the determined attribute satisfying the condition at a higher priority than modified tracks for write requests having the attribute not satisfying the condition.

### Claim 12 (depends on 11)

The storage device of claim 11, wherein the sequential access storage device comprises a hard disk drive including a buffer, wherein the non-volatile storage device comprises a flash device separate from a device including the buffer, wherein the sequential access storage medium comprises at least one magnetic disk, wherein the received modified tracks for the write request having the determined attribute satisfying the condition are stored in the buffer until written to the sequential access storage medium without being stored in the non-volatile storage device.

### Claim 13 (depends on 11)

The storage device of claim 11, wherein the operations further comprise:
maintaining a spatial index indicating the modified tracks in the non-volatile storage device in an ordering based on their physical location in the sequential access storage medium; and
in response to processing a destage request in the request queue, comparing a current position of a write head to physical locations of the modified tracks on the sequential access storage medium indicated in the spatial index to select a modified track to destage from the non-volatile storage device to the sequential access medium, and wherein write requests having the determined attribute satisfying the condition are written to the sequential access storage medium without using the spatial index.

### Claim 14 (depends on 11)

The storage device of claim 11, wherein the condition comprises the attribute being a sequential write request and wherein the determined attribute does not satisfy the condition if the write request comprises a non-sequential write request.

### Claim 15 (depends on 11)

The storage device of claim 11, wherein the determined attribute comprises a number of tracks to write as part of the received write request, wherein the determined attribute satisfies the condition if the determined number of tracks to write is greater than a threshold number of tracks and wherein the condition is not satisfied if the determined number of tracks is less than the threshold number of tracks.

### Claim 16 (depends on 11)

The storage device of claim 11, wherein the determined attribute comprises a first attribute and the determined condition comprises a first condition, wherein the operations further comprise:
determining a second attribute of the write request in response to determining that the first attribute satisfies the first condition;
determining whether the second attribute satisfies a second condition;
caching the received modified tracks in the non-volatile storage device in response to determining that the determined second attribute satisfies the second condition; and
adding a destage request to the request queue for the write request having the determined first attribute satisfying the first condition and the second attribute satisfying the second condition, wherein the received modified tracks for the write request having the determined first attribute satisfying the first condition and the determined second attribute satisfying the second condition are written at a higher priority than modified tracks for write requests having the first attribute not satisfying the first condition and for write requests having the first attribute satisfying the first condition but having the second attribute not satisfying the second condition.

### Claim 17 (depends on 16)

The storage device of claim 16, wherein the determined first attribute indicates whether the write request is a sequential write or a non-sequential write, and wherein the determined first attribute satisfies the first condition if the first attribute is a sequential write request and the first condition is not satisfied if the first attribute is a non-sequential write request, wherein the second attribute comprises a number of tracks to write as part of the received write request, wherein the determined second attribute satisfies the second condition if the determined number of tracks to write is less than a threshold number of tracks and wherein the second condition is not satisfied if the determined number of tracks is greater than the threshold number of tracks.

### Claim 18 (depends on 11)

The storage device of claim 11, wherein the operations further comprise:
maintaining a bypass queue queuing write requests for modified tracks having the determined attribute not satisfying the condition;
in response to completing processing of one write request in the request queue, processing one write request in the bypass queue in response to the bypass queue having at least one write request, wherein write requests in the bypass queue are processed at a higher priority over write requests in the request queue.

### Claim 19 (depends on 18)

The storage device of claim 18, further comprising:
switching to processing a first predetermined number of write requests in the request queue after processing a predetermined second number of write requests in the bypass queue.

### Claim 20 (depends on 11)

The storage device of claim 11, wherein the non-volatile storage device is a faster access device than the sequential access storage medium.
