Snap for 7360053 from 48ea17ee4b4cc770738c7b667c2f545d375dc383 to sc-release

Change-Id: Ic6827bd755db4b8efc45a5f4369c9cae02cec2af
diff --git a/OWNERS b/OWNERS
new file mode 100644
index 0000000..5ee6098
--- /dev/null
+++ b/OWNERS
@@ -0,0 +1 @@
+balsini@google.com
diff --git a/include/fuse_kernel.h b/include/fuse_kernel.h
index 55d8e2c..bd8794e 100644
--- a/include/fuse_kernel.h
+++ b/include/fuse_kernel.h
@@ -836,6 +836,7 @@
 #define FUSE_DEV_IOC_CLONE	      _IOR(229, 0, uint32_t)
 #define FUSE_DEV_IOC_PASSTHROUGH_OPEN_V0 _IOW(229, 1, struct fuse_passthrough_out_v0)
 #define FUSE_DEV_IOC_PASSTHROUGH_OPEN_V1 _IOW(229, 127, struct fuse_passthrough_out_v0)
+#define FUSE_DEV_IOC_PASSTHROUGH_OPEN_V2 _IOW(229, 126, uint32_t)
 
 struct fuse_lseek_in {
 	uint64_t	fh;
diff --git a/lib/fuse_lowlevel.c b/lib/fuse_lowlevel.c
index baa6d2b..a4a4df0 100644
--- a/lib/fuse_lowlevel.c
+++ b/lib/fuse_lowlevel.c
@@ -463,6 +463,7 @@
 	FUSE_PASSTHROUGH_API_UNAVAILABLE,
 	FUSE_PASSTHROUGH_API_V0,
 	FUSE_PASSTHROUGH_API_V1,
+	FUSE_PASSTHROUGH_API_V2,
 	FUSE_PASSTHROUGH_API_STABLE,
 };
 
@@ -490,7 +491,14 @@
 	switch (passthrough_version) {
 	case FUSE_PASSTHROUGH_API_STABLE:
 		/* There is not a stable API yet */
-		passthrough_version = FUSE_PASSTHROUGH_API_V1;
+		passthrough_version = FUSE_PASSTHROUGH_API_V2;
+	case FUSE_PASSTHROUGH_API_V2: {
+		ret = ioctl(req->se->fd, FUSE_DEV_IOC_PASSTHROUGH_OPEN_V2, &fd);
+		if (ret == -1 && errno == ENOTTY)
+			passthrough_version = FUSE_PASSTHROUGH_API_V1;
+		else
+			break;
+	}
 	case FUSE_PASSTHROUGH_API_V1: {
 		struct fuse_passthrough_out_v0 out = {};
 		out.fd = fd;