]> www.infradead.org Git - users/willy/xarray.git/commitdiff
fuse: disable the combination of passthrough and writeback cache
authorBernd Schubert <bschubert@ddn.com>
Wed, 3 Jul 2024 17:30:20 +0000 (19:30 +0200)
committerMiklos Szeredi <mszeredi@redhat.com>
Thu, 29 Aug 2024 09:43:01 +0000 (11:43 +0200)
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>
fs/fuse/inode.c

index d8ab4e93916fa39b5cb57a9ab44e4b4e196d8416..bebd89002328e4bfc859f36b573a915ab6592396 100644 (file)
@@ -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;