aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorMiklos Szeredi <miklos@szeredi.hu>2009-07-16 11:07:31 +0000
committerMiklos Szeredi <miklos@szeredi.hu>2009-07-16 11:07:31 +0000
commit3846394e7ad0a85a0eee3346444befa81f4425af (patch)
tree2a5fbdf198100bc6d7f92f9dca46ba62cbebad9f /include
parent37a90f29e8609951a18e5190d1fd3659e3aee135 (diff)
downloadandroid_external_fuse-3846394e7ad0a85a0eee3346444befa81f4425af.tar.gz
android_external_fuse-3846394e7ad0a85a0eee3346444befa81f4425af.tar.bz2
android_external_fuse-3846394e7ad0a85a0eee3346444befa81f4425af.zip
* Clarify how the protocol version should be negotiated between
kernel and userspace. Notably libfuse didn't correctly handle the case when the supported major versions didn't match
Diffstat (limited to 'include')
-rw-r--r--include/fuse_kernel.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/include/fuse_kernel.h b/include/fuse_kernel.h
index dac35d8..bd73630 100644
--- a/include/fuse_kernel.h
+++ b/include/fuse_kernel.h
@@ -67,6 +67,26 @@
#define __u32 uint32_t
#define __s32 int32_t
+/*
+ * Version negotiation:
+ *
+ * Both the kernel and userspace send the version they support in the
+ * INIT request and reply respectively.
+ *
+ * If the major versions match then both shall use the smallest
+ * of the two minor versions for communication.
+ *
+ * If the kernel supports a larger major version, then userspace shall
+ * reply with the major version it supports, ignore the rest of the
+ * INIT message and expect a new INIT message from the kernel with a
+ * matching major version.
+ *
+ * If the library supports a larger major version, then it shall fall
+ * back to the major protocol version sent by the kernel for
+ * communication and reply with that major version (and an arbitrary
+ * supported minor version).
+ */
+
/** Version number of this interface */
#define FUSE_KERNEL_VERSION 7