Multiple computers have access to a shared storage system. The computers
negotiate with each other for access rights (e.g., READ or WRITE) to
regions of the storage system. After negotiating for permission to modify
a location (e.g., a range of addresses) of the shared storage system, a
given computer copies data from the shared storage system into its own
corresponding cache. The given computer granted the permission then
modifies the data in its cache while maintaining a separate journal of
corresponding changes to metadata. The given computer writes the journal
to a dedicated region of the storage system. Thereafter, the given
computer attempts to flush contents of the modified cache to the storage
system. If the given computer crashes while attempting to flush the
modified cache to the shared storage system, a healthy one of the
multiple computers utilizes the journal information in the storage system
to recover metadata.