IP Library Granted Patent US 9,483,539
Granted Patent B2
US 9,483,539 · App. 13/959,727 · Granted Nov 1, 2016

Updating local data utilizing a distributed storage network

Inventors: Wesley Leggette (Chicago, IL); Greg Dhuse (Chicago, IL); Andrew Baptist (Mt. Pleasant, WI); Ilya Volvovski (Chicago, IL)
Assignee: INTERNATIONAL BUSINESS MACHINES CORPORATION
G06F17/30575G06F3/0689G06F17/30174
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 9,483,539
App. No.
13/959,727
Granted
Nov 1, 2016
Kind
B2
Abstract

A method begins by a device of a distributed storage network (DSN) sending read-if-revised requests to storage units of the DSN with regards to data cached in local memory with one or more local memory revision numbers. The method continues with a storage unit determining whether a revision number of one portion of the data stored by the storage unit is a more recent revision number than the one or more local memory revision numbers. When the revision number is the more recent revision number, the method continues with the storage unit sending a read response that includes the portion of the data to the device. When the revision number is not the more recent revision number, the method continues with the storage unit sending a read response that includes an indication that the data cached in the local memory is a current revision level of the data.

Claims (46)

1. A method comprises:

to determine whether a copy of data that is cached in local memory of a first device of a distributed storage network (DSN) as a plurality of sets of encoded data slices is up to date, sending, by the first device, read-if-revised requests to storage units of the DSN regarding the plurality of sets of encoded data slices wherein a read-if-revised request of the read-if-revised requests includes a name of the data and a local revision number, wherein the data is divided into a plurality of data segments, wherein the plurality of data segments are dispersed storage error encoded into the plurality of sets of encoded data slices, wherein each of the storage units stores a different encoded data slice from each set of at least some of the plurality of sets of encoded data slices to produce a different portion of the data and wherein one of the read-if-revised requests includes slices names for the encoded data slices of the different portion of the data and corresponding local memory revision numbers;

determining, by a storage unit of the storage units, whether each revision number of stored encoded data slices of a corresponding different portion of the data is a more recent revision number than the corresponding local memory revision numbers;

when one of the revision numbers of the stored encoded data slices of the corresponding different portion is the more recent revision number than the corresponding local memory revision number, sending, by the storage unit, a read response that includes the stored encoded data slice of the different portion having the more recent revision number to the first device; and

when the revision numbers of other stored encoded data slices of the different portion are not the more recent revision number than the corresponding other local memory revision numbers, sending, by the storage unit, a read response that includes an indication that, with respect to the other stored encoded data slices, the corresponding other encoded data slices cached in the local memory are a current revision level.

2. The method of claim 1 further comprises:

updating, by the first device, caching of the data in the local memory to include the stored encoded data slice having the more recent revision number.

3. The method of claim 1 , wherein the sending the read-if-revised requests comprises one of:

sending the read-if-revised requests as a query to determine whether the data cached in the local memory is outdated;

sending the read-if-revised requests as a read request to read the data from the storage units; and

sending the read-if-revised requests in response to a scheduled task.

4. The method of claim 1 , wherein the read response that includes the indication comprises one of:

a list of revision numbers corresponding to the stored encoded data slices of a corresponding different portion;

the more recent revision number shared by each of the stored encoded data slices of a corresponding different portion; and

a favorable indication.

5. The method of claim 1 further comprises:

when the revision number of another one of the stored encoded data slices is less than the corresponding another one of the local memory revision numbers, initiating, by the storage unit, rebuilding of the another one of the stored encoded data slices.

6. The method of claim 1 further comprises:

determining, by the first device, a common revision number for the different portions of the data as the corresponding local memory revision numbers; and

determining, by the first device, a local revision number for each of the different portions of the data as the corresponding local memory revision numbers.

7. A dispersed storage network (DSN) comprises:

a first module, when operable within a first device of the DSN, causes the first device to:

to determine whether a copy of data that is cached in local memory of a first device of the DSN as a plurality of sets of encoded data slices is up to date, send read-if-revised requests to storage units of the DSN regarding the plurality of sets of encoded data slices wherein a read-if-revised request of the read-if-revised requests includes a name of the data and a local revision number, wherein the data is divided into a plurality of data segments, wherein the plurality of data segments are dispersed storage error encoded into the plurality of sets of encoded data slices, wherein each of the storage units stores a different encoded data slice from each set of at least some of the plurality of sets of encoded data slices to produce a different portion of the data and wherein one of the read-if-revised requests includes slices names for the encoded data slices of the different portion of the data and corresponding local memory revision numbers;

a second module, when operable within a storage unit, causes the storage unit to:

determine whether each revision number of stored encoded data slices of a corresponding different portion of the data is a more recent revision number than the corresponding local memory revision numbers; and

a third module, when operable within the storage unit, causes the storage unit to:

when one of the revision numbers of the stored encoded data slices of the corresponding different portion is the more recent revision number than the corresponding local memory revision number, sending a read response that includes the stored encoded data slice of the different portion having the more recent revision number the first device; and

when the revision numbers of other stored encoded data slices of the different portion are not the more recent revision number than the corresponding other local memory revision numbers, send a read response that includes an indication that, with respect to other stored encoded data slices, the corresponding other encoded data slices cached in the local memory are a current revision.

8. The DSN of claim 7 further comprises:

a fourth module, when operable within the first device of the DSN, causes the first device to:

update caching of the data in the local memory to include the stored encoded data slice having the more recent revision number.

9. The DSN of claim 7 , wherein the first module functions to send the read-if-revised requests by one of:

sending the read-if-revised requests as a query to determine whether the data cached in the local memory is outdated;

sending the read-if-revised requests as a read request to read the data from the storage units; and

sending the read-if-revised requests in response to a scheduled task.

10. The DSN of claim 7 , wherein the read response that includes the indication comprises one of:

a list of revision numbers corresponding to the stored encoded data slices of a corresponding different portion;

the more recent revision number shared by each of the stored encoded data slices of a corresponding different portion; and

a favorable indication.

11. The DSN of claim 7 further comprises:

the third module further functions to cause the storage unit to:

when the revision number of another one of the stored encoded data slices is less than the corresponding another local memory revision numbers, initiate rebuilding of the another one of the stored encoded data slices.

12. The DSN of claim 7 further comprises:

the first module further functions to:

determine a common revision number for the different portions of the data as the corresponding local memory revision numbers; and

determine a local revision number for each of the different portions of the data as the corresponding local memory revision numbers.

Assignments (4)
CORRECTIVE ASSIGNMENT TO CORRECT THE 9992063 AND 10334045 LISTED IN ERROR PREVIOUSLY RECORDED ON REEL 049556 FRAME 0012. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNOR HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jan 14, 2020
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 052205/0705 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 21, 2019
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 049556/0012 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 6, 2016
From: CLEVERSAFE, INC.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 038629/0015 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 6, 2013
From: LEGGETTE, WESLEY; DHUSE, GREG; BAPTIST, ANDREW; VOLVOVSKI, ILYA
To: CLEVERSAFE, INC.
Reel/Frame 030945/0871 →
Continuity (2)
Provisional Application 61700691 · Sep 13, 2012
Related Publication 20140074786A1 · Mar 13, 2014