aboutsummaryrefslogtreecommitdiffstats
path: root/ChangeLog.rst
AgeCommit message (Collapse)AuthorLines
2019-11-03Implement lseek operation (#457)Yuri Per-0/+6
2019-09-27Released 3.7.0Nikolaus Rath-2/+2
2019-09-15Whitelist UFSD (#451)tenzap-0/+2
2019-09-04Introduce callback for loggingStefan Hajnoczi-0/+7
Introduce an API for custom log handler functions. This allows libfuse applications to send messages to syslog(3) or other logging systems. See include/fuse_log.h for details. Convert libfuse from fprintf(stderr, ...) to log_fuse(level, ...). Most messages are error messages with FUSE_LOG_ERR log level. There are also some debug messages which now use the FUSE_LOG_DEBUG log level. Note that lib/mount_util.c is used by both libfuse and fusermount3. Since fusermount3 does not link against libfuse, we cannot call fuse_log() from lib/mount_util.c. This file will continue to use fprintf(stderr, ...) until someone figures out how to split it up. Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2019-07-09Released 3.6.2Nikolaus Rath-2/+2
2019-07-09Install init script in /etc/ instead of $sysconfdirNikolaus Rath-0/+6
sysconfdir defaults to /usr/local/etc which is almost always the wrong choice. Fixes: #427
2019-06-13Released 3.6.1Nikolaus Rath-0/+6
2019-06-13Released 3.6.0Nikolaus Rath-2/+2
2019-06-13fuse_lowlevel: Add max_pages support (#384)scosu-0/+6
Starting with kernel version 4.20 fuse supports a new property 'max_pages' which is the maximum number of pages that can be used per request. This can be set via an argument during initialization. This new property allows writes to be larger than 128k. This patch sets the property if the matching capability is set (FUSE_MAX_PAGES). It will also set max_write to 1MiB. Filesystems have the possibility to decrease this size by setting max_write to a smaller size. The max_pages and bufsize fields are adjusted accordingly. Cc: Constantine Shulyupin <const@MakeLinux.com> Signed-off-by: Markus Pargmann <scosu@quobyte.com>
2019-05-09Added new example filesystemNikolaus Rath-0/+7
passthrough_hp puts emphasis and performance and correctness, rather than simplicity.
2019-04-16Released 3.5.0Nikolaus Rath-2/+2
2019-04-16Add documentation for opting out of opendir and releasedir (#391)Chad Austin-0/+1
2019-04-07Bump minor versionNikolaus Rath-2/+2
cache_readdir flag is a new feature.
2019-04-06Add support for in-kernel readdir caching.Nikolaus Rath-0/+5
Fixes: #394.
2019-04-03Whitelist smb2 (#392)Peter Lemenkov-0/+2
See also https://bugzilla.redhat.com/1694552#c7 Signed-off-by: Peter Lemenkov <lemenkov@gmail.com>
2019-03-11Defined the (*ioctl)() commands as unsigned int (#381)Jean-Pierre André-0/+4
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-09Released 3.4.2Nikolaus Rath-3/+3
2019-03-09Add HFS+ to filesystem whitelist (#347)1c7718e7-0/+2
2019-01-04Added OpenAFS to type whitelistNikolaus Rath-0/+2
Fixes: #336.
2018-12-29Fixed memory leak.Nikolaus Rath-0/+6
Fixes: #338.
2018-12-22Added missing date to Changelog.Nikolaus Rath-2/+2
2018-12-22Released 3.4.1Nikolaus Rath-0/+8
2018-11-19examples: add copy_file_range() support to passthrough(_fh)Niels de Vos-0/+6
The passthrough example filesystem can be used for validating the API and the implementation in the FUSE kernel module.
2018-11-06Released 3.3.0Nikolaus Rath-2/+2
2018-11-06Avoid double unmount on normal unmount in auto_unmount mode.Kevin Vigor-0/+3
If a fuse filesystem was mounted in auto_unmount mode on top of an already mounted filesystem, we would end up doing a double-unmount when the fuse filesystem was unmounted properly. Make the auto_unmount code less eager: unmount only if the mounted filesystem has proper type and is returning 'Transport endpoint not connected'.
2018-11-06Document when `fuse_lowlevel_notify_*` functions may block.Nikolaus Rath-0/+3
2018-10-09Add unprivileged option in `mount.fuse3`Mattias Nissler-0/+5
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-10-09Allow passing `/dev/fuse` file descriptor from parent processMattias Nissler-0/+4
This adds support for a mode of operation in which a privileged parent process opens `/dev/fuse` and takes care of mounting. The FUSE file system daemon can then run as an unprivileged child that merely processes requests on the FUSE file descriptor, which get passed using the special `/dev/fd/%u` syntax for the mountpoint parameter. The main benefit is that no privileged operations need to be performed by the FUSE file system daemon itself directly or indirectly, so the FUSE process can run with fully unprivileged and mechanisms like securebits and no_new_privs can be used to prevent subprocesses from re-acquiring privilege via setuid, fscaps, etc. This reduces risk in case the FUSE file system gets exploited by malicious file system data. Below is an example that illustrates this. Note that I'm using shell for presentation purposes, the expectation is that the parent process will implement the equivalent of the `mount -i` and `capsh` commands. ``` \# example/hello can mount successfully with privilege $ sudo sh -c "LD_LIBRARY_PATH=build/lib ./example/hello /mnt/tmp" $ sudo cat /mnt/tmp/hello Hello World! $ sudo umount /mnt/tmp \# example/hello fails to mount without privilege $ sudo capsh --drop=all --secbits=0x2f -- -c 'LD_LIBRARY_PATH=build/lib ./example/hello -f /mnt/tmp' fusermount3: mount failed: Operation not permitted \# Passing FUSE file descriptor via /dev/fd/%u allows example/hello to work without privilege $ sudo sh -c ' exec 17<>/dev/fuse mount -i -o nodev,nosuid,noexec,fd=17,rootmode=40000,user_id=0,group_id=0 -t fuse hello /mnt/tmp capsh --drop=all --secbits=0x2f -- -c "LD_LIBRARY_PATH=build/lib example/hello /dev/fd/17" ' $ sudo cat /mnt/tmp/hello Hello World! $ sudo umount /mnt/tmp ```
2018-09-20Don't enable adaptive readdirplus unless fs has readdir() handler.Nikolaus Rath-0/+10
2018-08-31Released 3.2.6Nikolaus Rath-2/+2
2018-08-31Do not hardcode /etc/fuse.conf path.Nikolaus Rath-0/+3
2018-08-30Updated ChangeLog with recent changes.Nikolaus Rath-1/+8
2018-07-31Add autofs to mountpoint file system whitelistRobo Shimmer-0/+2
2018-07-24Released 3.2.5Nikolaus Rath-2/+7
2018-07-24Added ChangeLog entry for hardening patches.Nikolaus Rath-2/+6
2018-07-21Fix readdir() bug when a non-zero offset is specified in filler (#269)Rostislav-0/+8
The bug occurs when a filesystem client reads a directory until the end, seeks using seekdir() to some valid non-zero position and calls readdir(). A valid 'struct dirent *' is expected, but NULL is returned instead. Pseudocode demonstrating the bug: DIR *dp = opendir("some_dir"); struct dirent *de = readdir(dp); /* Get offset of the second entry */ long offset = telldir(dp); /* Read directory until the end */ while (de) de = readdir(de); seekdir(dp, offset); de = readdir(dp); /* de must contain the second entry, but NULL is returned instead */ The reason of the bug is that when the end of directory is reached, the kernel calls FUSE_READDIR op with an offset at the end of directory, so the filesystem's .readdir callback never calls the filler function, and we end up with dh->filled set to 1. After seekdir(), FUSE_READDIR is called again with a new offset, but this time the filesystem's .readdir callback is never called, and an empty reply is returned. Fix by setting dh->filled to 1 only when zero offsets are given to filler function.
2018-07-11Released 3.2.4Nikolaus Rath-2/+2
2018-05-18changelog: add info on rename deadlock fixBill Zissimopoulos-0/+5
2018-05-11Released 3.2.3Nikolaus Rath-0/+5
2018-03-31Fixed up duplicate ChangeLog entry.Nikolaus Rath-2/+0
2018-03-31Released 3.2.2Nikolaus Rath-0/+8
2017-12-01Handle mount ... -o nofail (#221)Josh Soref-0/+2
Accept (and ignore) nofail mount option
2017-11-27Spelling (#223)Josh Soref-1/+1
Fix spelling errors
2017-11-14Released 3.2.1Nikolaus Rath-0/+5
2017-09-12Released 3.2.0Nikolaus Rath-11/+11
2017-08-24Dropped support for building with autotoolsNikolaus Rath-0/+2
It's just too much pain to keep it working.
2017-08-24Add idle_threads mount option.Joseph Dodge-0/+7
2017-08-24Allow inode cache invalidation in high-level APISławek Rudnicki-0/+3
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-23Added examples/printcapNikolaus Rath-0/+3
2017-08-23fuse_loop_mt(): on error, return errno rather than -1.Nikolaus Rath-1/+4