From 2b019b84b01678e3a54d9dd2219ff5d68fb1a23c Mon Sep 17 00:00:00 2001 From: Antonio SJ Musumeci Date: Mon, 20 May 2019 00:18:56 -0400 Subject: [PATCH] ensure async_aio is enabled if capable --- libfuse/include/fuse_common.h | 1 + libfuse/lib/fuse_lowlevel.c | 4 ++++ src/fuse_init.cpp | 1 + 3 files changed, 6 insertions(+) diff --git a/libfuse/include/fuse_common.h b/libfuse/include/fuse_common.h index c8c0a9ad..90635bca 100644 --- a/libfuse/include/fuse_common.h +++ b/libfuse/include/fuse_common.h @@ -112,6 +112,7 @@ struct fuse_file_info { #define FUSE_CAP_SPLICE_READ (1 << 9) #define FUSE_CAP_FLOCK_LOCKS (1 << 10) #define FUSE_CAP_IOCTL_DIR (1 << 11) +#define FUSE_CAP_ASYNC_DIO (1 << 15) #define FUSE_CAP_POSIX_ACL (1 << 19) diff --git a/libfuse/lib/fuse_lowlevel.c b/libfuse/lib/fuse_lowlevel.c index 694c9878..c32c28a3 100644 --- a/libfuse/lib/fuse_lowlevel.c +++ b/libfuse/lib/fuse_lowlevel.c @@ -1797,6 +1797,8 @@ static void do_init(fuse_req_t req, fuse_ino_t nodeid, const void *inarg) f->conn.capable |= FUSE_CAP_FLOCK_LOCKS; if (arg->flags & FUSE_POSIX_ACL) f->conn.capable |= FUSE_CAP_POSIX_ACL; + if (arg->flags & FUSE_ASYNC_DIO) + f->conn.capable |= FUSE_CAP_ASYNC_DIO; } else { f->conn.async_read = 0; f->conn.max_readahead = 0; @@ -1865,6 +1867,8 @@ static void do_init(fuse_req_t req, fuse_ino_t nodeid, const void *inarg) outarg.flags |= FUSE_FLOCK_LOCKS; if (f->conn.want & FUSE_CAP_POSIX_ACL) outarg.flags |= FUSE_POSIX_ACL; + if (f->conn.want & FUSE_CAP_ASYNC_DIO) + outarg.flags |= FUSE_ASYNC_DIO; outarg.max_readahead = f->conn.max_readahead; outarg.max_write = f->conn.max_write; if (f->conn.proto_minor >= 13) { diff --git a/src/fuse_init.cpp b/src/fuse_init.cpp index 398aae16..f542e98d 100644 --- a/src/fuse_init.cpp +++ b/src/fuse_init.cpp @@ -42,6 +42,7 @@ namespace FUSE l::want_if_capable(conn_,FUSE_CAP_BIG_WRITES); l::want_if_capable(conn_,FUSE_CAP_DONT_MASK); l::want_if_capable(conn_,FUSE_CAP_IOCTL_DIR); + l::want_if_capable(conn_,FUSE_CAP_ASYNC_DIO); if(Config::get().posix_acl) l::want_if_capable(conn_,FUSE_CAP_POSIX_ACL);