DISTRIBUTED STORAGE NETWORK DATA REVISION CONTROL
Multiple revisions of an encoded data slice are generated, with each revision having the same slice name. Each of the data slices represents the same original data portion, but each is encoded so that no single data slice can be used to reconstruct the original data portion. Appropriate revision numbers are associated with each encoded data slice, and the encoded data slices and associated revision numbers are transmitted for storage in selected storage units of a distributed storage network. If write confirmations are received from at least a write threshold number of storage units, a commit command is transmitted so that the most recently written data slices will be available for access. After a commit command is issued, a current directory used to access the encoded data slices can be sliced, encoded, and stored in the same way as the data slices.
1 . A method for execution by a computing device that includes a computing core, the method comprising:
determining a first revision number regarding a version of a first data segment, wherein the first data segment is encoded using an error coding dispersal storage function to produce a first set of encoded data slices;
associating the first revision number to each encoded data slice of the first set of encoded data slices to produce a first set of appended encoded data slices;
transmitting, by the computing device via an output interface, write commands regarding the first set of appended encoded data slices to storage units of a distributed storage network (DSN), wherein the write commands include the first set of appended encoded data slices for storage in the storage units;
receiving write confirmation messages from at least some of the storage units;
verifying the first revision number within the write confirmation messages;
when a write threshold number of write confirmation messages have been received and the first revision number has been verified within each of the write threshold number of write confirmation messages, sending write commit messages to the storage units; and
storing a current directory used to access the encoded data slices.
2 . The method of claim 1 , wherein storing the current directory used to access the encoded data slices includes slicing the current directory.
3 . The method of claim 1 , wherein storing the current directory used to access the encoded data slices includes encoding the current directory using an error coding dispersal storage function.
4 . The method of claim 1 , wherein the first revision number is appended to each encoded data slice of the first set of encoded data slices.
5 . The method of claim 1 further comprising:
determining whether write commit responses have been received from at least some of the storage units, wherein a write commit response indicates that a storage unit has made a corresponding encoded data slice visible.
6 . The method of claim 1 further comprising:
when the write confirmations for the at least the write threshold number of each of the first set of appended encoded data slices have not been received, retransmitting at least some of the write commands to different storage units.
7 . The method of claim 1 , further comprising:
determining the first revision numbers based on at least one of a timestamp, a random number, a user vault identifier, a user identifier, a data object identifier, a hash of the first data segment, and a hash of a data segment identifier.
8 . A distributed storage computing device comprising:
an interface;
memory; and
a processing system, including a processor and operably coupled to the interface and to the memory, wherein the processing system is operable to perform operations including:
determining a first revision number regarding a version of a first data segment, wherein the first data segment is encoded using an error coding dispersal storage function to produce a first set of encoded data slices;
associating the first revision number to each encoded data slice of the first set of encoded data slices to produce a first set of appended encoded data slices;
transmitting, via an output interface, write commands regarding the first set of appended encoded data slices to storage units of a distributed storage network (DSN), wherein the write commands include the first set of appended encoded data slices for storage in the storage units;
receiving write confirmation messages from at least some of the storage units;
verifying the first revision number within the write confirmation messages;
when a write threshold number of write confirmation messages have been received and the first revision number has been verified within each of the write threshold number of write confirmation messages, sending write commit messages to the storage units; and
storing a current directory used to access the encoded data slices.
9 . The distributed storage computing device of claim 8 , wherein storing the current directory used to access the encoded data slices includes slicing the current directory.
10 . The distributed storage computing device of claim 8 , wherein storing the current directory used to access the encoded data slices includes encoding the current directory using an error coding dispersal storage function.
11 . The distributed storage computing device of claim 8 , wherein the first revision number is appended to each encoded data slice of the first set of encoded data slices.
12 . The distributed storage computing device of claim 8 , wherein the operations further include:
determining whether write commit responses have been received from at least some of the storage units, wherein a write commit response indicates that a storage unit has made a corresponding encoded data slice visible.
13 . The distributed storage computing device of claim 8 , wherein the operations further include:
when the write confirmations for the at least the write threshold number of each of the first set of appended encoded data slices have not been received, retransmitting at least some of the write commands to different storage units.
14 . The distributed storage computing device of claim 8 , wherein the operations further include:
determining the first revision numbers based on at least one of a timestamp, a random number, a user vault identifier, a user identifier, a data object identifier, a hash of the first data segment, and a hash of a data segment identifier.
15 . A computer readable storage medium comprises:
at least one memory section that stores operational instructions that, when executed by a processing system of a dispersed storage and task (DST) execution unit that includes a hardware processor and a memory, causes the processing system to perform operations including:
determining a first revision number regarding a version of a first data segment, wherein the first data segment is encoded using an error coding dispersal storage function to produce a first set of encoded data slices;
associating the first revision number to each encoded data slice of the first set of encoded data slices to produce a first set of appended encoded data slices;
transmitting, via an output interface, write commands regarding the first set of appended encoded data slices to storage units of a distributed storage network (DSN), wherein the write commands include the first set of appended encoded data slices for storage in the storage units;
receiving write confirmation messages from at least some of the storage units;
verifying the first revision number within the write confirmation messages;
when a write threshold number of write confirmation messages have been received and the first revision number has been verified within each of the write threshold number of write confirmation messages, sending write commit messages to the storage units; and
storing a current directory used to access the encoded data slices.
16 . The computer readable storage medium of claim 15 , wherein storing the current directory used to access the encoded data slices includes slicing the current directory.
17 . The computer readable storage medium of claim 15 , wherein storing the current directory used to access the encoded data slices includes encoding the current directory using an error coding dispersal storage function.
18 . The computer readable storage medium of claim 15 , wherein the first revision number is appended to each encoded data slice of the first set of encoded data slices.
19 . The computer readable storage medium of claim 15 , wherein the operations further include:
determining whether write commit responses have been received from at least some of the storage units, wherein a write commit response indicates that a storage unit has made a corresponding encoded data slice visible.
20 . The computer readable storage medium of claim 15 , wherein the operations further include:
when the write confirmations for the at least the write threshold number of each of the first set of appended encoded data slices have not been received, retransmitting at least some of the write commands to different storage units.