aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2021-05-13 16:11:03 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2021-05-13 16:11:03 +0000
commit48ea17ee4b4cc770738c7b667c2f545d375dc383 (patch)
tree3e5075efec3f16265f9fe0bdf93d9bb0cdce7107 /lib
parente4c57cf369c96c01f75a39f384704739f3524ad4 (diff)
parent73ddf5dd6ea009d20177f6a2d7b80bdcacba0d10 (diff)
downloadlibfuse-48ea17ee4b4cc770738c7b667c2f545d375dc383.tar.gz
Diffstat (limited to 'lib')
-rw-r--r--lib/fuse_lowlevel.c10
1 files changed, 9 insertions, 1 deletions
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 @@ enum {
FUSE_PASSTHROUGH_API_UNAVAILABLE,
FUSE_PASSTHROUGH_API_V0,
FUSE_PASSTHROUGH_API_V1,
+ FUSE_PASSTHROUGH_API_V2,
FUSE_PASSTHROUGH_API_STABLE,
};
@@ -490,7 +491,14 @@ int fuse_passthrough_enable(fuse_req_t req, unsigned int fd) {
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;