[LSF/MM/BPF TOPIC] fuse passthrough solutions and status

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Several fuse based filesystems pass file data from an underlying
filesystem without modification.  The added value can come from
changed directory structure, changed metadata or the ability to
intercept I/O only in special cases.  This pattern is very common, so
optimizing it could be very worthwhile.

I'd like to discuss proposed solutions to enabling data passthrough.
There are several prototypes:

 - fuse2[1] (myself, very old)
 - fuse-passthrough[2] (Alessio Balsini, more recent)
 - fuse-bpf[3] (Daniel Rosenberg, new)

The scope of fuse-bpf is much wider, but it does offer conditional
passthrough behavior as well.

One of the questions is how to reference underlying files.  Passing
open file descriptors directly in the fuse messages could be
dangerous[4].  Setting up the mapping from an open file descriptor to
the kernel using an ioctl() instead should be safe.

Other open issues:

 - what shall be the lifetime of the mapping?

 - does the mapped open file need to be visible to userspace?
Remember, this is a kernel module, so there's no process involved
where you could look at /proc/PID/fd.  Adding a kernel thread for each
fuse instance that installs these mapped fds as actual file descriptor
might be the solution.

Thanks,
Miklos


[1] https://lore.kernel.org/all/CAJfpegtjEoE7H8tayLaQHG9fRSBiVuaspnmPr2oQiOZXVB1+7g@xxxxxxxxxxxxxx/

[2] https://lore.kernel.org/all/20210125153057.3623715-1-balsini@xxxxxxxxxxx/

[3] https://lore.kernel.org/all/20221122021536.1629178-1-drosen@xxxxxxxxxx/

[4] https://lore.kernel.org/all/CAG48ez17uXtjCTa7xpa=JWz3iBbNDQTKO2hvn6PAZtfW3kXgcA@xxxxxxxxxxxxxx/



[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux