A method comprising: receiving, at data processing hardware, a stream of data blocks for storage at a first storage location of a distributed storage system and at a second storage location of the distributed storage system, the first storage location associated with a first geographical region and the second storage location associated with a second geographical region different than the first geographical region; synchronously writing, by the data processing hardware, the stream of data blocks to the first storage location and to the second storage location; while synchronously writing the stream of data blocks to the first storage location and to the second storage location, determining, by the data processing hardware, an unrecoverable failure at the second storage location that prohibits further writing of the stream of data blocks to the second storage location; determining, by the data processing hardware, a failure point in the writing of the stream of data blocks, the failure point demarcating data blocks that were successfully written to the second storage location and data blocks that were not successfully written to the second storage location; and synchronously writing, by the data processing hardware, starting at the failure point, the stream of data blocks to the first storage location and to a third storage location of the distributed storage system, the third storage location associated with a third geographical region different than the first geographical region and the second geographical region, further comprising, asynchronously writing, by the data processing hardware, from a beginning point of the stream of data blocks to the failure point, the stream of data blocks to the third storage location. receiving, at data processing hardware, a stream of data blocks for storage at a first storage location of a distributed storage system and at a second storage location of the distributed storage system, the first storage location associated with a first geographical region and the second storage location associated with a second geographical region different than the first geographical region; synchronously writing, by the data processing hardware, the stream of data blocks to the first storage location and to the second storage location; while synchronously writing the stream of data blocks to the first storage location and to the second storage location, determining, by the data processing hardware, an unrecoverable failure at the second storage location that prohibits further writing of the stream of data blocks to the second storage location; determining, by the data processing hardware, a failure point in the writing of the stream of data blocks, the failure point demarcating data blocks that were successfully written to the second storage location and data blocks that were not successfully written to the second storage location; and synchronously writing, by the data processing hardware, starting at the failure point, the stream of data blocks to the first storage location and to a third storage location of the distributed storage system, the third storage location associated with a third geographical region different than the first geographical region and the second geographical region, further comprising, asynchronously writing, by the data processing hardware, from a beginning point of the stream of data blocks to the failure point, the stream of data blocks to the third storage location.