diff options
author | Bernd Schubert <bschubert@ddn.com> | 2024-07-03 19:30:20 +0200 |
---|---|---|
committer | Miklos Szeredi <mszeredi@redhat.com> | 2024-08-29 11:43:01 +0200 |
commit | 3ab394b363c5fd14b231e335fb6746ddfb93aaaa (patch) | |
tree | add58b7bdcd516e9988e17518590cf528a046b57 /fs/fuse | |
parent | f7790d67785302b3116bbbfda62a5a44524601a3 (diff) | |
download | linux-3ab394b363c5fd14b231e335fb6746ddfb93aaaa.tar.gz linux-3ab394b363c5fd14b231e335fb6746ddfb93aaaa.tar.bz2 linux-3ab394b363c5fd14b231e335fb6746ddfb93aaaa.zip |
fuse: disable the combination of passthrough and writeback cache
Current design and handling of passthrough is without fuse
caching and with that FUSE_WRITEBACK_CACHE is conflicting.
Fixes: 7dc4e97a4f9a ("fuse: introduce FUSE_PASSTHROUGH capability")
Cc: stable@kernel.org # v6.9
Signed-off-by: Bernd Schubert <bschubert@ddn.com>
Acked-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Josef Bacik <josef@toxicpanda.com>
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
Diffstat (limited to 'fs/fuse')
-rw-r--r-- | fs/fuse/inode.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c index d8ab4e93916f..bebd89002328 100644 --- a/fs/fuse/inode.c +++ b/fs/fuse/inode.c @@ -1332,11 +1332,16 @@ static void process_init_reply(struct fuse_mount *fm, struct fuse_args *args, * on a stacked fs (e.g. overlayfs) themselves and with * max_stack_depth == 1, FUSE fs can be stacked as the * underlying fs of a stacked fs (e.g. overlayfs). + * + * Also don't allow the combination of FUSE_PASSTHROUGH + * and FUSE_WRITEBACK_CACHE, current design doesn't handle + * them together. */ if (IS_ENABLED(CONFIG_FUSE_PASSTHROUGH) && (flags & FUSE_PASSTHROUGH) && arg->max_stack_depth > 0 && - arg->max_stack_depth <= FILESYSTEM_MAX_STACK_DEPTH) { + arg->max_stack_depth <= FILESYSTEM_MAX_STACK_DEPTH && + !(flags & FUSE_WRITEBACK_CACHE)) { fc->passthrough = 1; fc->max_stack_depth = arg->max_stack_depth; fm->sb->s_stack_depth = arg->max_stack_depth; |