## |
Packet Name |
1.2 |
1.4 |
2.6.30 |
Todo |
Status |
Dissected results |
1 |
existed |
expired |
expired |
None |
Done |
||
2 |
existed |
expired |
expired |
None |
Done |
||
3 |
existed |
updated |
same as 1.4 |
commit fb4b067b980166f7f39d86a4fc71b066b039bba6 |
Done |
||
4 |
existed |
updated |
same as 1.4 |
commit 6e85b0cbc5c47d7148f706f4dedf88b500f8e0ab |
Done |
||
5 |
existed |
same as 1.2 |
same as 1.2 |
commit c5221b26bf83815476264e6554c408a181958924 |
Done |
||
6 |
existed |
same as 1.2 |
same as 1.2 |
commit c0f7d19bfe510dbd9438e2c4e24e7ccde189d8c5 |
Done |
||
7 |
existed |
same as 1.2 |
same as 1.2 |
commit 1342071d31b5c17790a109c5373bc5b38f9660c0 |
Done |
||
8 |
existed |
same as 1.2 |
same as 1.2 |
commit b1970242f30db3d3581415848dd9fa278506ad76 |
Done |
||
9 |
existed |
same as 1.2 |
same as 1.2 |
None |
Done |
||
10 |
existed |
same as 1.2 |
same as 1.2 |
None |
Done |
||
11 |
existed |
same as 1.2 |
same as 1.2 |
None |
Done |
||
12 |
existed |
same as 1.2 |
same as 1.2 |
None |
Done |
||
13 |
existed |
same as 1.2 |
same as 1.2 |
None |
Done |
||
14 |
existed |
same as 1.2 |
same as 1.2 |
None |
Done |
||
15 |
existed |
same as 1.2 |
same as 1.2 |
None |
Done |
||
16 |
existed |
same as 1.2 |
same as 1.2 |
None |
Done |
||
17 |
existed |
same as 1.2 |
same as 1.2 |
None |
Done |
||
18 |
existed |
same as 1.2 |
same as 1.2 |
None |
Done |
||
19 |
existed |
same as 1.2 |
same as 1.2 |
None |
Done |
||
20 |
existed |
same as 1.2 |
same as 1.2 |
None |
Done |
||
21 |
existed |
same as 1.2 |
same as 1.2 |
None |
Done |
Packets layout
dlm_vote_msg
- ocfs2-1.2
#define OCFS2_MESSAGE_TYPE_VOTE (0x1) #define OCFS2_MESSAGE_TYPE_RESPONSE (0x2) struct ocfs2_msg_hdr { __be32 h_response_id; /* used to lookup message handle on sending * node. */ __be32 h_request; __be64 h_blkno; __be32 h_generation; __be32 h_node_num; /* node sending this particular message. */ }; /* OCFS2_MAX_FILENAME_LEN is 255 characters, but we want to align this * for the network. */ #define OCFS2_VOTE_FILENAME_LEN 256 struct ocfs2_vote_msg { struct ocfs2_msg_hdr v_hdr; union { __be32 v_generic1; __be32 v_orphaned_slot; /* Used during delete votes */ __be32 v_nlink; /* Used during unlink votes */ } md1; /* Message type dependant 1 */ __be32 v_unlink_namelen; __be64 v_unlink_parent; u8 v_unlink_dirent[OCFS2_VOTE_FILENAME_LEN]; };
dlm_response_msg
- ocfs2-1.2
#define OCFS2_MESSAGE_TYPE_VOTE (0x1) #define OCFS2_MESSAGE_TYPE_RESPONSE (0x2) struct ocfs2_msg_hdr { __be32 h_response_id; /* used to lookup message handle on sending * node. */ __be32 h_request; __be64 h_blkno; __be32 h_generation; __be32 h_node_num; /* node sending this particular message. */ }; /* Responses are given these values to maintain backwards * compatibility with older ocfs2 versions */ #define OCFS2_RESPONSE_OK (0) #define OCFS2_RESPONSE_BUSY (-16) #define OCFS2_RESPONSE_BAD_MSG (-22) struct ocfs2_response_msg { struct ocfs2_msg_hdr r_hdr; __be32 r_response; __be32 r_orphaned_slot; };
dlm_query_join_response
- ocfs-1.2
enum dlm_query_join_response { JOIN_DISALLOW = 0, JOIN_OK, JOIN_OK_NO_MAP, };
- ocfs2-1.4 and 2.6.30
enum dlm_query_join_response_code { JOIN_DISALLOW = 0, JOIN_OK, JOIN_OK_NO_MAP, JOIN_PROTOCOL_MISMATCH, }; struct dlm_query_join_packet { u8 code; /* Response code. dlm_minor and fs_minor are only valid if this is JOIN_OK */ u8 dlm_minor; /* The minor version of the protocol the dlm is speaking. */ u8 fs_minor; /* The minor version of the protocol the filesystem is speaking. */ u8 reserved; }; union dlm_query_join_response { u32 intval; struct dlm_query_join_packet packet; };
dlm_query_join_request
- ocfs2-1.2
#define BITS_PER_BYTE 8 #define BITS_TO_BYTES(bits) \ (((bits)+BITS_PER_BYTE-1)/BITS_PER_BYTE) struct dlm_query_join_request { u8 node_idx; u8 pad1[2]; u8 name_len; u8 domain[O2NM_MAX_NAME_LEN]; u8 node_map[BITS_TO_BYTES(O2NM_MAX_NODES)]; };
- ocfs2-1.4 and 2.6.30
#define BITS_PER_BYTE 8 #define BITS_TO_BYTES(bits) (((bits)+BITS_PER_BYTE-1)/BITS_PER_BYTE) struct dlm_query_join_request { u8 node_idx; u8 pad1[2]; u8 name_len; struct dlm_protocol_version dlm_proto; struct dlm_protocol_version fs_proto; u8 domain[O2NM_MAX_NAME_LEN]; u8 node_map[BITS_TO_BYTES(O2NM_MAX_NODES)]; };
dlm_deref_lockres
- ocfs2-1.2, ocfs2-1.4 and 2.6.30
struct dlm_deref_lockres { u32 pad1; u16 pad2; u8 node_idx; u8 namelen; u8 name[O2NM_MAX_NAME_LEN]; };
dlm_master_requery
- ocfs2-1.2, ocfs2-1.4 and 2.6.30
struct dlm_master_requery { u8 pad1; u8 pad2; u8 node_idx; u8 namelen; __be32 pad3; u8 name[O2NM_MAX_NAME_LEN]; };
dlm_migrate_request
- ocfs2-1.2, ocfs2-1.4 and 2.6.30
struct dlm_migrate_request { u8 master; u8 new_master; u8 namelen; u8 pad1; __be32 pad2; u8 name[O2NM_MAX_NAME_LEN]; };
dlm_migratable_lockres
- ocfs2-1.2, ocfs2-1.4 and 2.6.30
struct dlm_migratable_lock { __be64 cookie; /* these 3 are just padding for the in-memory structure, but * list and flags are actually used when sent over the wire */ __be16 pad1; u8 list; // 0=granted, 1=converting, 2=blocked u8 flags; s8 type; s8 convert_type; s8 highest_blocked; u8 node; }; // 16 bytes #define DLM_LOCKID_NAME_MAX 32 #define DLM_LVB_LEN 64 /* * We would like to get one whole lockres into a single network * message whenever possible. Generally speaking, there will be * at most one dlm_lock on a lockres for each node in the cluster, * plus (infrequently) any additional locks coming in from userdlm. * * struct _dlm_lockres_page * { * dlm_migratable_lockres mres; * dlm_migratable_lock ml[DLM_MAX_MIGRATABLE_LOCKS]; * u8 pad[DLM_MIG_LOCKRES_RESERVED]; * }; * * from ../cluster/tcp.h * NET_MAX_PAYLOAD_BYTES (4096 - sizeof(net_msg)) * (roughly 4080 bytes) * and sizeof(dlm_migratable_lockres) = 112 bytes * and sizeof(dlm_migratable_lock) = 16 bytes * * Choosing DLM_MAX_MIGRATABLE_LOCKS=240 and * DLM_MIG_LOCKRES_RESERVED=128 means we have this: * * (DLM_MAX_MIGRATABLE_LOCKS * sizeof(dlm_migratable_lock)) + * sizeof(dlm_migratable_lockres) + DLM_MIG_LOCKRES_RESERVED = * NET_MAX_PAYLOAD_BYTES * (240 * 16) + 112 + 128 = 4080 * * So a lockres would need more than 240 locks before it would * use more than one network packet to recover. Not too bad. */ #define DLM_MAX_MIGRATABLE_LOCKS 240 struct dlm_migratable_lockres { u8 master; u8 lockname_len; u8 num_locks; // locks sent in this structure u8 flags; __be32 total_locks; // locks to be sent for this migration cookie __be64 mig_cookie; // cookie for this lockres migration // or zero if not needed // 16 bytes u8 lockname[DLM_LOCKID_NAME_MAX]; // 48 bytes u8 lvb[DLM_LVB_LEN]; // 112 bytes struct dlm_migratable_lock ml[0]; // 16 bytes each, begins at byte 112 };
dlm_master_request
- ocfs2-1.2, ocfs2-1.4 and 2.6.30
struct dlm_master_request { u8 node_idx; u8 namelen; __be16 pad1; __be32 flags; u8 name[O2NM_MAX_NAME_LEN]; };
dlm_assert_master
- ocfs2-1.2, ocfs2-1.4 and 2.6.30
#define DLM_ASSERT_RESPONSE_REASSERT 0x00000001 #define DLM_ASSERT_RESPONSE_MASTERY_REF 0x00000002 #define DLM_ASSERT_MASTER_MLE_CLEANUP 0x00000001 #define DLM_ASSERT_MASTER_REQUERY 0x00000002 #define DLM_ASSERT_MASTER_FINISH_MIGRATION 0x00000004 struct dlm_assert_master { u8 node_idx; u8 namelen; __be16 pad1; __be32 flags; u8 name[O2NM_MAX_NAME_LEN]; };
dlm_convert_lock
- ocfs2-1.2, ocfs2-1.4 and 2.6.30
struct dlm_convert_lock { __be64 cookie; __be32 flags; u8 pad1; u8 node_idx; s8 requested_type; u8 namelen; u8 name[O2NM_MAX_NAME_LEN]; s8 lvb[0]; };
dlm_proxy_ast
- ocfs2-1.2, ocfs2-1.4 and 2.6.30
struct dlm_proxy_ast { __be64 cookie; __be32 flags; u8 node_idx; u8 type; u8 blocked_type; u8 namelen; u8 name[O2NM_MAX_NAME_LEN]; s8 lvb[0]; };
dlm_unlock_lock
- ocfs2-1.2, ocfs2-1.4 and 2.6.30
struct dlm_unlock_lock { __be64 cookie; __be32 flags; __be16 pad1; u8 node_idx; u8 namelen; u8 name[O2NM_MAX_NAME_LEN]; s8 lvb[0]; };
dlm_assert_joined
- ocfs2-1.2, ocfs2-1.4 and 2.6.30
struct dlm_assert_joined { u8 node_idx; u8 pad1[2]; u8 name_len; u8 domain[O2NM_MAX_NAME_LEN]; };
dlm_cancel_join
- ocfs2-1.2, ocfs2-1.4 and 2.6.30
struct dlm_cancel_join { u8 node_idx; u8 pad1[2]; u8 name_len; u8 domain[O2NM_MAX_NAME_LEN]; };
dlm_exit_domain
- ocfs2-1.2, ocfs2-1.4 and 2.6.30
struct dlm_exit_domain { u8 node_idx; u8 pad1[3]; };
dlm_lock_request
- ocfs2-1.2, ocfs2-1.4 and 2.6.30
struct dlm_lock_request { u8 node_idx; u8 dead_node; __be16 pad1; __be32 pad2; };
dissected_lock_request
- ocfs2-1.2, ocfs2-1.4 and 2.6.30
Magic: Request (0xfa55) Len: 8 Type: Lock Request (515) Sys Status: 0 Status: 0 Key: 0x2b592523 Num: 62 Payload: 0002000000000000 Node Index: 0 Dead Node: 2
dlm_reco_data_done
- ocfs2-1.2, ocfs2-1.4 and 2.6.30
struct dlm_reco_data_done { u8 node_idx; u8 dead_node; __be16 pad1; __be32 pad2; /* unused for now */ /* eventually we can use this to attempt * lvb recovery based on each node's info */ u8 reco_lvb[DLM_LVB_LEN]; };
dlm_begin_reco
- ocfs2-1.2, ocfs2-1.4 and 2.6.30
struct dlm_begin_reco { u8 node_idx; u8 dead_node; __be16 pad1; __be32 pad2; };
dlm_finalize_reco
- ocfs2-1.2, ocfs2-1.4 and 2.6.30
struct dlm_finalize_reco { u8 node_idx; u8 dead_node; u8 flags; u8 pad1; __be32 pad2; };
dlm_create_lock
- ocfs2-1.2, ocfs2-1.4 and 2.6.30
struct dlm_create_lock { __be64 cookie; __be32 flags; u8 pad1; u8 node_idx; s8 requested_type; u8 namelen; u8 name[O2NM_MAX_NAME_LEN]; };
dissected_vote_msg
*ocfs2-1.2 only
Magic: Request (0xfa55) Len: 296 Type: FS Vote (1) Sys Status: 0 Status: 0 Key: 0x2ee4b1b1 Num: 19115971 Payload1: 000018390000000200000000000B5480956C43F200000002 Payload2: 000000000000000E000000000000D0876376757472616365 Payload3: 2E6C6F672E30000000000000000000000000000000000000 Payload4: 000000000000000000000000000000000000000000000000 Payload5: 000000000000000000000000000000000000000000000000 Payload6: 000000000000000000000000000000000000000000000000
dissected_fs_response
- ocfs2-1.2 only
Magic: Request (0xfa55) Len: 32 Type: FS Response (2) Sys Status: 0 Status: 0 Key: 0x2ee4b1b1 Num: 139018356 Payload1: 000018390000000000000000000B5480956C43F200000001 Payload2: 0000000000000000
dissected_query_join_response
- ocfs2-1.2
Magic: Response (0xfa56) Len: 0 Type: Query Join (510) Pad: 0x0000 Sys Status: 0 Status: 1 Key: 0x666c6172 Num: 0
- ocfs2-1.4 and 2.6.30
Magic: Response (0xfa56) Len: 0 Type: Query Join (510) Pad: 0x0000 Sys Status: 0 Status: 16777216 Key: 0x666c6172 Num: 0
dissected_query_join_request
- ocfs2-1.2
Magic: Request (0xfa55) Len: 100 Type: Query Join (510) Sys Status: 0 Status: 0 Key: 0x666c6172 Num: 0 Payload: 010000204638443537463936413141323441334339423542... Node Index: 1 Domain Namelen: 32 Domain Name: F8D57F96A1A24A3C9B5B19FEBE96895C
- ocfs2-1.4 and 2.6.30
Magic: Request (0xfa55) Len: 104 Type: Query Join (510) Sys Status: 0 Status: 0 Key: 0x666c6172 Num: 0 Payload1: 070000200100010041383938443037334636323434453945 Payload2: 424542303537423446343745463631410000000000000000 Payload3: 000000000000000000000000000000000000000000000000 Payload4: C00000000000000000000000000000000000000000000000 Payload5: 0000000000000000 Node Index: 7 Domain Namelen: 32 DLM Protocol: 1.0 FS Protocol: 1.0 Domain Name: A898D073F6244E9EBEB057B4F47EF61A Node Map: 0000001100000000000000000000000000000000000000000000000000000000 Node Map: 0000000000000000000000000000000000000000000000000000000000000000 Node Map: 0000000000000000000000000000000000000000000000000000000000000000 Node Map: 0000000000000000000000000000000000000000000000000000000000000000
dissected_deref_lockres
- ocfs2-1.2, ocfs2-1.4 and 2.6.30
Magic: Request (0xfa55) Len: 72 Type: Deref Lockres (507) Sys Status: 0 Status: 0 Key: 0x74e320eb Num: 0 Payload1: 000000000000071F4D303030303030303030303030303030 Payload2: 303030303032346464303166313635000000000000000000 Payload3: 000000000000000000000000000000000000000000000000 Node Index: 7 Namelen: 31 Name: M0000000000000000000024dd01f165
dissected_master_requery
- ocfs2-1.2, ocfs2-1.4 and 2.6.30
Magic: Request (0xfa55) Len: 72 Type: Master Requery (514) Sys Status: 0 Status: 0 Key: 0x74e320eb Num: 0 Payload1: 0000060900000000245245434F5645525900000000000000 Payload2: 000000000000000000000000000000000000000000000000 Payload3: 000000000000000000000000000000000000000000000000 Node Index: 6 Namelen: 9 Name: $RECOVERY
dissected_migratable_lockres
- ocfs2-1.2, ocfs2-1.4 and 2.6.30
Magic: Request (0xfa55) Len: 144 Type: Migrate Lockres (509) Sys Status: 0 Status: 0 Key: 0x74e320eb Num: 0 Payload1: 031F02060000000200000000000000004F30303030303030 Payload2: 303030303030303030313761303039303030303030303000 Payload3: 000000000000000000000000000000000000000000000000 Payload4: 000000000000000000000000000000000000000000000000 Payload5: 00000000000000000000000000000000060000000000001B Payload6: 0000000003FFFF0607000000000007CD0000000003FFFF07 Master: 3 Lockname Length: 31 Lock Num: 2 Migres Flags: 0x06 Total Locks: 2 Migres Cookie: 0x0000000000000000 Lockname: O000000000000000017a00900000000 LVB1: 303030303030303030313761303039303030303030303000 LVB2: 000000000000000000000000000000000000000000000000 LVB3: 00000000000000000000000000000000 Locks: 0, 0x0000000000000000, 0, 0x00, 0, 0, 0 Locks: 27, 0x0000000000000000, 0, 0x00, 0, 0, 0
dissected_migrate_request
- ocfs2-1.2, ocfs2-1.4 and 2.6.30
Magic: Request (0xfa55) Len: 72 Type: Migrate Request (508) Sys Status: 0 Status: 0 Key: 0x74e320eb Num: 0 Payload1: 03061F00000000004F303030303030303030303030303030 Payload2: 303137613030393030303030303030000000000000000000 Payload3: 000000000000000000000000000000000000000000000000 Master: 3 New Master: 6 Namelen: 31 Name: O000000000000000017a00900000000
dissected_master_request
- ocfs2-1.2, ocfs2-1.4 and 2.6.30
Magic: Request (0xfa55) Len: 72 Type: Master Request (500) Sys Status: 0 Status: 0 Key: 0x74e320eb Num: 0 Payload1: 071F00000000000053303030303030303030303030303030 Payload2: 303030303030323030303030303030000000000000000000 Payload3: 000000000000000000000000000000000000000000000000 Node Index: 7 Namelen: 31 Name: S000000000000000000000200000000
dissected_assert_master
- ocfs2-1.2, ocfs2-1.4 and 2.6.30
Magic: Request (0xfa55) Len: 72 Type: Assert Master (502) Sys Status: 0 Status: 0 Key: 0x74e320eb Num: 0 Payload1: 061F00000000000153303030303030303030303030303030 Payload2: 303030303030323030303030303030000000000000000000 Payload3: 000000000000000000000000000000000000000000000000 Node Index: 6 Namelen: 31 Assert Master Flags: cleanup (0x00000001) Name: S000000000000000000000200000000
dissected_convert_lock
- ocfs2-1.2, ocfs2-1.4 and 2.6.30
Magic: Request (0xfa55) Len: 80 Type: Convert Lock (504) Sys Status: 0 Status: 0 Key: 0x74e320eb Num: 0 Payload1: 07000000000007C6000004000007001F5330303030303030 Payload2: 303030303030303030303030303032303030303030303000 Payload3: 000000000000000000000000000000000000000000000000 Payload4: 0000000000000000 Cookie: 0x07000000000007c6 (7:1990) Flags: 0x00000400: 0000 0000 0000 0000 0000 0100 0000 0000 = convert Node Index: 7 Requested Type: NL: No lock (0) Namelen: 31 Name: S000000000000000000000200000000
dissected_proxy_ast
- ocfs2-1.2, ocfs2-1.4 and 2.6.30
Magic: Request (0xfa55) Len: 80 Type: Proxy AST (505) Sys Status: 0 Status: 0 Key: 0x74e320eb Num: 0 Payload1: 07000000000007C6000000000600001F5330303030303030 Payload2: 303030303030303030303030303032303030303030303000 Payload3: 000000000000000000000000000000000000000000000000 Payload4: 0000000000000000 Cookie: 0x07000000000007c6 (7:1990) Flags: 0x00000000: 0000 0000 0000 0000 0000 0000 0000 0000 = Node Index: 6 AST Type: AST (0) Blocked Locktype: NL: No lock (0) Namelen: 31 Name: S000000000000000000000200000000
dissected_unlock_lock
- ocfs2-1.2, ocfs2-1.4 and 2.6.30
Magic: Request (0xfa55) Len: 80 Type: Unlock Lock (506) Sys Status: 0 Status: 0 Key: 0x74e320eb Num: 0 Payload1: 0300000000000001000000000000031F5330303030303030 Payload2: 303030303030303030303030303032303030303030303000 Payload3: 000000000000000000000000000000000000000000000000 Payload4: 0000000000000000 Cookie: 0x0300000000000001 (3:1) Flags: 0x00000000: 0000 0000 0000 0000 0000 0000 0000 0000 = Node Index: 3 Namelen: 31 Name: S000000000000000000000200000000
dissected_assert_join
- ocfs2-1.2, ocfs2-1.4 and 2.6.30
Magic: Request (0xfa55) Len: 68 Type: Assert Join (511) Sys Status: 0 Status: 0 Key: 0x666c6172 Num: 0 Payload1: 070000204138393844303733463632343445394542454230 Payload2: 353742344634374546363141000000000000000000000000 Payload3: 0000000000000000000000000000000000000000 Node Index: 7 Domain Namelen: 32 Domain Name: A898D073F6244E9EBEB057B4F47EF61A
dissected_cancel_join
- ocfs2-1.2, ocfs2-1.4 and 2.6.30
Magic: Request (0xfa55) Len: 68 Type: Cancel Join (512) Sys Status: 0 Status: 0 Key: 0x666c6172 Num: 0 Payload1: 040000204135324446354644343138423443354338344436 Payload2: 363337443537363745343438000000000000000000000000 Payload3: 0000000000000000000000000000000000000000 Node Index: 4 Domain Namelen: 32 Domain Name: A52DF5FD418B4C5C84D6637D5767E448
dissected_exit_domain
- ocfs2-1.2, ocfs2-1.4 and 2.6.30
Magic: Request (0xfa55) Len: 4 Type: Exit Domain (513) Sys Status: 0 Status: 0 Key: 0x74e320eb Num: 0 Payload1: 03000000 Node Index: 3
dissected_begin_reco
- ocfs2-1.2, ocfs2-1.4 and 2.6.30
Magic: Request (0xfa55) Len: 8 Type: Begin Reovery (517) Sys Status: 0 Status: 0 Key: 0x2b592523 Num: 61 Payload: 0002000000000000 Node Index: 0 Dead Node: 2
dissected_finalize_reco
- ocfs2-1.2, ocfs2-1.4 and 2.6.30
Magic: Request (0xfa55) Len: 8 Type: Finalize Recovery (518) Sys Status: 0 Status: 0 Key: 0x2b592523 Num: 63 Payload1: 0002000000000000 Node Index: 0 Dead Node: 2 Finalize Recovery Flags: Unknown (0x00000000)
dissected_reco_data_done
- ocfs2-1.2, ocfs2-1.4 and 2.6.30
Magic: Request (0xfa55) Len: 72 Type: Recovery Data Done (516) Sys Status: 0 Status: 0 Key: 0x2b592523 Num: 96 Payload1: 010200000000000000000000000000000000000000000000 Payload2: 000000000000000000000000000000000000000000000000 Payload3: 000000000000000000000000000000000000000000000000 Node Index: 1 Dead Node: 2
dissected_create_lock
- ocfs2-1.2, ocfs2-1.4 and 2.6.30
Magic: Request (0xfa55) Len: 80 Type: Create Lock (503) Sys Status: 0 Status: 0 Key: 0x74e320eb Num: 0 Payload1: 07000000000007C6000000000007051F5330303030303030 Payload2: 303030303030303030303030303032303030303030303000 Payload3: 000000000000000000000000000000000000000000000000 Payload4: 0000000000000000 Cookie: 0x07000000000007c6 (7:1990) Flags: 0x00000000: 0000 0000 0000 0000 0000 0000 0000 0000 = Node Index: 7 Requested Type: EX: Exclusive (5) Namelen: 31 Name: S000000000000000000000200000000