Age | Commit message (Collapse) | Author |
|
From the feedback received on LKML, it would be better to have multiple
ioctls, than a single ioctl the behavior of which depends on the data
that is passed (e.g., with an enum).
Introduce the new FUSE_PASSTHROUGH_OPEN ioctl which only gets the fd of
the lower file system.
Bug: 175195837
Test: CtsScopedStorageDeviceOnlyTest with android-mainline kernel \
implementing the new FUSE_PASSTHROUGH_OPEN ioctl
Signed-off-by: Alessio Balsini <balsini@google.com>
Change-Id: Iecb677722ca9630ce89b8a8fb5f486216ecd89cc
|
|
The interface for FUSE passthrough is still under discussion upstream,
thus this change fixes the issue of being able to support multiple
interfaces for passthrough, depending on what the kernel provides.
This implementation tries to explore the different FUSE passthrough
interface implementation and updates an index to the one that has
been found working.
Bug: 167695973
Test: Manual read/write of passthrough files with extra printks
Signed-off-by: Alessio Balsini <balsini@google.com>
Change-Id: I74e0e6c0691b37160a00af77fb18eda5342630f5
|
|
Add support for filesystem passthrough read/write of files.
When the FUSE_PASSTHROUGH capability is enabled, the FUSE daemon may
decide while handling the "open" or "create" operation, if the given
file can be accessed by that process in "passthrough" mode, meaning that
all the further read and write operations would be forwarded by the
kernel directly to the lower filesystem rather than to the FUSE daemon.
All requests that aren't read or write are still handled by the
userspace code.
This allows for an improved performance on reads and writes, especially
in the case of reads at random offsets, for which no (readahead)
caching mechanism would help, reducing the performance gap between FUSE
and native filesystem access.
Extend also the passthrough_hp example with the new passthrough feature.
Bug: 168023149
Test: atest ScopedStorageTest
Signed-off-by: Alessio Balsini <balsini@android.com>
Change-Id: I38aff0cf7198b7cd92eccc97547d47f4e1132b00
|
|
FUSE_CANONICAL_PATH opcode, (2016) was added in some Android
kernels to support inotify. Add canonical path handlers in libfuse and
create a patch file to easily apply this patch on top of updates.
Test: inotify - /sdcard on Taimen
Test: atest FileObserver
Bug: 147482155
Change-Id: I97a2c4247aa3e4a70af697569b56662a0755f72b
|
|
The latest release allows a custom logger
Bug: 135341433
Test: adb shell ls /sdcard with persist.sys.fuse
Change-Id: Iaa8a2bb7b6da3f364fba41b443527a998a26549f
|
|
|
|
A comment said that fuse_entry_param.generation must be non-zero.
However, I can't find anything in the kernel that requires that, and
real-world file systems don't seem to follow that advice, either.
|
|
|
|
Fixes: #394.
|
|
|
|
This constant is not defined in the kernel, so it will be lost when
fuse_kernel.h is not synchronized. Instead, the kernel just passes a
flag value of "1", so for now we also use a literal in userspace.
|
|
See issue #389 for some related discussions.
|
|
Instead of the Posix ioctl(2) command, Linux uses its own variant of ioctl()
in which the commands are requested as "unsigned long" and truncated to
32 bits by the fuse kernel module. Transmitting the commands to user space
file systems as "unsigned int" is a workaround for processing ioctl()
commands which do not fit into a signed int.
|
|
Fixes: #373
|
|
Fixes: #333
|
|
Commit 24b35c3d97ffdbf0a1f8e8b4e94ed892343603a6 had a simple mistake in
its changelog entry.
|
|
|
|
Fixes: #341.
|
|
Add support for the relatively new copy_file_range() syscall. Backend
filesystems can now implement an efficient way of cloning/duplicating
data ranges within files. See 'man 2 copy_file_range' for more details.
|
|
Taken from Linux kernel commit 3b7008b226f3.
|
|
|
|
The unprivileged option allows to run the FUSE file system process
without privileges by dropping capabilities and preventing them from
being re-acquired via setuid / fscaps etc. To accomplish this,
mount.fuse sets up the `/dev/fuse` file descriptor and mount itself
and passes the file descriptor via the `/dev/fd/%u` mountpoint syntax
to the FUSE file system.
|
|
|
|
|
|
Return different error codes from fuse_main()
|
|
Multiple meson build scripts improvements including:
* Bump meson requirement to 0.40.1 (0.40 already required)
* Declare a dependency object for main library
* Stop using add_global_arguments()
* Various minor style fixes
|
|
Source: Miklos Szeredi on fuse-devel, Wednesday, 4 July 2018 15:29.
|
|
|
|
the filehandle from opendir is passed to releasedir - there is no
closedir function in fuse_operations
|
|
Callers do (and should) use ;.
|
|
Fix spelling errors
|
|
It's just too much pain to keep it working.
|
|
|
|
We re-introduce the functionality of invalidating the caches for an
inode specified by path by adding a new routine
fuse_invalidate_path. This is useful for network-based file systems
which use the high-level API, enabling them to notify the kernel about
external changes.
This is a revival of Miklos Szeredi's original code for the
fuse_invalidate routine.
|
|
|
|
|
|
|
|
|
|
This should simplify the code a lot. It also corrects a bug in
that the (former) add_default_fsname() function actually set
the -osubtype option.
|
|
|
|
This function shouldn't be called when using a newer fuse
version, so we should not define it in that case.
|
|
|
|
At least on Linux kernel 4.9, a value of zero gives more
than 1-sec accuracy.
|
|
This is safer than making assumptions.
|
|
There is a proper meson-mode now.
|
|
When changes always come through kernel, timeouts
should be large.
|
|
|
|
|
|
|
|
In particular, don't call it "user_data" in one place and
"private_data" elsewhere.
Changing the name of the variable in the prototype should not affect
backwards compatibility.
Fixes: #155.
|