IP Library Granted Patent US 12,693,792
Granted Patent B2
US 12,693,792 · App. 18/791,684 · Granted Jul 28, 2026

Generating a trusted rebuilt appended encoded data slice

Inventors: Ravi V. Khadiwala (Bartlett, IL); Jason K. Resch (Warwick, RI)
Assignee: Pure Storage, Inc.
G06F3/0619G06F3/0608G06F3/0647G06F3/067G06F3/0689G06F11/167H04L63/123G06F16/00
View Patent ↗
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 12,693,792
App. No.
18/791,684
Filed
Aug 1, 2024
Granted
Jul 28, 2026
Kind
B2
Art Unit
2165
USPC
707/827
Abstract

A method for execution by one or more computing devices includes generating current slice integrity check value information for a rebuilt appended encoded data slice of a set of appended encoded data slices stored in a set of storage units of the storage network, where an appended encoded data slice of the set of appended encoded data slices includes an encoded data slice of a set of encoded data slices and slice integrity check value information for the encoded data slice. The method further includes determining the current slice integrity check value information compares favorably to the slice integrity check value information to produce a trusted rebuilt appended encoded data slice. When the current slice integrity check value information compares favorably to the slice integrity check value information, the method further includes storing the rebuilt appended encoded data slice as the trusted rebuilt appended encoded data slice.

Claims (50)

1 . A method for execution by one or more computing devices of a storage network, the method comprises:

rebuilding an appended encoded data slice of a set of appended encoded data slices based on:

utilizing a decode threshold number of appended encoded data slices of a set of appended encoded data slices stored in a set of storage units of the storage network to produce a rebuilt encoded data slice for inclusion in the appended encoded data slice; and

generating current slice integrity check value information for inclusion in a rebuilt appended encoded data slice of the set of appended encoded data slices, wherein an appended encoded data slice of the set of appended encoded data slices includes an encoded data slice of a set of encoded data slices and slice integrity check value information for the encoded data slice;

determining the current slice integrity check value information compares favorably to the slice integrity check value information to produce a trusted rebuilt appended encoded data slice; and

when the current slice integrity check value information compares favorably to the slice integrity check value information, storing the rebuilt appended encoded data slice as the trusted rebuilt appended encoded data slice.

2 . The method of claim 1 , wherein the slice integrity check value information comprises:

an integrity check value list, wherein the integrity check value list includes a width number equal to a number of integrity check values of a set of integrity check values.

3 . The method of claim 2 , wherein each encoded data slice of the set of encoded data slices is hashed to produce the set of integrity check values.

4 . The method of claim 1 , wherein the slice integrity check value information comprises:

an integrity check value list hash, wherein an integrity check value list is hashed to produce the integrity check value list hash.

5 . The method of claim 4 , wherein the slice integrity check value information further comprises:

an encoded integrity check value list slice of a set of encoded integrity check value list slices, wherein the integrity check value list is error encoded to produce the set of encoded integrity check value list slices.

6 . The method of claim 1 , wherein the storing the rebuilt appended encoded data slice comprises:

sending the rebuilt appended encoded data slice that includes a rebuilt encoded data slice and the current slice integrity check value information to a storage unit of the set of storage units.

7 . The method of claim 1 , wherein the generating the current slice integrity check value information for the rebuilt appended encoded data slice further comprises:

determining whether the slice integrity check value information is an integrity check value list or an integrity check value list hash and an encoded integrity check value list slice.

8 . The method of claim 7 further comprises:

when the slice integrity check value information is the integrity check value list:

generating a current integrity check value list, wherein the current integrity check value list includes a width number equal to a number of current integrity check values of a set of current integrity check values, wherein each encoded data slice associated with a decode threshold number of appended encoded data slices of the set of appended encoded data slices and the rebuilt appended encoded data slice is hashed to produce a set of current integrity check values.

9 . The method of claim 7 further comprises:

when the slice integrity check value information is the integrity check value list hash and the encoded integrity check value list slice:

generating a current integrity check value list;

hashing the current integrity check value list to produce a current integrity check value list hash; and

dispersed error encoding the current integrity check value list to produce a set of current encoded integrity check value list slices.

10 . The method of claim 7 , wherein the determining whether the slice integrity check value information is the integrity check value list or the integrity check value list hash and the encoded integrity check value list slice comprises:

sending a slice integrity check value information inquiry to a processing unit of the storage network that generated the set of appended encoded data slices.

11 . The method of claim 7 , wherein the determining whether the slice integrity check value information is the integrity check value list or the integrity check value list hash and the encoded integrity check value list slice comprises:

performing a trusted source lookup.

12 . The method of claim 1 , wherein the determining the current slice integrity check value information corresponds to the slice integrity check value information comprises:

comparing the current slice integrity check value information to the slice integrity check value information.

13 . The method of claim 1 , wherein the determining the current slice integrity check value information corresponds to the slice integrity check value information comprises:

performing a deterministic function on the current slice integrity check value information.

14 . The method of claim 1 , wherein the rebuilding further comprises:

obtaining the decode threshold number of appended encoded data slices of the set of appended encoded data slices; and

rebuilding the appended encoded data slice based on the decode threshold number of appended encoded data slices.

15 . The method of claim 1 further comprises:

when the current slice integrity check value information does not compare favorably to the slice integrity check value information, indicating an authenticity failure of the rebuilding of the appended encoded data slice.

16 . A computer readable storage device comprises:

at least one memory section for storing operational instructions that, when executed by one or more computing devices of a storage network, cause the one or more computing devices to:

rebuild an appended encoded data slice of a set of appended encoded data slices based on:

utilizing a decode threshold number of appended encoded data slices of a set of appended encoded data slices stored in a set of storage units of the storage network to produce a rebuilt encoded data slice for inclusion in the appended encoded data slice; and

generating current slice integrity check value information for inclusion in a rebuilt appended encoded data slice of the set of appended encoded data slices, wherein an appended encoded data slice of the set of appended encoded data slices includes an encoded data slice of a set of encoded data slices and slice integrity check value information for the encoded data slice;

determine the current slice integrity check value information compares favorably to the slice integrity check value information to produce a trusted rebuilt appended encoded data slice; and

when the current slice integrity check value information compares favorably to the slice integrity check value information, store the rebuilt appended encoded data slice as the trusted rebuilt appended encoded data slice.

17 . The computer readable storage device of claim 16 , wherein the slice integrity check value information comprises:

an integrity check value list, wherein the integrity check value list includes a width number equal to a number of integrity check values of a set of integrity check values.

18 . The computer readable storage device of claim 17 , wherein each encoded data slice of the set of encoded data slices is hashed to produce the set of integrity check values.

19 . The computer readable storage device of claim 15 , wherein the slice integrity check value information comprises:

an integrity check value list hash, wherein an integrity check value list is hashed to produce the integrity check value list hash.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 2, 2024
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 068277/0339 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 1, 2024
From: KHADIWALA, RAVI V.; RESCH, JASON K.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 068154/0796 →
Continuity (5)
Continuation 17247434 · Dec 10, 2020
Continuation 15660635 · Jul 26, 2017
Continuation In Part 15082887 · Mar 28, 2016
Provisional Application 62168145 · May 29, 2015
Related Publication 20240393960A1 · Nov 28, 2024
References Cited (105)
US 4092732A · Ouchi · 1978 [cited by applicant]
US 5454101A · Mackay · 1995 [cited by applicant]
US 5485474A · Rabin · 1996 [cited by applicant]
US 5774643A · Lubbers · 1998 [cited by applicant]
US 5802364A · Senator · 1998 [cited by applicant]
US 5809285A · Hilland · 1998 [cited by applicant]
US 5890156A · Rekieta · 1999 [cited by applicant]
US 5987622A · Lo Verso · 1999 [cited by applicant]
US 5991414A · Garay · 1999 [cited by applicant]
US 6012159A · Fischer · 2000 [cited by applicant]
US 6058454A · Gerlach · 2000 [cited by applicant]
US 6128277A · Bruck · 2000 [cited by applicant]
US 6175571B1 · Haddock · 2001 [cited by applicant]
US 6192472B1 · Garay · 2001 [cited by applicant]
US 6256688B1 · Suetaka · 2001 [cited by applicant]
US 6272658B1 · Steele · 2001 [cited by applicant]
US 6301604B1 · Nojima · 2001 [cited by applicant]
US 6356949B1 · Katsandres · 2002 [cited by applicant]
US 6366995B1 · Vilkov · 2002 [cited by applicant]
US 6374336B1 · Peters · 2002 [cited by applicant]
US 6415373B1 · Peters · 2002 [cited by applicant]
US 6418539B1 · Walker · 2002 [cited by applicant]
US 6449688B1 · Peters · 2002 [cited by applicant]
US 6567948B2 · Steele · 2003 [cited by applicant]
US 6571282B1 · Bowman-Amuah · 2003 [cited by applicant]
US 6609223B1 · Wolfgang · 2003 [cited by applicant]
US 6718361B1 · Basani · 2004 [cited by applicant]
US 6760808B2 · Peters · 2004 [cited by applicant]
US 6785768B2 · Peters · 2004 [cited by applicant]
US 6785783B2 · Buckland · 2004 [cited by applicant]
US 6826711B2 · Moulton · 2004 [cited by applicant]
US 6879596B1 · Dooply · 2005 [cited by applicant]
US 7003688B1 · Pittelkow · 2006 [cited by applicant]
US 7024451B2 · Jorgenson · 2006 [cited by applicant]
US 7024609B2 · Wolfgang · 2006 [cited by applicant]
US 7080101B1 · Watson · 2006 [cited by applicant]
US 7103824B2 · Halford · 2006 [cited by applicant]
US 7103915B2 · Redlich · 2006 [cited by applicant]
US 7111115B2 · Peters · 2006 [cited by applicant]
US 7140044B2 · Redlich · 2006 [cited by applicant]
US 7146644B2 · Redlich · 2006 [cited by applicant]
US 7171493B2 · Shu · 2007 [cited by applicant]
US 7222133B1 · Raipurkar · 2007 [cited by applicant]
US 7240236B2 · Cutts · 2007 [cited by applicant]
US 7272613B2 · Sim · 2007 [cited by applicant]
US 7636724B2 · De La Torre · 2009 [cited by applicant]
US 9442671B1 · Zhang et al. · 2016 [cited by applicant]
US 9489254B1 · Franklin · 2016 [cited by applicant]
US 9766810B2 · Baptist · 2017 [cited by applicant]
US 20020062422A1 · Butterworth · 2002 [cited by applicant]
US 20020166079A1 · Ulrich · 2002 [cited by applicant]
US 20030018927A1 · Gadir · 2003 [cited by applicant]
US 20030037261A1 · Meffert · 2003 [cited by applicant]
US 20030065617A1 · Watkins · 2003 [cited by applicant]
US 20030084020A1 · Shu · 2003 [cited by applicant]
US 20040024963A1 · Talagala · 2004 [cited by applicant]
US 20040122917A1 · Menon · 2004 [cited by applicant]
US 20040215998A1 · Buxton · 2004 [cited by applicant]
US 20040228493A1 · Ma · 2004 [cited by applicant]
US 20050100022A1 · Ramprashad · 2005 [cited by applicant]
US 20050114594A1 · Corbett · 2005 [cited by applicant]
US 20050125593A1 · Karpoff · 2005 [cited by applicant]
US 20050131993A1 · Fatula, Jr. · 2005 [cited by applicant]
US 20050132070A1 · Redlich · 2005 [cited by applicant]
US 20050144382A1 · Schmisseur · 2005 [cited by applicant]
US 20050229069A1 · Hassner · 2005 [cited by applicant]
US 20060047907A1 · Shiga · 2006 [cited by applicant]
US 20060136448A1 · Cialini · 2006 [cited by applicant]
US 20060156059A1 · Kitamura · 2006 [cited by applicant]
US 20060224603A1 · Correll, Jr. · 2006 [cited by applicant]
US 20070079081A1 · Gladwin · 2007 [cited by applicant]
US 20070079082A1 · Gladwin · 2007 [cited by applicant]
US 20070079083A1 · Gladwin · 2007 [cited by applicant]
US 20070088970A1 · Buxton · 2007 [cited by applicant]
US 20070174192A1 · Gladwin · 2007 [cited by applicant]
US 20070214285A1 · Au · 2007 [cited by applicant]
US 20070234110A1 · Soran · 2007 [cited by applicant]
US 20070283167A1 · Venters, III · 2007 [cited by applicant]
US 20090094251A1 · Gladwin · 2009 [cited by applicant]
US 20090094318A1 · Gladwin · 2009 [cited by applicant]
US 20100023524A1 · Gladwin · 2010 [cited by applicant]
US 20110314346A1 · Vas · 2011 [cited by examiner]
US 20120198066A1 · Grube · 2012 [cited by applicant]
US 20130275844A1 · Thornton · 2013 [cited by examiner]
US 20130283394A1 · Leggette · 2013 [cited by examiner]
US 20140245063A1 · Baptist · 2014 [cited by applicant]
US 20170048021A1 · Yanovsky · 2017 [cited by applicant]
Chung; An Automatic Data Segmentation Method for 3D Measured Data Points; National Taiwan University; pp. 1-8; 1998. [cited by applicant]
Harrison; Lightweight Directory Access Protocol (LDAP): Authentication Methods and Security Mechanisms; IETF Network Working Group; RFC 4513; Jun. 2006; pp. 1-32. [cited by applicant]
Kubiatowicz, et al.; OceanStore: An Architecture for Global-Scale Persistent Storage; Proceedings of the Ninth International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS 20… [cited by applicant]
Legg; Lightweight Directory Access Protocol (LDAP): Syntaxes and Matching Rules; IETF Network Working Group; RFC 4517; Jun. 2006; pp. 1-50. [cited by applicant]
Plank, T1: Erasure Codes for Storage Applications; FAST2005, 4th Usenix Conference on File Storage Technologies; Dec. 13-16, 2005; pp. 1-74. [cited by applicant]
Rabin; Efficient Dispersal of Information for Security, Load Balancing, and Fault Tolerance; Journal of the Association for Computer Machinery; vol. 36, No. 2; Apr. 1989; pp. 335-348. [cited by applicant]
Satran, et al.; Internet Small Computer Systems Interface (iSCSI); IETF Network Working Group; RFC 3720; Apr. 2004; pp. 1-257. [cited by applicant]
Sciberras; Lightweight Directory Access Protocol (LDAP): Schema for User Applications; IETF Network Working Group; RFC 4519; Jun. 2006; pp. 1-33. [cited by applicant]
Sermersheim; Lightweight Directory Access Protocol (LDAP): The Protocol; IETF Network Working Group; RFC 4511; Jun. 2006; pp. 1-68. [cited by applicant]
Shamir; How to Share a Secret; Communications of the ACM; vol. 22, No. 11; Nov. 1979; pp. 612-613. [cited by applicant]
Smith; Lightweight Directory Access Protocol (LDAP): Uniform Resource Locator; IETF Network Working Group; RFC 4516; Jun. 2006; pp. 1-15. [cited by applicant]
Smith; Lightweight Directory Access Protocol (LDAP): String Representation of Search Filters; IETF Network Working Group; RFC 4515; Jun. 2006; pp. 1-12. [cited by applicant]
Wildi; Java iSCSi Initiator; Master Thesis; Department of Computer and Information Science, University of Konstanz; Feb. 2007; 60 pgs. [cited by applicant]
Xin, et al.; Evaluation of Distributed Recovery in Large-Scale Storage Systems; 13th IEEE International Symposium on High Performance Distributed Computing; Jun. 2004; pp. 172-181. [cited by applicant]
Zeilenga; Lightweight Directory Access Protocol (LDAP): Directory Information Models; IETF Network Working Group; RFC 4512; Jun. 2006; pp. 1-49. [cited by applicant]
Zeilenga; Lightweight Directory Access Protocol (LDAP): Internationalized String Preparation; IETF Network Working Group; RFC 4518; Jun. 2006; pp. 1-14. [cited by applicant]
Zeilenga; Lightweight Directory Access Protocol (LDAP): String Representation of Distinguished Names; IETF Network Working Group; RFC 4514; Jun. 2006; pp. 1-15. [cited by applicant]
Zeilenga; Lightweight Directory Access Protocol (LDAP): Technical Specification Road Map; IETF Network Working Group; RFC 4510; Jun. 2006; pp. 1-8. [cited by applicant]