# US 12,223,166 B2 · Memory allocation for block rebuilding in a storage network

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

- Number: US 12,223,166 B2
- Document ID: US12223166B2
- Status: Granted
- Kind: B2
- Application number: 18/060,431
- Filed: 2022-11-30
- Published: 2023-03-30
- Granted: 2025-02-11
- Earliest claimed: 2013-07-31
- Assignees: Pure Storage, Inc.
- Applicants: Pure Storage, Inc.
- Inventors: Jason K. Resch; Andrew D. Baptist; Wesley B. Leggette
- Web page: https://patentgrep.com/patent/US12223166B2

## CPC

- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/061: {Improving I/O performance}
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/0635: {by changing the path, e.g. traffic rerouting, path reconfiguration}
- G06F 3/0638: {Organizing or formatting or addressing of data}
- G06F 3/064: {Management of blocks}
- G06F 3/0644: {Management of space entities, e.g. partitions, extents, pools}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 11/1076: {Parity data used in redundant arrays of independent storages, e.g. in RAID systems}
- H03M 13/373: {with erasure correction and erasure determination, e.g. for packet loss recovery or setting of erasures for the decoding of Reed-Solomon codes}
- H03M 13/3761: {using code combining, i.e. using combining of codeword portions which may have been transmitted separately, e.g. Digital Fountain codes, Raptor codes or Luby Transform [LT] codes}
- H04L 67/025: for remote control or remote monitoring of applications
- H04L 67/1008: based on parameters of servers, e.g. available memory or workload (monitoring of computer activity G06F11/30)
- H04L 67/1097: for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
- H04L 67/306: User profiles
- H04L 67/52: specially adapted for the location of the user terminal
- G06F 2206/1012: Load balancing
- G06F 2211/1028: Distributed, i.e. distributed RAID systems with parity
- H03M 13/1515: {Reed-Solomon codes}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H03M: CODING; DECODING; CODE CONVERSION IN GENERAL (using fluidic means F15C4/00; optical analogue/digital converters G02F7/00; coding, decoding or code conversion, specially adapted for particular applications, see the relevant subclasses, e.g. G01D, G01R, G06F, G06T, G09G, G10L, G11B, G11C, H04B, H04L, H04M, H04N; ciphering or deciphering for cryptography or other purposes involving the need for secrecy G09C)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A method begins by identifying a plurality of encoded data slices requiring rebuilding. The method continues by determining an amount of memory required for rebuilding the plurality of encoded data slices and allocating memory in one or more storage units for the rebuilding the plurality of encoded data slices as reserve memory. The method continues by obtaining a plurality of rebuilt encoded data slices associated with the plurality of encoded data slices requiring rebuilding and storing the plurality of rebuilt encoded data slices in the reserve memory.

## Claims

### Claim 1

A method for execution by one or more processing modules of one or more computing devices of a storage network, the method comprises:
identifying a plurality of encoded data slices requiring rebuilding;
in response to the identifying, determining an amount of memory required for rebuilding the plurality of encoded data slices;
allocating memory in one or more storage units for the rebuilding the plurality of encoded data slices as reserve memory;
obtaining a plurality of rebuilt encoded data slices, wherein the plurality of rebuilt encoded data slices are associated with the plurality of encoded data slices requiring rebuilding; and
storing the plurality of rebuilt encoded data slices in the reserve memory.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
accessing memory utilization information to identify unallocated memory associated with the one or more storage units.

### Claim 3 (depends on 2)

The method of claim 2, wherein the information sufficient to identify unallocated memory includes an amount of memory used for stored encoded data slices, an amount of memory that is unused.

### Claim 4 (depends on 1)

The method of claim 1, wherein the amount of memory required for rebuilding the plurality of encoded data slices is more than an amount of memory required for storing the plurality of encoded data slices.

### Claim 5 (depends on 1)

The method of claim 1 further comprising:
designating all utilized and reserve memory as utilized.

### Claim 6 (depends on 1)

The method of claim 1, wherein identifying the plurality of encoded data slices includes at least one of:
receiving a request to rebuild a portion of a virtual memory block;
detecting a missing encoded data slice;
detecting a corrupted encoded data slice; and
monitoring downloads to memory meeting minimum read/write (R/W) threshold numbers of encoded data slices but not including a full pillar width of encoded data slices.

### Claim 7 (depends on 1)

The method of claim 1, wherein identifying the plurality of encoded data slices further comprises querying vaults related to the plurality of encoded data slices to determine one or more missing or corrupted encoded data slices.

### Claim 8 (depends on 1)

The method of claim 1, further comprising:
modifying memory utilization information to include the plurality of rebuilt encoded data slices.

### Claim 9 (depends on 8)

The method of claim 8, further comprising sending modified memory utilization information to one or more of:
a storage unit of the storage network;
a managing unit of the storage network; and
a user device.

### Claim 10 (depends on 1)

The method of claim 1, further comprising obtaining the plurality of rebuilt encoded data slices by at least one of: receiving the rebuilt encoded data slices, generating the rebuilt encoded data slices and accessing one or more other computing devices of the storage network.

### Claim 11

A computing device of a group of computing devices of a storage network, the computing device comprises:
an interface;
a local memory; and
a processing module operably coupled to the interface and the local memory, wherein the processing module is configured to:
identify a plurality of encoded data slices requiring rebuilding;
in response to an identification of a plurality of encoded data slices requiring rebuilding, determine an amount of memory required for rebuilding the plurality of encoded data slices;
allocate memory in one or more storage units for the rebuilding the plurality of encoded data slices as reserve memory;
obtain a plurality of rebuilt encoded data slices, wherein the plurality of rebuilt encoded data slices are associated with the plurality of encoded data slices requiring rebuilding; and
store the plurality of rebuilt encoded data slices in the reserve memory.

### Claim 12 (depends on 11)

The computing device of claim 11, wherein the processing module is further configured to:
access memory utilization information to identify unallocated memory associated with the one or more storage units.

### Claim 13 (depends on 12)

The computing device of claim 12, wherein the information sufficient to identify unallocated memory includes an amount of memory used for stored encoded data slices, an amount of memory that is unused.

### Claim 14 (depends on 11)

The computing device of claim 11, wherein the amount of memory required for rebuilding the plurality of encoded data slices is more than an amount of memory required for storing the plurality of encoded data slices.

### Claim 15 (depends on 11)

The computing device of claim 11, wherein the processing module is further configured to:
designate all utilized and reserve memory as utilized.

### Claim 16 (depends on 11)

The computing device of claim 11, wherein the plurality of encoded data slices are identified by at least one of:
receiving a request to rebuild a portion of a virtual memory block;
detecting a missing encoded data slice;
detecting a corrupted encoded data slice; and
monitoring downloads to memory meeting minimum read/write (R/W) threshold numbers of encoded data slices but not including a full pillar width of encoded data slices.

### Claim 17 (depends on 11)

The computing device of claim 11, wherein the plurality of encoded data slices are identified by querying vaults related to the plurality of encoded data slices to determine one or more missing or corrupted encoded data slices.

### Claim 18 (depends on 11)

The computing device of claim 11, wherein the processing module is further configured to:
modify memory utilization information to include the plurality of rebuilt encoded data slices.

### Claim 19 (depends on 11)

The computing device of claim 11, wherein the processing module is further configured to:
send updated memory utilization information to one or more of:
a storage unit of the storage network;
a managing unit of the storage network; and
a user device.

### Claim 20 (depends on 11)

The computing device of claim 11, wherein the processing module is further configured to:
obtain the plurality of rebuilt encoded data slices by at least one of: receiving the rebuilt encoded data slices, generating the rebuilt encoded data slices and accessing one or more other computing devices of the storage network.
