IP Library Granted Patent US 12,625,768
Granted Patent B2
US 12,625,768 · App. 18/823,168 · Granted May 12, 2026

Promoting a previous version to roll back a data object

Inventors: Andrew Baptist (Mt. Pleasant, WI); Wesley Leggette (Chicago, IL); Jason K. Resch (Warwick, RI); Manish Motwani (Chicago, IL); John Quigley (Chicago, IL)
Assignee: Pure Storage, Inc.
G06F11/1076G06F3/0619G06F3/064G06F3/0659G06F3/067H04L67/1097H04L69/22H04L69/26
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,625,768
App. No.
18/823,168
Granted
May 12, 2026
Kind
B2
Abstract

A method for execution by one or more computing devices of a storage network includes determining an error condition associated with storage of a current version of a data object that is stored in a set of storage units of the storage network and is stored as a previous version of the data object. The method further includes sending a rollback transaction request message to at least some storage units of the set of storage units, where the at least some storage units are associated with the error condition, and where the rollback transaction request message instructs the at least some storage units to promote the previous version to be a new current version of the data object such that the new current version of the data object is accessible in the storage network.

Claims (34)

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

error encoding a data object into a plurality of sets of encoded data slices;

determining an error condition associated with storage of a current version of the data object that is stored in a set of storage units of the storage network and is stored as a previous version of the data object, wherein the error condition is associated with one or more encoded data slices of a set of encoded data slices of the plurality of sets of encoded data slices; and

sending a rollback transaction request message to one or more storage units of the set of storage units, wherein the one or more storage units are associated with the error condition, and wherein the rollback transaction request message instructs the one or more storage units to promote the previous version to be a new current version of the data object such that the new current version of the data object is accessible in the storage network.

2 . The method of claim 1 further comprises:

instructing the one or more storage units to delete the current version of the data object.

3 . The method of claim 1 further comprises:

after sending the rollback transaction request message, instructing the one or more storage units to delete the one or more encoded data slices.

4 . The method of claim 1 , wherein the error condition comprises the one or more encoded data slices being associated with a locked encoded data slice.

5 . The method of claim 1 , wherein the error condition comprises one or more slice names associated with at least one encoded data slices of the one or more that are not stored in the set of storage units.

6 . The method of claim 1 , wherein the error condition comprises a transaction error associated with the current version of the data object.

7 . The method of claim 1 further comprises:

updating a slice status table to indicate the set of encoded data slices are associated with a write-lock status, wherein the write-lock status prevents further modification of the plurality of sets of encoded data slices until the error condition is corrected.

8 . The method of claim 1 further comprises:

maintaining storage of the current version of the data object until receiving a command from a computing device of the storage network.

9 . The method of claim 1 , wherein the error condition comprises:

determining, for a write request associated with the data object, that a number of write responses are less than a write threshold number.

10 . A computer readable memory comprises:

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

error encode a data object into a plurality of sets of encoded data slices;

determine an error condition associated with storage of a current version of the data object that is stored in a set of storage units of the storage network and is stored as a previous version of the data object, wherein the error condition is associated with one or more encoded data slices of a set of encoded data slices of the plurality of sets of encoded data slices; and

send a rollback transaction request message to one or more storage units of the set of storage units, wherein the one or more storage units are associated with the error condition, and wherein the rollback transaction request message instructs the one or more storage units to promote the previous version to be a new current version of the data object such that the new current version of the data object is accessible in the storage network.

11 . The computer readable memory of claim 10 , wherein the at least one memory element stores further operational instructions that, when executed by the one or more computing devices, cause the one or more computing devices to instruct the one or more storage units to delete the current version of the data object.

12 . The computer readable memory of claim 10 , wherein the at least one memory element stores further operational instructions that, when executed by the one or more computing devices, cause the one or more computing devices to:

after sending the rollback transaction request message, instruct the one or more storage units to delete the one or more encoded data slices.

13 . The computer readable memory of claim 10 , wherein the at least one memory element stores further operational instructions that, when executed by the one or more computing devices, cause the one or more computing devices to determine the error condition includes the one or more encoded data slices being associated with a locked encoded data slice.

14 . The computer readable memory of claim 10 , wherein the at least one memory element stores further operational instructions that, when executed by the one or more computing devices, cause the one or more computing devices to determine the error condition includes one or more slice names associated with one or more encoded data slices of the one or more encoded data slices that are not stored in the set of storage units.

15 . The computer readable memory of claim 10 , wherein the at least one memory element stores further operational instructions that, when executed by the one or more computing devices, cause the one or more computing devices to determine the error condition includes a transaction error associated with the current version of the data object.

16 . The computer readable memory of claim 10 , wherein the at least one memory element stores further operational instructions that, when executed by the one or more computing devices, cause the one or more computing devices to:

update a slice status table to indicate the set of encoded data slices are associated with a write-lock status, wherein the write-lock status prevents further modification of the plurality of sets of encoded data slices until the error condition is corrected.

17 . The computer readable memory of claim 10 , wherein the at least one memory element stores further operational instructions that, when executed by the one or more computing devices, cause the one or more computing devices to:

maintain storage of the current version of the data object until receiving a command from a computing device of the storage network.

18 . The computer readable memory of claim 10 , wherein the at least one memory element stores further operational instructions that, when executed by the one or more computing devices, cause the one or more computing devices to determine the error condition exists by:

determining, for a write request associated with the data object, that a number of write responses are less than a write threshold number.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 6, 2024
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 068857/0568 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 5, 2024
From: CLEVERSAFE, INC.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 068842/0421 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 4, 2024
From: BAPTIST, ANDREW; LEGGETTE, WESLEY; RESCH, JASON K.; MOTWANI, MANISH; QUIGLEY, JOHN
To: CLEVERSAFE, INC.
Reel/Frame 068485/0808 →
Continuity (10)
Continuation 18216015 · Jun 29, 2023
Continuation 17301783 · Apr 14, 2021
Continuation 16692472 · Nov 22, 2019
Continuation 16138753 · Sep 21, 2018
Continuation 15345309 · Nov 7, 2016
Continuation 14454942 · Aug 8, 2014
Continuation In Part 13080431 · Apr 5, 2011
Continuation 13073948 · Mar 28, 2011
Provisional Application 61328000 · Apr 26, 2010
Related Publication 20240427665A1 · Dec 26, 2024
References Cited (166)
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 6356942B1 · Bengtsson · 2002 [cited by applicant]
US 6356949B1 · Katsandres · 2002 [cited by applicant]
US 6356951B1 · Gentry, Jr. · 2002 [cited by applicant]
US 6366995B1 · Nikolaevich · 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 6463065B1 · Petersen · 2002 [cited by applicant]
US 6512767B1 · Takeda · 2003 [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 6876656B2 · Brewer · 2005 [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 7191284B1 · Gupta et al. · 2007 [cited by applicant]
US 7222133B1 · Raipurkar · 2007 [cited by applicant]
US 7240236B2 · Cutts · 2007 [cited by applicant]
US 7254617B2 · Schuh · 2007 [cited by applicant]
US 7272613B2 · Sim · 2007 [cited by applicant]
US 7308702B1 · Thomsen · 2007 [cited by applicant]
US 7467265B1 · Tawri · 2008 [cited by applicant]
US 7472241B2 · Uchiyama · 2008 [cited by applicant]
US 7546284B1 · Martinez · 2009 [cited by applicant]
US 7634497B2 · Passerini · 2009 [cited by applicant]
US 7636724B2 · de la Torre · 2009 [cited by applicant]
US 7924881B2 · Frank · 2011 [cited by applicant]
US 7962641B1 · Dhuse · 2011 [cited by applicant]
US 8074014B2 · Narayanan · 2011 [cited by applicant]
US 8135926B1 · Glasco · 2012 [cited by applicant]
US 8150805B1 · Tawri · 2012 [cited by applicant]
US 8296386B1 · Micalizzi, Jr. · 2012 [cited by applicant]
US 8625635B2 · Baptist · 2014 [cited by applicant]
US 8649399B2 · Baptist · 2014 [cited by applicant]
US 8676851B1 · Nesbit · 2014 [cited by applicant]
US 9996413B2 · Dhuse · 2018 [cited by applicant]
US 20010021971A1 · Gibson · 2001 [cited by examiner]
US 20010051862A1 · Ishibashi · 2001 [cited by applicant]
US 20020062422A1 · Butterworth · 2002 [cited by applicant]
US 20020114328A1 · Miyamoto · 2002 [cited by applicant]
US 20020124111A1 · Desai et al. · 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 20030051195A1 · Bosa et al. · 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 20040049572A1 · Yamamoto · 2004 [cited by applicant]
US 20040078683A1 · Buia et al. · 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 20050076263A1 · Tomita · 2005 [cited by examiner]
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 20060146852A1 · Munagala · 2006 [cited by applicant]
US 20060155894A1 · Pennington · 2006 [cited by applicant]
US 20060156059A1 · Kitamura · 2006 [cited by applicant]
US 20060224603A1 · Correll, Jr. · 2006 [cited by applicant]
US 20060259587A1 · Ackerman · 2006 [cited by applicant]
US 20060274866A1 · Chang · 2006 [cited by examiner]
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 20070174720A1 · Kubo · 2007 [cited by applicant]
US 20070174729A1 · Kubo · 2007 [cited by applicant]
US 20070214285A1 · Au · 2007 [cited by applicant]
US 20070234110A1 · Soran · 2007 [cited by applicant]
US 20070263618A1 · Ornes et al. · 2007 [cited by applicant]
US 20070283167A1 · Venters, III · 2007 [cited by applicant]
US 20080008183A1 · Takagaki · 2008 [cited by applicant]
US 20080162811A1 · Steinmetz et al. · 2008 [cited by applicant]
US 20080183975A1 · Foster · 2008 [cited by applicant]
US 20080244556A1 · Plante · 2008 [cited by applicant]
US 20080294929A1 · Tune · 2008 [cited by applicant]
US 20090037763A1 · Adhya · 2009 [cited by examiner]
US 20090063696A1 · Wang · 2009 [cited by applicant]
US 20090089577A1 · Shon · 2009 [cited by applicant]
US 20090094251A1 · Gladwin · 2009 [cited by applicant]
US 20090094318A1 · Gladwin · 2009 [cited by applicant]
US 20090248920A1 · Chaudhuri · 2009 [cited by applicant]
US 20100017531A1 · Dhuse · 2010 [cited by applicant]
US 20100023524A1 · Gladwin · 2010 [cited by applicant]
US 20100061651A1 · Mishima · 2010 [cited by examiner]
US 20100191946A1 · Cheston · 2010 [cited by applicant]
US 20100199089A1 · Vysogorets · 2010 [cited by applicant]
US 20100268692A1 · Resch · 2010 [cited by applicant]
US 20110029731A1 · Cilfone · 2011 [cited by applicant]
US 20110055170A1 · Mark · 2011 [cited by applicant]
US 20110055471A1 · Thatcher · 2011 [cited by applicant]
US 20110071988A1 · Resch · 2011 [cited by examiner]
US 20110153875A1 · Khericha · 2011 [cited by applicant]
US 20110167221A1 · Pangal · 2011 [cited by applicant]
US 20110261813A1 · Baptist · 2011 [cited by applicant]
US 20110261839A1 · Baptist et al. · 2011 [cited by applicant]
US 20110264823A1 · Baptist et al. · 2011 [cited by applicant]
US 20110264962A1 · Baptist et al. · 2011 [cited by applicant]
US 20120030371A1 · Baptist et al. · 2012 [cited by applicant]
US 20120047226A1 · Shinomiya · 2012 [cited by applicant]
US 20140075112A1 · Baptist · 2014 [cited by applicant]
US 20140325259A1 · Resch · 2014 [cited by applicant]
US 20180107555A1 · Gladwin · 2018 [cited by applicant]
Chung; An Automatic Data Segmentation Method for 3D Measured Data Points; National Taiwan University; pp. 1-8; 1998. [cited by applicant]
European Patent Office; Extended European Search Report; EP Application No. 11775472.1; Oct. 30, 2015; 6 pgs. [cited by applicant]
Examination Report for EP Application No. 11775472.1 mailed Apr. 11, 2019; 6 pages. [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]
International Search Report and Written Opinion; PCT Application No. PCT/US11/33745; Jun. 28, 2011, 12 pages. [cited by applicant]
International Search Report and Written Opinion; PCT Application No. PCT/US11/33745; Jun. 28, 2011; 12 pagres. [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]