From 3846394e7ad0a85a0eee3346444befa81f4425af Mon Sep 17 00:00:00 2001 From: Miklos Szeredi Date: Thu, 16 Jul 2009 11:07:31 +0000 Subject: * 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 --- include/fuse_kernel.h | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'include/fuse_kernel.h') 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 -- cgit v1.2.3