Commit 3ab394b3 authored by Bernd Schubert's avatar Bernd Schubert Committed by Miklos Szeredi
Browse files

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: 7dc4e97a ("fuse: introduce FUSE_PASSTHROUGH capability")
Cc: stable@kernel.org # v6.9
Signed-off-by: default avatarBernd Schubert <bschubert@ddn.com>
Acked-by: default avatarAmir Goldstein <amir73il@gmail.com>
Reviewed-by: default avatarJosef Bacik <josef@toxicpanda.com>
Signed-off-by: default avatarMiklos Szeredi <mszeredi@redhat.com>
parent f7790d67
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -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;