diff options
author | Srinivas Eeda <srinivas.eeda@oracle.com> | 2007-01-29 18:31:35 -0500 |
---|---|---|
committer | Mark Fasheh <mark.fasheh@oracle.com> | 2007-02-07 15:09:14 -0500 |
commit | 1faf289454b9eeb6e463da3eee47f7009668370d (patch) | |
tree | fe77643771a985a20c3782fb2a952cf9c05937a5 /fs/ocfs2/cluster | |
parent | f3f854648de64c4b6f13f6f13113bc9525c621e5 (diff) |
ocfs2_dlm: disallow a domain join if node maps mismatch
There is a small window where a joining node may not see the node(s) that
just died but are still part of the domain. To fix this, we must disallow
join requests if the joining node has a different node map.
A new field node_map is added to dlm_query_join_request to send the current
nodes nodemap along with join request. On the receiving end the nodes that
are part of the cluster verifies if this new node sees all the nodes that
are still part of the cluster. They disallow the join if the maps mismatch.
Signed-off-by: Srinivas Eeda <srinivas.eeda@oracle.com>
Signed-off-by: Mark Fasheh <mark.fasheh@oracle.com>
Diffstat (limited to 'fs/ocfs2/cluster')
-rw-r--r-- | fs/ocfs2/cluster/tcp_internal.h | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/fs/ocfs2/cluster/tcp_internal.h b/fs/ocfs2/cluster/tcp_internal.h index d74040fac343..177927a8f007 100644 --- a/fs/ocfs2/cluster/tcp_internal.h +++ b/fs/ocfs2/cluster/tcp_internal.h | |||
@@ -38,6 +38,9 @@ | |||
38 | * locking semantics of the file system using the protocol. It should | 38 | * locking semantics of the file system using the protocol. It should |
39 | * be somewhere else, I'm sure, but right now it isn't. | 39 | * be somewhere else, I'm sure, but right now it isn't. |
40 | * | 40 | * |
41 | * New in version 7: | ||
42 | * - DLM join domain includes the live nodemap | ||
43 | * | ||
41 | * New in version 6: | 44 | * New in version 6: |
42 | * - DLM lockres remote refcount fixes. | 45 | * - DLM lockres remote refcount fixes. |
43 | * | 46 | * |
@@ -54,7 +57,7 @@ | |||
54 | * - full 64 bit i_size in the metadata lock lvbs | 57 | * - full 64 bit i_size in the metadata lock lvbs |
55 | * - introduction of "rw" lock and pushing meta/data locking down | 58 | * - introduction of "rw" lock and pushing meta/data locking down |
56 | */ | 59 | */ |
57 | #define O2NET_PROTOCOL_VERSION 6ULL | 60 | #define O2NET_PROTOCOL_VERSION 7ULL |
58 | struct o2net_handshake { | 61 | struct o2net_handshake { |
59 | __be64 protocol_version; | 62 | __be64 protocol_version; |
60 | __be64 connector_id; | 63 | __be64 connector_id; |