# US 12,182,044 B2 · Data storage in a zone drive

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

- Number: US 12,182,044 B2
- Document ID: US12182044B2
- Status: Granted
- Kind: B2
- Application number: 17/853,822
- Filed: 2022-06-29
- Published: 2022-10-20
- Granted: 2024-12-31
- Earliest claimed: 2014-07-03
- Assignees: Pure Storage, Inc.
- Applicants: Pure Storage, Inc.
- Inventors: Ronald Karr; Brian T. Gold
- Web page: https://patentgrep.com/patent/US12182044B2

## CPC

- G06F 13/28: using burst mode transfer, e.g. direct memory access {DMA}, cycle steal (G06F13/32 takes precedence)
- G06F 3/0607: {by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device}
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/0625: {Power saving in storage systems}
- G06F 3/0629: {Configuration or reconfiguration of storage systems}
- G06F 3/0644: {Management of space entities, e.g. partitions, extents, pools}
- G06F 3/0656: {Data buffering arrangements}
- G06F 3/0688: {Non-volatile semiconductor memory arrays}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A method of applying a data format in a direct memory access transfer is provided. The method includes distributing user data throughout a plurality of storage nodes through erasure coding, wherein the plurality of storage nodes are housed within a single chassis that couples the storage nodes as a cluster, each of the plurality of storage nodes having nonvolatile solid-state memory for user data storage. The method includes reading a self-describing data portion from a first memory of the nonvolatile solid-state memory and extracting a destination from the self-describing data portion. The method includes writing data, from the self-describing data portion, to a second memory of the nonvolatile solid-state memory according to the destination.

## Claims

### Claim 1

A method, comprising:
storing segmented data into a first memory of a zoned storage device, wherein the stored segmented data includes destination information and status information; and
transferring the segmented data from the first memory to a zone in a second memory of the zoned storage device, based on a location extracted from the destination information and conditioned on the status information.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
confirming the transferring of the data to the second memory of the zoned storage device by updating the status information.

### Claim 3 (depends on 1)

The method of claim 1, further comprising:
writing an identifier of the segmented data to a header of a non-volatile memory page, wherein the second memory of the zoned storage device includes non-volatile memory having the non-volatile memory page containing the location.

### Claim 4 (depends on 1)

The method of claim 1, further comprising:
extracting the status information responsive to a loss of power, and wherein the transferring is responsive to the loss of power and responsive to the status information indicating the segmented data has not yet been written to the second memory of the zoned storage device.

### Claim 5 (depends on 1)

The method of claim 1, further comprising:
determining whether the data has been written to the second memory of the zoned storage device based on the status information.

### Claim 6 (depends on 1)

The method of claim 1, further comprising:
assigning sequential non-repeating addresses over multiple address spaces that map each segmented data to an inode.

### Claim 7 (depends on 1)

The method of claim 1, further comprising:
writing an indication that the segmented data will not be used and need not be transferred to the second memory of the zoned storage device to the status information in the first memory of the zoned storage device.

### Claim 8

A method of moving data by direct memory access (DMA), comprising:
accessing, through a direct memory access (DMA) unit of a zoned storage device, a data segment from a first memory of the zoned storage device, the data segment including destination information and status information; and
writing, through the DMA unit, the data segment to a zone in a second memory of the zoned storage device according to the destination information as conditioned on the status information.

### Claim 9 (depends on 8)

The method of claim 8, further comprising:
writing, using the DMA unit, to the status information of the first memory an indication of successful data transfer, responsive to writing the data segment to the destination in the second memory of the zoned storage device.

### Claim 10 (depends on 8)

The method of claim 8, wherein the destination information includes one of an address, a destination pointer, or an offset.

### Claim 11 (depends on 8)

The method of claim 8, further comprising:
writing an identifier to a header of a non-volatile memory page, wherein the identifier identifies the data as to an inode identifier (ID), a medium address, or a segment ID, and wherein the non-volatile memory page is in the second memory of the zoned storage device.

### Claim 12 (depends on 8)

The method of claim 8, further comprising:
determining from the status information that the data has not been written to the second memory of the zoned storage device, wherein the writing the data segment to the destination in the second memory of the zoned storage device is responsive to the determining.

### Claim 13 (depends on 8)

The method of claim 8, further comprising:
determining from status information that the data segment has been written to the second memory of the zoned storage device;
writing, using the DMA unit, further data from the first memory to the second memory of the zoned storage device, responsive to a power loss, without rewriting the data that has been written to the second memory of the zoned storage device according to the status information.

### Claim 14 (depends on 8)

The method of claim 8, wherein the first memory of the zoned storage device includes non-volatile random-access memory (NVRAM) and the second memory of the zoned storage device includes non-volatile memory.

### Claim 15

A storage cluster, comprising:
a first memory, configured to hold a plurality of data segments, each data segment including destination information and status information;
a zoned memory; and
a direct memory access (DMA) unit, configured to perform actions including:
identifying a destination for one of the plurality of data segments based on the destination information; and
writing the data segment to a zone of the zoned memory, conditioned upon the status information.

### Claim 16 (depends on 15)

The storage cluster of claim 15, wherein the first memory includes non-volatile random access memory (NVRAM).

### Claim 17 (depends on 15)

The storage cluster of claim 15, wherein:
the zoned memory includes non-volatile memory;
an energy reserve is coupled to the first memory, the zoned memory, and the DMA unit; and
the energy reserve is configured to provide sufficient power for the DMA unit to transfer contents of the first memory to the zoned memory responsive to a power loss.

### Claim 18 (depends on 15)

The storage cluster of claim 15, further comprising:
assigning sequential non-repeating addresses over multiple address spaces that map the data segment to an inode.

### Claim 19 (depends on 15)

The storage cluster of claim 15, wherein:
the actions further include updating to the status information to confirm transfer of the data segment from the first memory to the zone of the zoned memory, responsive to writing the data segment to the destination in the zone of the zoned memory.

### Claim 20 (depends on 15)

The storage cluster of claim 15, further comprising:
the one of the plurality of data segments in the first memory includes a status of the data segment indicating one of whether the data of the one of the plurality of data segments has been written to the zone of the zoned memory or whether the data of the one of the plurality of data segments will be used.
