# US 12,001,685 B2 · Performing an in-line erasure coding process using a write-ahead log

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

- Number: US 12,001,685 B2
- Document ID: US12001685B2
- Status: Granted
- Kind: B2
- Application number: 17/710,335
- Filed: 2022-03-31
- Published: 2023-10-05
- Granted: 2024-06-04
- Earliest claimed: 2022-03-31
- Assignees: Cohesity, Inc.
- Applicants: Cohesity, Inc.
- Inventors: Apurv Gupta; Akshat Agarwal
- Web page: https://patentgrep.com/patent/US12001685B2

## CPC

- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/0644: {Management of space entities, e.g. partitions, extents, pools}
- G06F 3/0652: {Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket}
- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/0689: {Disk arrays, e.g. RAID, JBOD}
- G06F 11/1076: {Parity data used in redundant arrays of independent storages, e.g. in RAID systems}
- G06F 3/0641: {De-duplication techniques}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A plurality of data stripes and one or more parity stripes are generated using a plurality of data chunks stored in a write-ahead log based on an erasure coding configuration. The plurality of data stripes and the one or more parity stripes are stored on corresponding different storage devices. The plurality of data stripes and the one or more parity stripes are associated together under a data protection grouping container.

## Claims

### Claim 1

A method, comprising:
generating, based on an erasure coding configuration, a plurality of chunk file groups from a plurality of data chunks stored in a write-ahead log;
generating, based on the plurality of chunk file groups, a plurality of data stripes and one or more parity stripes using the plurality of data chunks stored in the write-ahead log;
storing the plurality of data stripes and the one or more parity stripes on corresponding different storage devices; and
associating together the plurality of data stripes and the one or more parity stripes under a data protection grouping container.

### Claim 2 (depends on 1)

The method of claim 1, further comprising removing the plurality of the data chunks from the write-ahead log.

### Claim 3 (depends on 1)

The method of claim 1, wherein each of the plurality of data stripes is a corresponding chunk file.

### Claim 4 (depends on 1)

The method of claim 1, further comprising ingesting source data from a source system.

### Claim 5 (depends on 4)

The method of claim 4, wherein ingesting the source data from the source system includes chunking the data into the plurality of data chunks or receiving the plurality of data chunks from the source system.

### Claim 6 (depends on 1)

The method of claim 1, wherein generating, based on the plurality of chunk file groups, the plurality of data stripes and the one or more parity stripes using the plurality of data chunks stored in the write-ahead log includes deduplicating the plurality of data chunks stored in the write-ahead log.

### Claim 7 (depends on 6)

The method of claim 6, further comprising determining whether a threshold size of data chunks remain in the write-ahead log.

### Claim 8 (depends on 7)

The method of claim 7, wherein the erasure coding configuration is maintained based on determining the threshold size of data chunks remain in the write-ahead log.

### Claim 9 (depends on 7)

The method of claim 7, further comprising waiting a threshold period of time based on a determination that the threshold size of data chunks do not remain in the write-ahead log.

### Claim 10 (depends on 7)

The method of claim 7, further comprising selecting an alternate erasure coding configuration based on a determination that the threshold size of data chunks do not remain in the write-ahead log.

### Claim 11 (depends on 10)

The method of claim 10, wherein the alternate erasure coding configuration decreases a number of data stripes included in the erasure coding configuration.

### Claim 12 (depends on 10)

The method of claim 10, wherein the alternate erasure coding configuration decreases a size of a data stripe included in the erasure coding configuration.

### Claim 13 (depends on 1)

The method of claim 1, further comprising updating metadata that enables the plurality of data chunks to be located.

### Claim 14 (depends on 13)

The method of claim 13, wherein updating the metadata that enables the plurality of data chunks to be located includes selecting a data chunk included in one of the plurality of data stripes.

### Claim 15 (depends on 14)

The method of claim 14, wherein updating the metadata that enables the plurality of data chunks to be located further includes determining whether an entry of a chunk metadata data structure corresponding to the data chunk has been updated.

### Claim 16 (depends on 15)

The method of claim 15, wherein updating the metadata that enables the plurality of data chunks to be located further includes updating an entry of a chunk file metadata data structure not to reference the data chunk based on a determination that the entry of the chunk metadata data structure corresponding to the data chunk has been updated.

### Claim 17 (depends on 15)

The method of claim 15, wherein updating the metadata that enables the plurality of data chunks to be located further includes updating the entry of the chunk metadata data structure to reference a chunk file storing the data chunk.

### Claim 18

A computer program product embodied in a non-transitory computer readable medium and comprising computer instructions for:
generating, based on an erasure coding configuration, a plurality of chunk file groups from a plurality of data chunks stored in a write-ahead log;
generating, based on the plurality of chunk file groups, a plurality of data stripes and one or more parity stripes using the plurality of data chunks stored in the write-ahead log;
storing the plurality of data stripes and the one or more parity stripes on corresponding different storage devices; and
associating together the plurality of data stripes and the one or more parity stripes under a data protection grouping container.

### Claim 19

A system, comprising:
a processor configured to:
generate, based on an erasure coding configuration, a plurality of chunk file groups from a plurality of data chunks stored in a write-ahead log;
generate, based on the plurality of chunk file groups, a plurality of data stripes and one or more parity stripes using the plurality of data chunks stored in the write-ahead log;
store the plurality of data stripes and the one or more parity stripes on corresponding different storage devices; and
associate together the plurality of data stripes and the one or more parity stripes under a data protection grouping container; and
a memory coupled to the processor and configured to provide the processor with instructions.
