Patent ID: 7899895

Claim:
A method, comprising: maintaining a plurality of nodes coupled over a network, wherein a first node of the plurality of nodes initially owns a plurality of storage objects accessible via the network; preemptively taking ownership of a selected storage object of the plurality of storage objects by a second node of the plurality of nodes, in response to the first node becoming unavailable, wherein other nodes of the plurality of nodes can request ownership of the selected storage object while the first node is unavailable; subsequent to preemptively taking ownership of a selected storage object of the plurality of storage objects by the second node, preemptively taking ownership of the selected storage object of the plurality of storage objects by a third node of the plurality of nodes, in response to the second node becoming unavailable; and subsequent to preemptively taking ownership of the selected storage object of the plurality of storage objects by the third node, determining that the first node that originally owned the selected storage object has become available after a period of unavailability, and in response to availability of the first node after the period of unavailability, performing: in response to determining that the first node wrote to the selected storage object prior to becoming unavailable in addition to the selected storage object being written to by the second node or the third node during the period when the first node was unavailable, then moving the selected storage object into an error state; in response to determining that the first node wrote to the selected storage object prior to becoming unavailable and the second node and the third node read but did not write to the selected storage object during the period when the first node was unavailable and the first node has a higher ownership validity level than the third node, then returning ownership of the selected storage object to the first node; and in response to determining that the first node did not write to the selected storage object prior to becoming unavailable and the second node or the third node either read or wrote to the selected storage object during the period when the first node was unavailable, then retaining ownership of the selected storage object with the third node.