# US 10,503,596 B2 · Accessing an encoded data slice in a dispersed storage network

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

- Number: US 10,503,596 B2
- Document ID: US10503596B2
- Status: Granted
- Kind: B2
- Application number: 15/143,988
- Filed: 2016-05-02
- Published: 2017-02-02
- Granted: 2019-12-10
- Earliest claimed: 2015-07-31
- Assignees: Pure Storage, Inc.
- Applicants: International Business Machines Corporation
- Inventors: Andrew D. Baptist; Manish Motwani; Jason K. Resch; Ilya Volvovski
- Web page: https://patentgrep.com/patent/US10503596B2

## CPC

- G06F 11/108: {Parity data distribution in semiconductor storages, e.g. in SSD}
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/0605: {by facilitating the interaction with a user or administrator}
- G06F 3/061: {Improving I/O performance}
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/0622: {in relation to access}
- G06F 3/0643: {Management of files}
- G06F 3/0644: {Management of space entities, e.g. partitions, extents, pools}
- G06F 3/0647: {Migration mechanisms}
- G06F 3/065: {Replication mechanisms}
- G06F 3/0653: {Monitoring storage devices or systems}
- G06F 3/0668: {adopting a particular infrastructure}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- 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 11/1662: {the resynchronized component or unit being a persistent storage device (re-synchronization of failed mirror storage G06F11/2082; rebuild or reconstruction of parity RAID storage G06F11/1008)}
- G06F 11/3034: {where the computing system component is a storage system, e.g. DASD based or network based (digital input from or digital output to record carriers G06F3/06; digital recording or reproducing G11B20/18; 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], H04L67/1097)}
- G06F 13/4282: {on a serial bus, e.g. I2C bus, SPI bus (on daisy chain buses G06F13/4247)}
- G06F 16/122: {using management policies (point-in-time backing up or restoration of persistent data G06F11/1446; file migration policies for HSM systems G06F16/185)}
- G06F 16/1824: {implemented using Network-attached Storage [NAS] architecture (distributed or networked storage systems G06F3/067; protocols for distributed storage of data in a network H04L67/1097)}
- G06F 16/24578: {using ranking}
- G06F 21/6218: {to a system of files or objects, e.g. local or distributed file system or database}
- G06F 21/645: {using a third party}
- H03M 13/2906: {using block codes (H03M13/2957 takes precedence)}
- 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 9/0861: {Generation of secret information including derivation or calculation of cryptographic keys or passwords}
- H04L 63/061: {for key exchange, e.g. in peer-to-peer networks (cryptographic mechanisms or cryptographic arrangements for key agreement H04L9/0838)}
- H04L 63/0853: {using an additional device, e.g. smartcard, SIM or a different communication terminal (cryptographic mechanisms or cryptographic arrangements for entity authentication involving additional secure or trusted devices H04L9/3234)}
- H04L 63/108: {when the policy decisions are valid for a limited amount of time}
- 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/63: Routing a service request depending on the request content or context
- G06F 3/064: {Management of blocks}
- G06F 2201/805: Real-time
- H03M 13/1515: {Reed-Solomon codes}
- H04L 63/0428: {wherein the data content is protected, e.g. by encrypting or encapsulating the payload}
- 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 for execution by a dispersed storage and task (DST) execution unit includes receiving a slice access request for execution by the DST execution unit. At least one ordered codec algorithm is identified. The slice access request is executed by utilizing the at least one ordered codec algorithm. A slice access response indicating an outcome of the slice access request is generated by the DST execution unit.

## Claims

### Claim 1

A method for execution by a dispersed storage and task (DST) execution unit that includes a processor, the method comprises:
receiving a slice access request for execution by the DST execution unit, wherein the slice access request includes a read request to read a first, pre-encoded data slice from a memory of the DST execution unit and wherein the slice access request includes a write request to write a second data slice to a memory of the DST execution unit;
identifying a plurality of ordered codec algorithms by reproducing a codec algorithm identifier associated with the first pre-encoded data slice, wherein the plurality of ordered codec algorithms is identified based on at least one of: a storage unit capability, a storage set capability, a request from another storage unit, a data type, a slice size, a performance requirement, a security requirement, or system registry information;
executing the slice access request by retrieving the first pre-encoded data slice from the memory and by performing the plurality of ordered codec algorithms in a reverse order to generate a decoded data slice from the first pre-encoded data slice, wherein the slice access request is further executed by performing the plurality of ordered codec algorithms in a forward order on the second data slice to generate an encoded data slice for storage in the memory of the DST execution unit; and
generating a slice access response indicating an outcome of the slice access request.

### Claim 2 (depends on 1)

The method of claim 1, wherein the plurality of ordered codec algorithms is identified based on at least one of: a slice name or a codec algorithm identifier associated with the slice access request.

### Claim 3 (depends on 1)

The method of claim 1, wherein the slice access response includes the decoded data slice.

### Claim 4

A processing system of a dispersed storage and task (DST) execution unit comprises:
at least one processor;
a memory that stores operational instructions, that when executed by the at least one processor cause the processing system to:
receive a slice access request for execution by the DST execution unit, wherein the slice access request includes a read request to read a first, pre-encoded data slice from a memory of the DST execution unit and wherein the slice access request includes a write request to write a second data slice to a memory of the DST execution unit;
identify a plurality of ordered codec algorithms by reproducing a codec algorithm identifier associated with the first pre-encoded data slice, wherein the plurality of ordered codec algorithms is identified based on at least one of: a storage unit capability, a storage set capability, a request from another storage unit, a data type, a slice size, a performance requirement, a security requirement, or system registry information;
execute the slice access request by retrieving the first pre-encoded data slice from the memory and by performing the plurality of ordered codec algorithms in a reverse order to generate a decoded data slice from the first pre-encoded data slice, wherein the slice access request is further executed by performing the plurality of ordered codec algorithms in a forward order on the second data slice to generate an encoded data slice for storage in the memory of the DST execution unit; and
generate a slice access response indicating an outcome of the slice access request.

### Claim 5 (depends on 4)

The processing system of claim 4, wherein the plurality of ordered codec algorithms is identified based on at least one of: a slice name or a codec algorithm identifier associated with the slice access request.

### Claim 6 (depends on 4)

The processing system of claim 4, wherein the slice access response includes the decoded data slice.

### Claim 7

A non-transitory computer readable storage medium comprises:
at least one memory section that stores operational instructions that, when executed by a processing system of a dispersed storage network (DSN) that includes a processor and a memory, causes the processing system to:
receive a slice access request for execution by a DST execution unit, wherein the slice access request includes a read request to read a first, pre-encoded data slice from a memory of the DST execution unit and wherein the slice access request includes a write request to write a second data slice to a memory of the DST execution unit;
identify a plurality of ordered codec algorithms by reproducing a codec algorithm identifier associated with the first pre-encoded data slice, wherein the plurality of ordered codec algorithms is identified based on at least one of: a storage unit capability, a storage set capability, a request from another storage unit, a data type, a slice size, a performance requirement, a security requirement, or system registry information;
execute the slice access request by retrieving the first pre-encoded data slice from the memory and by performing the plurality of ordered codec algorithms in a reverse order to generate a decoded data slice from the first pre-encoded data slice, wherein the slice access request is further executed by performing the plurality of ordered codec algorithms in a forward order on the second data slice to generate an encoded data slice for storage in the memory of the DST execution unit; and
generate a slice access response indicating an outcome of the slice access request.
