aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorLines
2018-11-19examples: add copy_file_range() support to passthrough(_fh)Niels de Vos-4/+108
The passthrough example filesystem can be used for validating the API and the implementation in the FUSE kernel module.
2018-11-19libfuse: add copy_file_range() supportNiels de Vos-45/+208
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-1/+7
Taken from Linux kernel commit 3b7008b226f3.
2018-11-11Fix mounting on FreeBSDRoman Bogorodskiy-4/+2
Currently, mounting on FreeBSD fails like this: mount_fusefs: ZZZZ<snip> on /mountpoint: No such file or directory This happens because right after doing argv[a++] = fdnam it's getting freed before calling execvp(). So move this free() call after execvp(). Also, when asprintf() fails for fdnam, close device fd before calling exit().
2018-11-11Fix build on non-LinuxRoman Bogorodskiy-4/+6
* Update meson.build to add mount_util.c to libfuse_sources unconditionally, it's non Linux-only * FreeBSD, like NetBSD, doesn't have mntent.h, so don't include that and define IGNORE_MTAB for both * FreeBSD, like NetBSD, has no umount2() sysctl, so similarly define it to unmount()
2018-11-09Don't crash if mountpoint is not specified.Nikolaus Rath-0/+7
Fixes: #319.
2018-11-06Released 3.3.0Nikolaus Rath-3/+10
2018-11-06Update CI build scriptNikolaus Rath-3/+3
There is no gcc-6 package anymore.
2018-11-06Revert "Do not include struct fuse_buf in struct fuse_worker"Nikolaus Rath-9/+13
This reverts commit 161983e2416bc6e26bbbe89664fff62c48c70858, because this causes resource leaks when threads are terminated by pthread_cancel(). Fixes: #313.
2018-11-06Avoid double unmount on normal unmount in auto_unmount mode.Kevin Vigor-11/+66
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/+16
2018-10-19Add SpectrumScale/GPFS and Lustre to FS whitelistValentin Plugaru-0/+2
Fixes: #304 Signed-off-by: Valentin Plugaru <valentin.plugaru@uni.lu>
2018-10-19Do not fail "ninja test" when running as subprojectAhmed Masud-3/+16
2018-10-16Bump minimum Meson versionNikolaus Rath-4/+4
According to user reports (https://github.com/libfuse/libfuse/pull/300), we need at least version 0.42.
2018-10-11Clarified licensing terms.Nikolaus Rath-0/+13
Fixes: #213.
2018-10-10Enable more tests for passthrough_llNikolaus Rath-48/+18
2018-10-10passthrough_ll: initialize unused memoryMiklos Szeredi-3/+4
For '.' and '..' entries only the file type in e.attr.st_mode and the inode number in e.attr.st_ino are used. But it's prudent to at least initialize the other fields of struct fuse_entry_param as well, instead of using random values from the stack.
2018-10-10passthrough_ll: allow configuring cachingMiklos Szeredi-8/+55
Caching can be controlled with the following options: "cache=never": disable caching "cache=normal": enable caching but also refresh after the timeout "cache=always": never refresh cache The timeout can be controlled with the "timeout=SEC" option, where SEC is the number of seconds and can be an arbitrary non-negative floating point number. Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
2018-10-10passthrough_ll: add *xattr() operationsMiklos Szeredi-0/+186
The extended attribute functionality is enabled with the "xattr" option (default) and disabled with the "no_xatt" option. New operations added: - getxattr - listxattr - setxattr - removexattr Caveat: none of these operations will work on a symbolic link, because it's difficult to implement that without races that can result in incorrect operation. Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
2018-10-10passthrough_ll: add flock()Miklos Szeredi-0/+23
Conditionally enable flock() locking on underlying filesystem, based on the flock/no_flock options. Default is "no_flock", meaning locking will be local to the fuse filesystem and won't be propagated to the filesystem passed through. Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
2018-10-10passthrough_ll: whitespace cleanupMiklos Szeredi-6/+5
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
2018-10-10passthrough_ll: add forget_multi()Vivek Goyal-1/+16
Add method forget_multi() to forget multiple inodes in a single message. Signed-off-by: Vivek Goyal <vgoyal@redhat.com> Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
2018-10-10passthrough_ll: add source optionVivek Goyal-2/+19
Right now, passthrough_ll will use "/" as source directory for passthrough. We need more flexibility where user can specify path of directory to be passed through. Hence add an option "source=<source-dir>". Signed-off-by: Vivek Goyal <vgoyal@redhat.com> Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
2018-10-10passthrough_ll: add some of the missing operationsMiklos Szeredi-1/+324
New operations added: - mkdir - mknod - symlink - link - unlink - rmdir - rename - setattr - fsyncdir - flush - fsync - statfs - fallocate Caveats: - The utimes(2) family of syscalls will fail on symlinks on 4.18 and earlier kernels. Hoping to add support to later kernels. - The link(2) and linkat(2) system calls will fail on symlinks unless running with privileges (CAP_DAC_READ_SEARCH). Signed-off-by: Vivek Goyal <vgoyal@redhat.com> Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
2018-10-10passthrough_ll: add is_symlink to lo_inodeMiklos Szeredi-0/+3
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
2018-10-10passthrough_ll: set umask at startupMiklos Szeredi-0/+3
Like all the other passthrough examples. Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
2018-10-10passthrough_ll: fix refcount for "." and ".." entriesMiklos Szeredi-7/+19
Kernel is not expecting an elevated lookup count for the "." and ".." entries when doing READDIRPLUS. Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
2018-10-10passthrough_ll: add locking to inode cacheMiklos Szeredi-26/+51
Otherwise it may crash when running multithreaded. Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
2018-10-09Add unprivileged option in `mount.fuse3`Mattias Nissler-34/+303
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-4/+48
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-28Add build options for utils and examplesMartin Blanchard-3/+14
Allow skipping utils build & installation (-Dutils=false) and examples build (-Dexamples=false). By default behaviour is unchanged (both are true: utils and examples get build).
2018-09-27Fix unlink errno checkScott Worley-1/+1
2018-09-20Clarify what qualifies as a "related operation" for notify_inval_entry.Nikolaus Rath-6/+13
2018-09-20Don't enable adaptive readdirplus unless fs has readdir() handler.Nikolaus Rath-5/+27
2018-09-17Do not include struct fuse_buf in struct fuse_workerNikolaus Rath-10/+9
This is only used in fuse_do_work(), so we can put it on the stack.
2018-09-17Don't special-case bulid of mount_util.c.Nikolaus Rath-11/+1
We already support out of source builds without this.
2018-08-31Released 3.2.6Nikolaus Rath-3/+8
2018-08-31Do not hardcode /etc/fuse.conf path.Nikolaus Rath-13/+33
2018-08-30Updated ChangeLog with recent changes.Nikolaus Rath-1/+8
2018-08-29return different non-zero error codes (#290)Oded Arbel-6/+15
Return different error codes from fuse_main()
2018-08-26Fix memory leak of FUSE modulesRostislav-3/+23
2018-08-26Fix invalid free of memory pointer in 'struct fuse_buf'Rostislav-1/+2
2018-08-25Make meson build scripts subprojects friendlyMartin Blanchard-12/+10
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-08-09Add bcachefs to mountpoint file system whitelistDaniel Fullmer-0/+1
2018-08-05Add FAT to mountpoint file system whitelistBenjamin Barenblat-0/+1
2018-08-05Realphabetize and re-document mountpoint file system whitelistBenjamin Barenblat-4/+6
2018-07-31Add autofs to mountpoint file system whitelistRobo Shimmer-0/+3
2018-07-25Remove unused member of 'struct fuse_dh'Rostislav Skudnov-1/+0
2018-07-24Released 3.2.5Nikolaus Rath-3/+12
2018-07-24Added ChangeLog entry for hardening patches.Nikolaus Rath-2/+6