summaryrefslogtreecommitdiff
path: root/include
AgeCommit message (Collapse)Author
2021-10-12Introduce API V2 for FUSE_PASSTHROUGH_OPENHEADlineage-18.1Alessio Balsini
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
2021-10-12FUSE passthrough: handle unstable kernel interfaceAlessio Balsini
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
2021-04-17Enable passthrough mode for read/write operationsAlessio Balsini
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
2020-01-10Support FUSE_CANONICAL_PATH in libfuseZim
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
2019-11-09Update to libfuse 3.8.0Zim
The latest release allows a custom logger Bug: 135341433 Test: adb shell ls /sdcard with persist.sys.fuse Change-Id: Iaa8a2bb7b6da3f364fba41b443527a998a26549f
2019-07-09Sync fuse_kernel.h with Linux 5.2 (#433)Kirill Smelkov
2019-05-24Remove incorrect comment about fuse_entry_param.generation (#420)Alan Somers
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.
2019-04-16Add documentation for opting out of opendir and releasedir (#391)Chad Austin
2019-04-06Add support for in-kernel readdir caching.Nikolaus Rath
Fixes: #394.
2019-04-06Synchronize fuse_kernel.h with current kernel master.Nikolaus Rath
2019-04-06Delete FUSE_FSYNC_FDATASYNCNikolaus Rath
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.
2019-04-06Various documentation improvementsAlan Somers
See issue #389 for some related discussions.
2019-03-11Defined the (*ioctl)() commands as unsigned int (#381)Jean-Pierre André
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.
2019-03-10Improve documentation for the flush method (#378)Alan Somers
Fixes: #373
2019-03-09Improve readdir() and file handle documentationChad Austin
Fixes: #333
2019-03-09Fix the changelog entry for protocol version 7.12 (#374)Alan Somers
Commit 24b35c3d97ffdbf0a1f8e8b4e94ed892343603a6 had a simple mistake in its changelog entry.
2019-03-08Document fuse_fsync_in.fsync_flags and remove magic numbers (#375)Alan Somers
2019-01-21Clarify documentation of fuse_lowlevel_inval_inodeNikolaus Rath
Fixes: #341.
2018-11-19libfuse: add copy_file_range() supportNiels de Vos
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.
2018-11-19Update kernel API headersNiels de Vos
Taken from Linux kernel commit 3b7008b226f3.
2018-11-06Document when `fuse_lowlevel_notify_*` functions may block.Nikolaus Rath
2018-10-09Add unprivileged option in `mount.fuse3`Mattias Nissler
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.
2018-09-20Clarify what qualifies as a "related operation" for notify_inval_entry.Nikolaus Rath
2018-09-20Don't enable adaptive readdirplus unless fs has readdir() handler.Nikolaus Rath
2018-08-29return different non-zero error codes (#290)Oded Arbel
Return different error codes from fuse_main()
2018-08-25Make meson build scripts subprojects friendlyMartin Blanchard
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
2018-07-04Document that access() is also called on chdir().Nikolaus Rath
Source: Miklos Szeredi on fuse-devel, Wednesday, 4 July 2018 15:29.
2018-07-02fuse.h: fix typo (currenlty -> currently)William Woodruff
2018-05-24fix documentation for opendir in fuse_operationsCarl Edquist
the filehandle from opendir is passed to releasedir - there is no closedir function in fuse_operations
2018-04-13Drop redundant ; from FUSE_REGISTER_MODULE()Tomohiro Kusumi
Callers do (and should) use ;.
2017-11-27Spelling (#223)Josh Soref
Fix spelling errors
2017-08-24Dropped support for building with autotoolsNikolaus Rath
It's just too much pain to keep it working.
2017-08-24Add idle_threads mount option.Joseph Dodge
2017-08-24Allow inode cache invalidation in high-level APISławek Rudnicki
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.
2017-08-22Document and unify error codes of fuse_lowlevel_notify_*Nikolaus Rath
2017-08-22Document meaning of zero telldir() offset.Nikolaus Rath
2017-08-06Clarified documentation for fuse_parse_cmdline()Nikolaus Rath
2017-08-06Clarify how the filesystem should handle open/create flagsNikolaus Rath
2017-08-03Simplify and fix FreeBSD fsname handlingNikolaus Rath
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.
2017-08-03FreeBSD: supprt fsname= optionBaptiste Daroussin
2017-07-13Only declare fuse_new_30() when FUSE_USE_VERSION == 30Nikolaus Rath
This function shouldn't be called when using a newer fuse version, so we should not define it in that case.
2017-07-08Added public fuse_lib_help(), bumped minor versionNikolaus Rath
2017-07-08Fixed description of struct fuse_conn_info->time_granNikolaus Rath
At least on Linux kernel 4.9, a value of zero gives more than 1-sec accuracy.
2017-07-07Error out if FUSE_USE_VERSION is not definedNikolaus Rath
This is safer than making assumptions.
2017-07-07Don't use emacs' python-mode for meson filesNikolaus Rath
There is a proper meson-mode now.
2017-06-08Clarify *_timeout semanticsNikolaus Rath
When changes always come through kernel, timeouts should be large.
2017-05-31Clarify that destroy() is called without kernel connectionNikolaus Rath
2017-05-25Fix typo in comment.Nikolaus Rath
2017-05-25Document RENAME_EXCHANGE and RENAME_NOREPLACE flags.Nikolaus Rath
2017-04-12Improved documentation of fuse_context.private_dataNikolaus Rath
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.