Patent ID: 8626713

Claim:
A method comprising: initiating committing to storage, into a nonvolatile machine-readable medium, of a current consistency snapshot of a plurality of data objects in a redirect-on-write file system; responsive to initiating committing to storage of the current consistency snapshot, creating a buffer header for a data object of the plurality of data objects, wherein the buffer header comprises a first data pointer to point to a first copy of the data object, and wherein the buffer header comprises a commit-in-progress context and an update-in-progress context, wherein the commit-in progress context and the update-in-progress context are initially assigned a same value; assigning a generation value to the current consistency snapshot that is unique relative to generation values of other consistency snapshots, wherein the first copy of the data object has a generation value equal to the generation value of the current consistency snapshot, wherein a second copy of the data object to have a generation value greater than the generation value of the first copy of the data object; receiving, during the committing to storage of the current consistency snapshot, an update to the data object, the update having a generation value greater than the generation value assigned to the current consistency snapshot; responsive to receiving the update to the data object, determining whether the generation value of the update matches at least one of the generation value of the first copy of the data object and the generation value of the second copy of the data object; responsive to the generation value of the update not matching at least one of the generation value of the first copy of the data object and the generation value of the second copy of the data object, assigning the update-in-progress context to a different value; creating the second copy of the data object that is copied from the first copy of the data object, the second copy of the data object having the update-in-progress context; and updating, based on the update, the second copy of the data object, independent of updating the first copy of the data object.