]> Pileus Git - ~andy/linux/blobdiff - fs/ocfs2/cluster/tcp_internal.h
byteorder: move le32_add_cpu & friends from OCFS2 to core
[~andy/linux] / fs / ocfs2 / cluster / tcp_internal.h
index 775c911342f4ddaab9444a6f16559e77f03f4e5b..d25b9af28500d99963623a873e8db3e1298b4683 100644 (file)
  * locking semantics of the file system using the protocol.  It should 
  * be somewhere else, I'm sure, but right now it isn't.
  *
+ * With version 11, we separate out the filesystem locking portion.  The
+ * filesystem now has a major.minor version it negotiates.  Version 11
+ * introduces this negotiation to the o2dlm protocol, and as such the
+ * version here in tcp_internal.h should not need to be bumped for
+ * filesystem locking changes.
+ *
+ * New in version 11
+ *     - Negotiation of filesystem locking in the dlm join.
+ *
+ * New in version 10:
+ *     - Meta/data locks combined
+ *
+ * New in version 9:
+ *     - All votes removed
+ *
+ * New in version 8:
+ *     - Replace delete inode votes with a cluster lock
+ *
+ * New in version 7:
+ *     - DLM join domain includes the live nodemap
+ *
  * New in version 6:
  *     - DLM lockres remote refcount fixes.
  *
@@ -54,7 +75,7 @@
  *     - full 64 bit i_size in the metadata lock lvbs
  *     - introduction of "rw" lock and pushing meta/data locking down
  */
-#define O2NET_PROTOCOL_VERSION 6ULL
+#define O2NET_PROTOCOL_VERSION 11ULL
 struct o2net_handshake {
        __be64  protocol_version;
        __be64  connector_id;
@@ -152,6 +173,8 @@ struct o2net_sock_container {
        struct timeval          sc_tv_func_stop;
        u32                     sc_msg_key;
        u16                     sc_msg_type;
+
+       struct mutex            sc_send_lock;
 };
 
 struct o2net_msg_handler {
@@ -161,6 +184,8 @@ struct o2net_msg_handler {
        u32                     nh_key;
        o2net_msg_handler_func  *nh_func;
        o2net_msg_handler_func  *nh_func_data;
+       o2net_post_msg_handler_func
+                               *nh_post_func;
        struct kref             nh_kref;
        struct list_head        nh_unregister_item;
 };