From 74bfa3850a2568f96dd1d090a9386534c9bb4629 Mon Sep 17 00:00:00 2001 From: Rian Hunter Date: Wed, 1 Jun 2016 23:21:46 -0700 Subject: Support the lack of paths when cache is off Before FUSE 2.9, FUSE had to emulate unlink() if a file was still open via renaming to a hidden file. This was due to the requirement that a valid "path" argument must be submitted for many FUSE operations. FUSE 2.9 introduced the flag_nullpath_ok and flag_nopath flags that allow a FUSE file system to signal to FUSE that the "path" argument may be NULL in certain operations. sshfs doesn't require paths if the cache isn't used so communicate that information to the FUSE layer. --- cache.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'cache.c') diff --git a/cache.c b/cache.c index aeb14ec..34a87ca 100644 --- a/cache.c +++ b/cache.c @@ -523,6 +523,10 @@ static void cache_unity_fill(struct fuse_cache_operations *oper, cache_oper->ftruncate = oper->oper.ftruncate; cache_oper->fgetattr = oper->oper.fgetattr; #endif +#if FUSE_VERSION >= 29 + cache_oper->flag_nullpath_ok = oper->oper.flag_nullpath_ok; + cache_oper->flag_nopath = oper->oper.flag_nopath; +#endif } static void cache_fill(struct fuse_cache_operations *oper, @@ -548,6 +552,10 @@ static void cache_fill(struct fuse_cache_operations *oper, cache_oper->ftruncate = oper->oper.ftruncate ? cache_ftruncate : NULL; cache_oper->fgetattr = oper->oper.fgetattr ? cache_fgetattr : NULL; #endif +#if FUSE_VERSION >= 29 + cache_oper->flag_nullpath_ok = 0; + cache_oper->flag_nopath = 0; +#endif } -- cgit v1.2.3