# US 2014/0207997 A1 · Pregroomer for storage array

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

- Number: US 2014/0207997 A1
- Document ID: US20140207997A1
- Status: Published application
- Kind: A1
- Application number: 13/746,225
- Filed: 2013-01-21
- Published: 2014-07-24
- Earliest claimed: 2013-01-21
- Assignees: Fusion-Io, Inc.
- Applicants: Fusion-Io, Inc.
- Inventors: James Peterson; Ned Plasson
- Web page: https://patentgrep.com/patent/US20140207997A1

## CPC

- G06F 12/0246: {in block erasable memory, e.g. flash memory}
- G06F 2212/7204: Capacity control, e.g. partitioning, end-of-life degradation
- G06F 2212/7205: Cleaning, compaction, garbage collection, erase control
- G06F 2212/7207: management of metadata or control data
- G11C 8/06: Address interface arrangements, e.g. address buffers
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G11C: STATIC STORES (semiconductor memory devices H10B)

## Abstract

Techniques are disclosed relating to arranging data on storage media. In one embodiment, a computer system is configured to access a storage array that includes a plurality of storage blocks. The computer system executes a first set of processes and a second set of processes, where the first set of processes operates on selected ones of the plurality of storage blocks to increase a likelihood that the selected storage blocks are operated on by the second set of processes. In some embodiments, the second set of processes determines whether to operate on a storage block based on an amount of invalid data within the storage block. In such an embodiment, the first set of processes increases a likelihood that the storage block is operated on by increasing the amount of invalid data within the storage block.

## Claims

### Claim 1

A method, comprising:
executing a first set of processes on a system configured to access a plurality of storage blocks;
executing a second set of processes on the system; and
wherein the first set of processes operates on selected ones of the plurality of storage blocks to increase a likelihood that the selected storage blocks are operated on by the second set of processes.

### Claim 2 (depends on 1)

The method of claim 1, wherein the second set of processes determines whether to operate on a storage block based on an amount of invalid data within the storage block; and
wherein the first set of processes increases a likelihood that the storage block is operated on by increasing the amount of invalid data within the storage block.

### Claim 3 (depends on 2)

The method of claim 2, wherein the second set of processes operates on ones of the selected storage blocks by erasing the erase blocks; and
wherein the first set of processes increases the amount of invalid data within the storage block by copying valid data from the storage block to another one of the plurality of storage blocks and marking the valid data within the storage block as invalid data.

### Claim 4 (depends on 1)

The method of claim 1, wherein the first set of processes selects two or more of the plurality of storage blocks having a set of data that is stored in a non-contiguous portion of a physical address space; and
wherein the first set of processes increases the likelihood that the second set of processes operates on the two or more storage blocks to consolidate the set of data to a contiguous portion of the physical address space.

### Claim 5 (depends on 4)

The method of claim 4, wherein the set of data corresponds to a contiguous portion of a logical address space, and wherein consolidating the set of data reduces a number of nodes in a forward mapping data structure usable to map an address from the logical address space to an address in the physical address space.

### Claim 6 (depends on 4)

The method of claim 4, wherein the first set of processes selects the two or more storage blocks based on a rate of change of the set of data.

### Claim 7 (depends on 4)

The method of claim 4, wherein the first set of processes selects the two or more storage block in response to the two or more storage blocks including metadata.

### Claim 8 (depends on 1)

The method of claim 1, wherein the system maintains a current version of a set of metadata in volatile memory and maintains a non-current version of the set of metadata in one or more of the plurality of storage blocks; and
wherein the first set of processes increases a likelihood that the second set of processes operates on the one or more storage blocks by writing the current version of the set of metadata to another one of the plurality of storage blocks.

### Claim 9 (depends on 1)

The method of claim 1, wherein the first and second sets of processes are processes of a driver usable by an operating system of the system to facilitate interaction between one or more applications on the system and a controller circuit of the system, wherein the controller circuit is configured to coordinate performance of erase and program operations for the plurality of storage blocks.

### Claim 10

A non-transitory computer readable medium having program instructions stored thereon, wherein the program instructions are executable by a computer system to cause the computer system to:
select a first of a plurality of erase blocks in a storage array accessible to the computer system; and
invalidate a subset of valid data within the first erase block.

### Claim 11 (depends on 10)

The computer readable medium of claim 10, wherein the program instructions are further executable to cause the computer system to:
copy the subset of valid data from the first erase block to a second of the plurality of erase blocks;
invalidate the subset of valid data stored in the first erase block; and
based on an amount of indicated invalid data in the first erase block, identify the first erase block as a candidate for performance of an erase operation.

### Claim 12 (depends on 11)

The computer readable medium of claim 11, wherein the program instructions are further executable to cause the computer system to:
copy valid data from at least one other erase block to the second erase block along with the subset of valid data from the first erase block.

### Claim 13 (depends on 10)

The computer readable medium of claim 10, wherein the first erase block is a logical erase block that includes a plurality of physical erase blocks.

### Claim 14

An apparatus, comprising:
one or more processors;
memory having program instruction stored therein that are executable by the one or more processors to implement:
a first process executable to select one of a plurality of storage blocks based on a set of analysis criteria and to invalidate, without erasing, data in the selected storage block.

### Claim 15 (depends on 14)

The apparatus of claim 14, wherein the program instructions are further executable to implement:
a second process executable to erase ones of the plurality of storage blocks; and
wherein the first process is executable to invalidate data in the selected storage block, increasing the likelihood that the selected storage block is selected for erasure by the second process.

### Claim 16 (depends on 14)

The apparatus of claim 14, wherein the first process is executable to consolidate the data in the selected storage block with data from another storage block before invalidating the data in the selected storage block.

### Claim 17 (depends on 14)

The apparatus of claim 14, wherein the apparatus is a computing device coupled to an array of storage that includes the plurality of storage blocks, and wherein the first process is a driver-level process.

### Claim 18 (depends on 14)

The apparatus of claim 14, further comprising:
an array of storage array that includes the plurality of storage blocks, and wherein the one or more processors include a controller configured to perform program operations on ones of the plurality of storage blocks.

### Claim 19

An apparatus, comprising:
a pregrooming means for selecting one or more of a plurality of storage blocks within a log-structured storage array based on a set of analysis criteria, wherein the log-structured storage array has an append point specifying a current location within the array, wherein the pregrooming means is also for copying valid data from the one or more storage blocks to the current location specified by the append point; and
a grooming means for selecting the one or more storage blocks as candidates for erasure and for erasing the one or more storage blocks.

### Claim 20 (depends on 19)

The apparatus of claim 19, wherein the pregrooming means is configured to:
select, based on the set of analysis criteria, two or more of the plurality of storage blocks that include a set of data; and
copy the set of data into a single storage block at the current location specified by the append point.

### Claim 21 (depends on 19)

The apparatus of claim 19, wherein the pregrooming means is configured to select the one or more storage blocks based on how frequently data in the one or more storage blocks is accessed.

### Claim 22 (depends on 21)

The apparatus of claim 21, wherein the pregrooming means is configured to select the one or more storage blocks based on their respective proximities to a current tail location of the log-structured storage array.

### Claim 23

An apparatus configured to manage a plurality of erase blocks in a storage array, the apparatus comprising:
a selection module configured to select a first of the plurality of erase blocks; and
a copy module configured to copy a subset of valid data within the first erase block to a second of the plurality of erase blocks.

### Claim 24 (depends on 23)

The apparatus of claim 23, wherein the selection module is configured to select the first erase block based on information about the first erase block stored in a volatile memory and based on information about the first erase block stored in one or more of the plurality of erase blocks.

### Claim 25 (depends on 23)

The apparatus of claim 23, wherein the storage array is a flash-media-based storage array.

### Claim 26 (depends on 23)

The apparatus of claim 23, wherein the selection module and the copy module are within a controller circuit configured to perform erase operations on the plurality of erase blocks.
