# US 11,442,640 B1 · Utilizing unmapped and unknown states in a replicated storage system

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

- Number: US 11,442,640 B1
- Document ID: US11442640B1
- Status: Granted
- Kind: B1
- Application number: 17/070,036
- Filed: 2020-10-14
- Granted: 2022-09-13
- Earliest claimed: 2014-10-07
- Assignees: Pure Storage, Inc.
- Applicants: Pure Storage, Inc.
- Inventors: Ethan L. Miller; John Colgrove; Christopher Golden; Steve Hodgson; Malcolm Sharpe
- Web page: https://patentgrep.com/patent/US11442640B1

## CPC

- G06F 3/064: {Management of blocks}
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/065: {Replication mechanisms}
- G06F 3/0683: {Plurality of storage devices}
- G06F 3/0688: {Non-volatile semiconductor memory arrays}
- G06F 11/2094: {Redundant storage or storage space (G06F11/2056 takes precedence)}
- G06F 12/0246: {in block erasable memory, e.g. flash memory}
- G06F 12/1009: using page tables, e.g. page table structures
- G06F 2212/1056: Simplification
- G06F 2212/214: Solid state disk
- G06F 2212/7201: Logical to physical mapping or translation of blocks or pages
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A system and method for utilizing unmapped and unknown states in a storage system. When a first portion of a first medium is determined to be unreachable from any other mediums, the first portion of the first medium may be put into an unmapped state, and its data may be discarded and the corresponding storage locations may be freed. During replication of the first medium to a replica storage array, the state of the first portion of the first medium may be translated from the unmapped state into an unknown state on the replica storage array. If another storage array has the data of the first portion of the first medium, this data may be used to overwrite the first portion of the first medium on the replica storage array, converting the first portion of the first medium from the unknown state into the mapped state.

## Claims

### Claim 1

A system comprising:
a first storage subsystem; and
a second storage subsystem;
wherein the system is configured to:
detect a request to replicate a dataset from the first storage subsystem to the second storage subsystem;
determine that a first portion of the dataset is in an unmapped state on the first storage subsystem; and
record that the first portion of the dataset is in an unknown state on the second storage subsystem including:
determining where to record that the first portion is in the unknown state based on a size of the first portion;
record that the first portion is in the unknown state in a first table responsive to determining the size of the first portion is less than a first programmable threshold; and
record that the first portion is in the unknown state in a second table responsive to determining the size of the first portion is greater than the first programmable threshold.

### Claim 2 (depends on 1)

The system as recited in claim 1, wherein the first table is an address translation table, and wherein the second table is a medium mapping table.

### Claim 3 (depends on 1)

The system as recited in claim 1, wherein the system is further configured to:
determine where to record that the first portion of the dataset is in the unknown state based on locations of endpoints of the first portion;
record that the first portion of the dataset is in the unknown state in a first table responsive to determining the endpoints of the first portion are not on sector range boundaries; and
record that the first portion of the dataset is in the unknown state in a second table responsive to determining the endpoints are on sector range boundaries.

### Claim 4 (depends on 1)

The system as recited in claim 1, wherein the system is further configured to:
detect a request to replicate a second dataset;
create a first tuple in the unknown state for the second dataset in its entirety prior to receiving any portion of the second dataset; and
store the first tuple in a first table.

### Claim 5 (depends on 4)

The system as recited in claim 4, wherein the system is further configured to:
detect a user operation targeting a first portion of the second dataset;
generate a request for the first portion of the second dataset to a corresponding storage subsystem;
receive the first portion of the second dataset from the corresponding storage subsystem;
create a second tuple in a mapped state, wherein the second tuple corresponds to the first portion of the second dataset; and
store the second tuple in the first table.

### Claim 6

A method comprising:
detecting a request to replicate a dataset from a first storage subsystem to a second storage subsystem;
receiving an indication that a first portion of the dataset is in an unmapped state on the first storage subsystem; and
recording that the first portion of the dataset is in an unknown state on the second storage subsystem, including:
determining where to record that the first portion is in the unknown state based on a size of the first portion;
record that the first portion is in the unknown state in a first table responsive to determining the size of the first portion is less than a first programmable threshold; and
record that the first portion is in the unknown state in a second table responsive to determining the size of the first portion is greater than the first programmable threshold.

### Claim 7 (depends on 6)

The method as recited in claim 6, wherein the first table is an address translation table, and wherein the second table is a medium mapping table.

### Claim 8 (depends on 6)

The method as recited in claim 6, further comprising:
determining where to record that the first portion of the dataset is in the unknown state based on locations of endpoints of the first portion;
recording that the first portion of the dataset is in the unknown state in a first table responsive to determining the endpoints of the first portion are not on sector range boundaries; and
recording that the first portion of the dataset is in the unknown state in a second table responsive to determining the endpoints are on sector range boundaries.

### Claim 9 (depends on 6)

The method as recited in claim 6, further comprising:
detecting a request to replicate a second dataset;
creating a first tuple in the unknown state for the second dataset in its entirety prior to receiving any portion of the second dataset; and
storing the first tuple in a first table.

### Claim 10 (depends on 6)

The method as recited in claim 6, further comprising:
detecting a user operation targeting a first portion of the second dataset;
generating a request for the first portion of the second dataset to a corresponding storage subsystem;
receiving the first portion of the second dataset from the corresponding storage subsystem;
creating a second tuple in a mapped state, wherein the second tuple corresponds to the first portion of the second dataset; and
storing the second tuple in a first table.

### Claim 11

A non-transitory computer readable storage medium storing program instructions, wherein the program instructions are executable by a processor to:
detect a request to replicate a dataset from a first storage subsystem to a second storage subsystem;
receive an indication that a first portion of the dataset is in an unmapped state on the first storage subsystem; and
record that the first portion of the dataset is in an unknown state on the second storage subsystem, including:
determining where to record that the first portion is in the unknown state based on a size of the first portion;
record that the first portion is in the unknown state in a first table responsive to determining the size of the first portion is less than a first programmable threshold; and
record that the first portion is in the unknown state in a second table responsive to determining the size of the first portion is greater than the first programmable threshold.

### Claim 12 (depends on 11)

The non-transitory computer readable storage medium as recited in claim 11, wherein the first table is an address translation table, and wherein the second table is a medium mapping table.

### Claim 13 (depends on 11)

The non-transitory computer readable storage medium as recited in claim 11, wherein the program instructions are further executable by a processor to:
determine where to record that the first portion of the dataset is in the unknown state based on locations of endpoints of the first portion;
record that the first portion of the dataset is in the unknown state in a first table responsive to determining the endpoints of the first portion are not on sector range boundaries; and
record that the first portion of the dataset is in the unknown state in a second table responsive to determining the endpoints are on sector range boundaries.

### Claim 14 (depends on 11)

The non-transitory computer readable storage medium as recited in claim 11, wherein the program instructions are further executable by a processor to:
detect a request to replicate a second dataset;
create a first tuple in the unknown state for the second dataset in its entirety prior to receiving any portion of the second dataset; and
store the first tuple in a first table.
