diff --git a/src/dll/fuse3/fuse2to3.c b/src/dll/fuse3/fuse2to3.c index b6a0b1f0..e5eee1de 100644 --- a/src/dll/fuse3/fuse2to3.c +++ b/src/dll/fuse3/fuse2to3.c @@ -56,7 +56,7 @@ static inline void fuse2to3_conn3from2(struct fuse3_conn_info *conn3, struct fus conn3->max_write = conn->max_write; conn3->max_read = conn->max_write; conn3->max_readahead = conn->max_readahead; - conn3->capable = conn->capable; + conn3->capable = (conn->capable & ~FSP_FUSE_CAP_READDIR_PLUS) | FUSE_CAP_READDIRPLUS; conn3->want = conn->want; } @@ -321,7 +321,8 @@ static void *fuse2to3_init(struct fuse_conn_info *conn) conn->max_write = conn3.max_write; conn->max_readahead = conn3.max_readahead; - conn->want = conn3.want; + conn->want = 0 != (conn3.want & FUSE_CAP_READDIRPLUS) ? FSP_FUSE_CAP_READDIR_PLUS : 0; + conn->want |= conn3.want & ~FUSE_CAP_READDIRPLUS; return res; } diff --git a/src/dll/fuse3/fuse3.c b/src/dll/fuse3/fuse3.c index 5ddf8d65..e58d39c7 100644 --- a/src/dll/fuse3/fuse3.c +++ b/src/dll/fuse3/fuse3.c @@ -44,7 +44,7 @@ FSP_FUSE_API int fsp_fuse3_main_real(struct fsp_fuse_env *env, result = fsp_fuse3_mount(env, f3, mountpoint); if (-1 == result) goto exit; - mounted = 0; + mounted = 1; result = env->daemonize(foreground); if (-1 == result)