# US 11,907,068 B2 · Read request response for reconstructed data in a degraded drive

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

- Number: US 11,907,068 B2
- Document ID: US11907068B2
- Status: Granted
- Kind: B2
- Application number: 17/669,056
- Filed: 2022-02-10
- Published: 2022-08-18
- Granted: 2024-02-20
- Earliest claimed: 2021-02-16
- Assignees: Nyriad, Inc.
- Applicants: Nyriad, Inc.
- Inventors: Stuart John Inglis; Sheridan John Lambert; Adam Gworn Kit Fleming; Daniel James Nicholas Stokes
- Web page: https://patentgrep.com/patent/US11907068B2

## CPC

- G06F 11/1084: {Degraded mode, e.g. caused by single or multiple storage removals or disk failures}
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/0656: {Data buffering arrangements}
- G06F 3/0689: {Disk arrays, e.g. RAID, JBOD}
- G06F 11/0772: {Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers}
- G06F 11/1088: {Reconstruction on already foreseen single or plurality of spare disks}
- G06F 11/1092: {Rebuilding, e.g. when physically replacing a failing disk}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A method comprising: receiving a request to read data stored in an array of drives; determining that the data is stored on one or more degraded drives in the array; reconstructing the data from one or more drives in the array other than the degraded drives; providing the reconstructed data in response to the request; and after providing the reconstructed data, writing the reconstructed data to one or more drives in the array other than the degraded drives.

## Claims

### Claim 1

A method comprising:
receiving a request to read data stored in a stripe of an array of drives;
determining, in response to receiving the request to read the data, that the data is stored on one or more degraded drives in the array;
reconstructing the data from one or more drives in the array other than the degraded drives;
storing the reconstructed data in a buffer;
providing the reconstructed data from the buffer in response to the request; and
after providing the reconstructed data, writing the reconstructed data to one or more drives in the array other than the degraded drives.

### Claim 2 (depends on 1)

The method of claim 1, wherein the data stored in the array is erasure encoded.

### Claim 3 (depends on 1)

The method of claim 1, wherein reconstructing the data from one or more drives in the array other than the degraded drives comprises:
reconstructing the data from other data in the same stripe, the other data being stored on the one or more drives in the array other than the degraded drives.

### Claim 4 (depends on 1)

The method of claim 1, wherein the reconstructed data comprises:
the data corresponding to the request to read the data stored in the array of drives; and
one or more additional pieces of data.

### Claim 5 (depends on 1)

The method of claim 1, wherein writing the reconstructed data to one or more drives in the array other than the degraded drives comprises:
identifying a plurality of blocks of reconstructed data; and
writing the plurality of blocks of reconstructed data as a stripe in the array.

### Claim 6 (depends on 1)

The method of claim 1, wherein writing the reconstructed data to one or more drives in the array other than the degraded drives comprises:
using a garbage collection process to write the reconstructed data to one or more drives in the array other than the degraded drives.

### Claim 7 (depends on 1)

The method of claim 1, wherein determining that the data is stored on one or more degraded drives in the array comprises:
determining that attempts to obtain the data have failed after a threshold time.

### Claim 8 (depends on 1)

The method of claim 1, wherein determining that the data is stored on one or more degraded drives in the array comprises:
determining that the one or more degraded drives have failed.

### Claim 9

A system comprising:
one or more processors; and
a memory storing instructions which, when executed by the one or more processors, cause the system to:
receive a request to read data stored in a stripe of an array of drives;
determine, in response to receiving the request to read the data, that the data is stored on one or more degraded drives in the array;
reconstruct the data from one or more drives in the array other than the degraded drives;
storing the reconstructed data in a buffer;
provide the reconstructed data from the buffer in response to the request; and
after providing the reconstructed data, write the reconstructed data to one or more drives in the array other than the degraded drives.

### Claim 10 (depends on 9)

The system of claim 9, wherein the data stored in the array is erasure encoded.

### Claim 11 (depends on 9)

The system of claim 9, wherein reconstructing the data from one or more drives in the array other than the degraded drives comprises:
reconstructing the data from other data in the same stripe, the other data being stored on the one or more drives in the array other than the degraded drives.

### Claim 12 (depends on 9)

The system of claim 9, wherein the reconstructed data comprises:
the data corresponding to the request to read the data stored in the array of drives; and
one or more additional pieces of data.

### Claim 13 (depends on 9)

The system of claim 9, wherein writing the reconstructed data to one or more drives in the array other than the degraded drives comprises:
identifying a plurality of blocks of reconstructed data; and
writing the plurality of blocks of reconstructed data as a stripe in the array.

### Claim 14 (depends on 9)

The system of claim 9, wherein writing the reconstructed data to one or more drives in the array other than the degraded drives comprises:
using a garbage collection process to write the reconstructed data to one or more drives in the array other than the degraded drives.

### Claim 15 (depends on 9)

The system of claim 9, wherein determining that the data is stored on one or more degraded drives in the array comprises:
determining that attempts to obtain the data have failed after a threshold time, or
determining that the one or more degraded drives have failed.

### Claim 16

A non-transitory computer readable medium storing instructions which, when executed by one or more processors, cause the one or more processors to perform steps comprising:
receiving a request to read data stored in a stripe of an array of drives;
determining, in response to receiving the request to read the data, that the data is stored on one or more degraded drives in the array;
reconstructing the data from one or more drives in the array other than the degraded drives;
storing the reconstructed data in a buffer;
providing the reconstructed data from the buffer in response to the request; and
after providing the reconstructed data, writing the reconstructed data to one or more drives in the array other than the degraded drives.

### Claim 17 (depends on 16)

The computer readable medium of claim 16,
wherein the data stored in the array is erasure encoded,
wherein determining that the data is stored on one or more degraded drives in the array comprises determining that attempts to obtain the data have failed after a threshold time,
wherein reconstructing the data from one or more drives in the array other than the degraded drives comprises reconstructing the data from other data in the same stripe, the other data being stored on the one or more drives in the array other than the degraded drives, and
wherein writing the reconstructed data to one or more drives in the array other than the degraded drives comprises:
identifying a plurality of blocks of reconstructed data; and
writing the plurality of blocks of reconstructed data as a stripe in the array.
