diff mbox series

fuse: Disable the combination of passthrough and writeback cache

Message ID 20240703173020.623069-1-bschubert@ddn.com (mailing list archive)
State New
Headers show
Series fuse: Disable the combination of passthrough and writeback cache | expand

Commit Message

Bernd Schubert July 3, 2024, 5:30 p.m. UTC
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
Signed-off-by: Bernd Schubert <bschubert@ddn.com>
---
 fs/fuse/inode.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

Comments

Josef Bacik July 4, 2024, 3:09 p.m. UTC | #1
On Wed, Jul 03, 2024 at 07:30:20PM +0200, Bernd Schubert wrote:
> 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
> Signed-off-by: Bernd Schubert <bschubert@ddn.com>

Reviewed-by: Josef Bacik <josef@toxicpanda.com>

Thanks,

Josef
diff mbox series

Patch

diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c
index 99e44ea7d875..569921d0feab 100644
--- a/fs/fuse/inode.c
+++ b/fs/fuse/inode.c
@@ -1320,11 +1320,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;