# US 10,120,578 B2 · Storage optimization for write-in-free-space workloads

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

- Number: US 10,120,578 B2
- Document ID: US10120578B2
- Status: Granted
- Kind: B2
- Application number: 15/409,767
- Filed: 2017-01-19
- Published: 2018-07-19
- Granted: 2018-11-06
- Earliest claimed: 2017-01-19
- Assignees: International Business Machines Corporation
- Applicants: International Business Machines Corporation
- Inventors: Xue Qiang Zhou
- Web page: https://patentgrep.com/patent/US10120578B2

## CPC

- G06F 3/064: {Management of blocks}
- G06F 3/0616: {in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]}
- G06F 3/0685: {Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A method for optimizing data storage for write-in-free-space workloads is disclosed. In one embodiment, such a method includes receiving a write request to write an updated version of data to a new block address in free space. The new block address maps to a destination extent. The method further determines an old block address, mapping to a source extent, storing a previous version of the data. The method determines whether the source extent is the same as the destination extent. If the source extent is not the same as the destination extent (i.e., the old block address and new block address point to blocks in different extents), the method transfers temperature statistics associated with the old block address from the source extent to the destination extent. The method writes the updated version of the data to the new block address. A corresponding system and computer program product are also disclosed.

## Claims

### Claim 1

A method to optimize data storage for write-in-free-space workloads, the method comprising:
receiving a write request to write an updated version of data to a new block address in free space, the new block address mapping to a destination extent;
determining an old block address storing a previous version of the data, the old block address mapping to a source extent;
determining whether the source extent is the same as the destination extent;
if the source extent is not the same as the destination extent, transferring temperature statistics associated with the old block address from the source extent to the destination extent; and
writing the updated version of the data to the new block address.

### Claim 2 (depends on 1)

The method of claim 1, further comprising, if the source extent is the same as the destination extent, leaving temperature statistics of the source extent and destination extent unchanged.

### Claim 3 (depends on 1)

The method of claim 1, further comprising freeing storage space associated with the old block address.

### Claim 4 (depends on 1)

The method of claim 1, further comprising allocating the new block address to a same storage tier as the old block address.

### Claim 5 (depends on 1)

The method of claim 1, further comprising determining whether the source extent has substantially even temperature distribution.

### Claim 6 (depends on 5)

The method of claim 5, further comprising, if the source extent does not have substantially even temperature distribution, allocating the new block address in a destination extent that is different from the source extent.

### Claim 7 (depends on 5)

The method of claim 5, further comprising, if the source extent does have substantially even temperature distribution, allocating the new block address in a destination extent that is the same as the source extent.

### Claim 8

A computer program product to optimize data storage for write-in-free-space workloads, the computer program product comprising a computer-readable storage medium having computer-usable program code embodied therein, the computer-usable program code configured to perform the following when executed by at least one processor:
receive a write request to write an updated version of data to a new block address in free space, the new block address mapping to a destination extent;
determine an old block address storing a previous version of the data, the old block address mapping to a source extent;
determine whether the source extent is the same as the destination extent;
if the source extent is not the same as the destination extent, transfer temperature statistics associated with the old block address from the source extent to the destination extent; and
write the updated version of the data to the new block address.

### Claim 9 (depends on 8)

The computer program product of claim 8, wherein the computer-usable program code is further configured to, if the source extent is the same as the destination extent, leave temperature statistics of the source extent and destination extent unchanged.

### Claim 10 (depends on 8)

The computer program product of claim 8, wherein the computer-usable program code is further configured to free storage space associated with the old block address.

### Claim 11 (depends on 8)

The computer program product of claim 8, wherein the computer-usable program code is further configured to allocate the new block address to a same storage tier as the old block address.

### Claim 12 (depends on 8)

The computer program product of claim 8, wherein the computer-usable program code is further configured to determine whether the source extent has substantially even temperature distribution.

### Claim 13 (depends on 12)

The computer program product of claim 12, wherein the computer-usable program code is further configured to, if the source extent does not have substantially even temperature distribution, allocate the new block address in a destination extent that is different from the source extent.

### Claim 14 (depends on 12)

The computer program product of claim 12, wherein the computer-usable program code is further configured to, if the source extent does have substantially even temperature distribution, allocate the new block address in a destination extent that is the same as the source extent.

### Claim 15

A system to optimize data storage for write-in-free-space workloads, the system comprising:
at least one processor;
at least one memory device operably coupled to the at least one processor and storing instructions for execution on the at least one processor, the instructions causing the at least one processor to:
receive a write request to write an updated version of data to a new block address in free space, the new block address mapping to a destination extent;
determine an old block address storing a previous version of the data, the old block address mapping to a source extent;
determine whether the source extent is the same as the destination extent;
if the source extent is not the same as the destination extent, transfer temperature statistics associated with the old block address from the source extent to the destination extent; and
write the updated version of the data to the new block address.

### Claim 16 (depends on 15)

The system of claim 15, wherein the instructions further cause the at least one processor to, if the source extent is the same as the destination extent, leave temperature statistics of the source extent and destination extent unchanged.

### Claim 17 (depends on 15)

The system of claim 15, wherein the instructions further cause the at least one processor to free storage space associated with the old block address.

### Claim 18 (depends on 15)

The system of claim 15, wherein the instructions further cause the at least one processor to allocate the new block address to a same storage tier as the old block address.

### Claim 19 (depends on 18)

The system of claim 18, wherein the instructions further cause the at least one processor to determine whether the source extent has substantially even temperature distribution.

### Claim 20 (depends on 18)

The system of claim 18, wherein the instructions further cause the at least one processor to:
if the source extent does not have substantially even temperature distribution, allocate the new block address in a destination extent that is different from the source extent; and
if the source extent does have substantially even temperature distribution, allocate the new block address in a destination extent that is the same as the source extent.
