US 12,079,083 B2
Rebuilding missing data in a storage network via locally decodable redundancy data
Ilya Volvovski, Chicago, IL (US); Bruno H. Cabral, Chicago, IL (US); Manish Motwani, Chicago, IL (US); Thomas D. Cocagne, Elk Grove Village, IL (US); Timothy W. Markison, Mesa, AZ (US); Gary W. Grube, Barrington Hills, IL (US); Wesley B. Leggette, Chicago, IL (US); Jason K. Resch, Warwick, RI (US); Michael C. Storm, Palo Alto, CA (US); Greg R. Dhuse, Chicago, IL (US); Yogesh R. Vedpathak, Chicago, IL (US); and Ravi V. Khadiwala, Bartlett, IL (US)
Assigned to Pure Storage, Inc., Santa Clara, CA (US)
Filed by Pure Storage, Inc., Mountain View, CA (US)
Filed on Feb. 27, 2023, as Appl. No. 18/175,143.
Application 18/175,143 is a continuation of application No. 17/933,563, filed on Sep. 20, 2022, granted, now 11,625,300.
Application 17/933,563 is a continuation of application No. 17/850,145, filed on Jun. 27, 2022, granted, now 11,487,620, issued on Nov. 1, 2022.
Application 17/850,145 is a continuation of application No. 17/084,828, filed on Oct. 30, 2020, granted, now 11,429,486, issued on Aug. 30, 2022.
Application 17/084,828 is a continuation in part of application No. 16/854,010, filed on Apr. 21, 2020, granted, now 10,831,600, issued on Nov. 10, 2020.
Application 16/854,010 is a continuation of application No. 16/108,905, filed on Aug. 22, 2018, abandoned.
Application 16/108,905 is a continuation in part of application No. 15/400,767, filed on Jan. 6, 2017, granted, now 10,102,069, issued on Oct. 16, 2018.
Application 15/400,767 is a continuation of application No. 14/680,459, filed on Apr. 7, 2015, granted, now 9,606,867, issued on Mar. 28, 2017.
Application 17/084,828 is a continuation in part of application No. 16/366,715, filed on Mar. 27, 2019, abandoned.
Application 16/366,715 is a continuation of application No. 15/362,460, filed on Nov. 28, 2016, granted, now 10,324,791, issued on Jun. 18, 2019.
Application 15/362,460 is a continuation in part of application No. 13/270,528, filed on Oct. 11, 2011, granted, now 10,216,647, issued on Feb. 26, 2019.
Application 13/270,528 is a continuation in part of application No. 12/983,232, filed on Dec. 31, 2010, granted, now 8,725,940, issued on May 13, 2014.
Claims priority of provisional application 62/008,207, filed on Jun. 5, 2014.
Claims priority of provisional application 61/408,980, filed on Nov. 1, 2010.
Claims priority of provisional application 61/308,938, filed on Feb. 27, 2010.
Claims priority of provisional application 61/314,166, filed on Mar. 16, 2010.
Prior Publication US 2023/0205630 A1, Jun. 29, 2023
This patent is subject to a terminal disclaimer.
Int. Cl. G06F 11/10 (2006.01); G06F 3/06 (2006.01); G06F 11/07 (2006.01); G06F 16/00 (2019.01); H04L 47/72 (2022.01); H04L 67/1097 (2022.01); H04L 67/62 (2022.01); G06F 9/50 (2006.01); H04L 47/28 (2022.01)
CPC G06F 11/1076 (2013.01) [G06F 3/061 (2013.01); G06F 3/0635 (2013.01); G06F 3/0659 (2013.01); G06F 3/067 (2013.01); G06F 11/0709 (2013.01); G06F 11/0727 (2013.01); G06F 11/0775 (2013.01); G06F 16/00 (2019.01); H04L 47/72 (2013.01); H04L 67/1097 (2013.01); H04L 67/62 (2022.05); G06F 9/50 (2013.01); G06F 9/5005 (2013.01); G06F 9/5077 (2013.01); G06F 2211/1004 (2013.01); G06F 2211/1028 (2013.01); H04L 47/28 (2013.01)] 24 Claims
OG exemplary drawing
 
1. A method for execution by at least one processing circuit of a storage network, the method comprises:
sending, to at least one storage unit of the storage network, at least one read request corresponding to at least a read threshold number of a set of encoded data slices to be retrieved, wherein the set of encoded data slices correspond to data that is coded in accordance with dispersed error coding parameters that include a write threshold number and the read threshold number, wherein the write threshold number is a number of encoded data slices in the set of encoded data slices and wherein the read threshold number is a number of the set of encoded data slices that is required to decode the data;
receiving, at the at least one processing circuit and from the at least one storage unit, a first subset of the set of encoded data slices, wherein the first subset is missing at least one missing encoded data slice that was not received from the at least one storage unit in response to the at least one read request and wherein a number of encoded data slices in the first subset is less than the read threshold number;
generating, via the at least one processing circuit, at least one rebuilt encoded data slice corresponding to the at least one missing encoded data slice utilizing locally decodable redundancy data, wherein the locally decodable redundancy data was generated from a second subset of the set of encoded data slices that includes the at least one missing encoded data slice and wherein the locally decodable redundancy data is stored locally to the processing circuit; and
recovering, via the at least one processing circuit, the data based on the at least one rebuilt encoded data slice and the first subset.