IP Library Patent Application 15843220
Patent Application
App. No. 15/843,220

PARTIAL RESPONSE PROCESSING FOR IMPROVED PERFORMANCE AND DECISION MAKING

Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US None
App. No.
15/843,220
Abstract

A method begins by sending a set of read requests to a set of storage units of a dispersed storage network regarding a set of encoded data slices (EDSs). The method continues by receiving read responses from at least some storage units of the set of storage units, where at least one read response includes two EDSs. As read responses are being received and prior to receiving the read responses completely, the method continues by determining whether a decode threshold number of read responses have been received. When the threshold number of read responses have been received, the method continues by determining whether a first EDS position of each of the decode threshold number of read responses includes EDSs having different pillar numbers. When the read responses include the EDSs having different pillar numbers, the method continues by decoding the EDSs to recapture a data segment of a data object.

Claims (49)

1 . A method comprises:

sending, by a computing device of a dispersed storage network (DSN), a set of read requests to a set of storage units of the DSN regarding a set of encoded data slices;

receiving, by the computing device, read responses from at least some storage units of the set of storage units, wherein at least one of the read responses includes two encoded data slices of the set of encoded data slices;

as the read responses are being received and prior to receiving the read responses in full:

determining, by the computing device, whether a decode threshold number of read responses have been received;

when the decode threshold number of read responses have been received, determining, by the computing device, whether a first encoded data slice position of each of the decode threshold number of read responses includes encoded data slices having different pillar numbers; and

when the first encoded data slice position of each of the decode threshold number of read responses includes the encoded data slices having different pillar numbers, decoding, by the computing device, the encoded data slices having different pillar numbers to recapture a data segment of a data object.

2 . The method of claim 1 further comprises:

when the first encoded data slice position of each of the decode threshold number of read responses does not includes encoded data slices having different pillar numbers, reading, by the computing device, a second encoded data slice position of the at least one of the read responses that includes two encoded data slices; and

when a combination of differing pillar numbered encoded data slices that have been read equals the decode threshold number, decoding, by the computing device, the combination of differing pillar numbered encoded data slices to recover the data segment, wherein the combination of differing pillar numbered encoded data slices includes an encoded data slice read from the second encoded data slice position of the at least one of the read responses that includes two encoded data slices.

3 . The method of claim 1 further comprises:

when the decode threshold number of read responses have not been received, reading, by the computing device, a second encoded data slice position of the at least one of the read responses that includes two encoded data slices; and

when a combination of differing pillar numbered encoded data slices that have been read equals the decode threshold number, decoding, by the computing device, the combination of differing pillar numbered encoded data slices to recover the data segment, wherein the combination of differing pillar numbered encoded data slices includes an encoded data slice read from the second encoded data slice position of the at least one of the read responses that includes two encoded data slices.

4 . The method of claim 1 , wherein the sending the set of read requests comprises one or more of:

sending read source requests to at least some storage units of the set of storage units; and

sending one or more read foreign requests to one or more of storage units of the set of storage units, wherein a read source request of the read source requests is regarding a particular encoded data slice of the set of encoded data slices and is targeted to a particular storage unit of the at least some storage units, wherein the particular encoded data slice has a particular pillar number and a source name, wherein a DSN address for the particular encoded data slice includes the particular pillar number and the source name, wherein the particular storage unit is allocated a DSN address range in which the DSN address of the particular encoded data slice lies, and wherein a read foreign request of the one or more read foreign requests includes a request to read a second particular encoded data slice having the source name and having a pillar number that creates a DSN address that is outside of the DSN address range of a second particular storage unit of the at least some storage units.

5 . The method of claim 4 , wherein the source name comprises one or more of:

a vault identifier;

a data object identifier;

a generation level; and

a revision level.

6 . The method of claim 1 further comprises:

when the received read responses have been read in full and less than a decode threshold number of encoded data slices have been received, issuing, by the computing device, another read request to another storage unit of the DSN for at least one more encoded data slice of the set of encoded data slices.

7 . A computing device of a dispersed storage network (DSN) comprises:

memory;

an interface; and

a processing module operably coupled to the memory and the interface, wherein the processing module is operable to:

send, via the interface, a set of read requests to a set of storage units of the DSN regarding a set of encoded data slices;

receive, via the interface, read responses from at least some storage units of the set of storage units, wherein at least one of the read responses includes two encoded data slices of the set of encoded data slices;

as the read responses are being received and prior to receiving the read responses in full:

determine whether a decode threshold number of read responses have been received;

when the decode threshold number of read responses have been received, determine whether a first encoded data slice position of each of the decode threshold number of read responses includes encoded data slices having different pillar numbers; and

when the first encoded data slice position of each of the decode threshold number of read responses includes the encoded data slices having different pillar numbers, decode the encoded data slices having different pillar numbers to recapture a data segment of a data object.

8 . The computing device of claim 7 , wherein the processing module is further operable to:

when the first encoded data slice position of each of the decode threshold number of read responses does not includes encoded data slices having different pillar numbers, read a second encoded data slice position of the at least one of the read responses that includes two encoded data slices; and

when a combination of differing pillar numbered encoded data slices that have been read equals the decode threshold number, decode the combination of differing pillar numbered encoded data slices to recover the data segment, wherein the combination of differing pillar numbered encoded data slices includes an encoded data slice read from the second encoded data slice position of the at least one of the read responses that includes two encoded data slices.

9 . The computing device of claim 7 , wherein the processing module is further operable to:

when the decode threshold number of read responses have not been received, read a second encoded data slice position of the at least one of the read responses that includes two encoded data slices; and

when a combination of differing pillar numbered encoded data slices that have been read equals the decode threshold number, decode the combination of differing pillar numbered encoded data slices to recover the data segment, wherein the combination of differing pillar numbered encoded data slices includes an encoded data slice read from the second encoded data slice position of the at least one of the read responses that includes two encoded data slices.

10 . The computing device of claim 7 , wherein the processing module is operable to send, via the interface, the set of read requests by one or more of:

sending read source requests to at least some storage units of the set of storage units; and

sending one or more read foreign requests to one or more of storage units of the set of storage units, wherein a read source request of the read source requests is regarding a particular encoded data slice of the set of encoded data slices and is targeted to a particular storage unit of the at least some storage units, wherein the particular encoded data slice has a particular pillar number and a source name, wherein a DSN address for the particular encoded data slice includes the particular pillar number and the source name, wherein the particular storage unit is allocated a DSN address range in which the DSN address of the particular encoded data slice lies, and wherein a read foreign request of the one or more read foreign requests includes a request to read a second particular encoded data slice having the source name and having a pillar number that creates a DSN address that is outside of the DSN address range of a second particular storage unit of the at least some storage units.

11 . The computing device of claim 10 , wherein the processing module is operable to determine the source name by one or more of:

determining a vault identifier;

determining a data object identifier;

determining a generation level; and

determining a revision level.

12 . The computing device of claim 7 , wherein the processing module is further operable to:

when the received read responses have been read in full and less than a decode threshold number of encoded data slices have been received, issue another read request to another storage unit of the DSN for at least one more encoded data slice of the set of encoded data slices.

Assignments (3)
CORRECTIVE ASSIGNMENT TO CORRECT THE DELETE 15/174/279 AND 15/174/596 PROPERTY NUMBERS PREVIOUSLY RECORDED AT REEL: 49555 FRAME: 530. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jan 7, 2020
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 051495/0831 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 21, 2019
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 049555/0530 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 17, 2017
From: BAPTIST, ANDREW D.; DHUSE, GREG R.; KHADIWALA, RAVI V.; RESCH, JASON K.; LEGGETTE, WESLEY B.; VOSSBERG, TREVOR J.; GLADWIN, S. CHRISTOPHER
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 044415/0386 →