Revision tags: release/14.2.0 |
|
#
f0f596bd |
| 02-Nov-2024 |
CismonX <admin@cismon.net> |
fusefs: ignore FUSE_NO_OPEN(DIR)_SUPPORT flags
The FUSE_NO_OPEN_SUPPORT and FUSE_NO_OPENDIR_SUPPORT flags are only meant to indicate kernel features, and should be ignored if they appear in the FUSE
fusefs: ignore FUSE_NO_OPEN(DIR)_SUPPORT flags
The FUSE_NO_OPEN_SUPPORT and FUSE_NO_OPENDIR_SUPPORT flags are only meant to indicate kernel features, and should be ignored if they appear in the FUSE_INIT reply flags.
Also fix the corresponding test cases.
MFC after: 2 weeks Reviewed by: Alan Somers <asomers@FreeBSD.org> Signed-off-by: CismonX <admin@cismon.net> Pull Request: https://github.com/freebsd/freebsd-src/pull/1509
show more ...
|
Revision tags: release/13.4.0, release/14.1.0, release/13.3.0 |
|
#
fdafd315 |
| 24-Nov-2023 |
Warner Losh <imp@FreeBSD.org> |
sys: Automated cleanup of cdefs and other formatting
Apply the following automated changes to try to eliminate no-longer-needed sys/cdefs.h includes as well as now-empty blank lines in a row.
Remov
sys: Automated cleanup of cdefs and other formatting
Apply the following automated changes to try to eliminate no-longer-needed sys/cdefs.h includes as well as now-empty blank lines in a row.
Remove /^#if.*\n#endif.*\n#include\s+<sys/cdefs.h>.*\n/ Remove /\n+#include\s+<sys/cdefs.h>.*\n+#if.*\n#endif.*\n+/ Remove /\n+#if.*\n#endif.*\n+/ Remove /^#if.*\n#endif.*\n/ Remove /\n+#include\s+<sys/cdefs.h>\n#include\s+<sys/types.h>/ Remove /\n+#include\s+<sys/cdefs.h>\n#include\s+<sys/param.h>/ Remove /\n+#include\s+<sys/cdefs.h>\n#include\s+<sys/capsicum.h>/
Sponsored by: Netflix
show more ...
|
Revision tags: release/14.0.0 |
|
#
685dc743 |
| 16-Aug-2023 |
Warner Losh <imp@FreeBSD.org> |
sys: Remove $FreeBSD$: one-line .c pattern
Remove /^[\s*]*__FBSDID\("\$FreeBSD\$"\);?\s*\n/
|
Revision tags: release/13.2.0, release/12.4.0, release/13.1.0, release/12.3.0 |
|
#
7124d2bc |
| 25-Sep-2021 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: implement FUSE_NO_OPEN_SUPPORT and FUSE_NO_OPENDIR_SUPPORT
For file systems that allow it, fusefs will skip FUSE_OPEN, FUSE_RELEASE, FUSE_OPENDIR, and FUSE_RELEASEDIR operations, a minor opt
fusefs: implement FUSE_NO_OPEN_SUPPORT and FUSE_NO_OPENDIR_SUPPORT
For file systems that allow it, fusefs will skip FUSE_OPEN, FUSE_RELEASE, FUSE_OPENDIR, and FUSE_RELEASEDIR operations, a minor optimization.
MFC after: 2 weeks Reviewed by: pfg Differential Revision: https://reviews.freebsd.org/D32141
show more ...
|
Revision tags: release/13.0.0, release/12.2.0, release/11.4.0, release/12.1.0 |
|
#
0b4275ac |
| 07-Aug-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: merge from projects/fuse2
This commit imports the new fusefs driver. It raises the protocol level from 7.8 to 7.23, fixes many bugs, adds a test suite for the driver, and adds many new featu
fusefs: merge from projects/fuse2
This commit imports the new fusefs driver. It raises the protocol level from 7.8 to 7.23, fixes many bugs, adds a test suite for the driver, and adds many new features. New features include:
* Optional kernel-side permissions checks (-o default_permissions) * Implement VOP_MKNOD, VOP_BMAP, and VOP_ADVLOCK * Allow interrupting FUSE operations * Support named pipes and unix-domain sockets in fusefs file systems * Forward UTIME_NOW during utimensat(2) to the daemon * kqueue support for /dev/fuse * Allow updating mounts with "mount -u" * Allow exporting fusefs file systems over NFS * Server-initiated invalidation of the name cache or data cache * Respect RLIMIT_FSIZE * Try to support servers as old as protocol 7.4
Performance enhancements include:
* Implement FUSE's FOPEN_KEEP_CACHE and FUSE_ASYNC_READ flags * Cache file attributes * Cache lookup entries, both positive and negative * Server-selectable cache modes: writethrough, writeback, or uncached * Write clustering * Readahead * Use counter(9) for statistical reporting
PR: 199934 216391 233783 234581 235773 235774 235775 PR: 236226 236231 236236 236291 236329 236381 236405 PR: 236327 236466 236472 236473 236474 236530 236557 PR: 236560 236844 237052 237181 237588 238565 Reviewed by: bcr (man pages) Reviewed by: cem, ngie, rpokala, glebius, kib, bde, emaste (post-commit review on project branch) MFC after: 3 weeks Relnotes: yes Sponsored by: The FreeBSD Foundation Pull Request: https://reviews.freebsd.org/D21110
show more ...
|
#
427d205c |
| 06-Aug-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: remove superfluous counter_u64_zero
Reported by: glebius Sponsored by: The FreeBSD Foundation
|
#
07e86257 |
| 13-Jul-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: fix the build with some NODEBUG kernels
systm.h needs to be included before counter.h
Sponsored by: The FreeBSD Foundation
|
Revision tags: release/11.3.0 |
|
#
8aafc8c3 |
| 28-Jun-2019 |
Alan Somers <asomers@FreeBSD.org> |
[skip ci] update copyright headers in fusefs files
Sponsored by: The FreeBSD Foundation
|
#
38c86346 |
| 27-Jun-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: counter(9) variables should not be statically initialized
Reported by: rpokala Sponsored by: The FreeBSD Foundation
|
#
560a55d0 |
| 27-Jun-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: convert statistical sysctls to use counter(9)
counter(9) is more performant than using atomic instructions to update sysctls that just report statistics to userland.
Sponsored by: The FreeB
fusefs: convert statistical sysctls to use counter(9)
counter(9) is more performant than using atomic instructions to update sysctls that just report statistics to userland.
Sponsored by: The FreeBSD Foundation
show more ...
|
#
d4fd0c81 |
| 28-May-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: set the flags fields of fuse_write_in and fuse_read_in
These fields are supposed to contain the file descriptor flags as supplied to open(2) or set by fcntl(2). The feature is kindof useles
fusefs: set the flags fields of fuse_write_in and fuse_read_in
These fields are supposed to contain the file descriptor flags as supplied to open(2) or set by fcntl(2). The feature is kindof useless on FreeBSD since we don't supply all of these flags to fuse (because of the weak relationship between struct file and struct vnode). But we should at least set the access mode flags (O_RDONLY, etc).
This is the last fusefs change needed to get full protocol 7.9 support. There are still a few options we don't support for good reason (mandatory file locking is dumb, flock support is broken in the protocol until 7.17, etc), but there's nothing else to do at this protocol level.
Sponsored by: The FreeBSD Foundation
show more ...
|
#
e76986fd |
| 24-May-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: fix exporting fuse filesystems with nfsd
A previous commit made fuse exportable via userland NFS servers. Compatibility with the in-kernel nfsd required two more changes:
* During read and
fusefs: fix exporting fuse filesystems with nfsd
A previous commit made fuse exportable via userland NFS servers. Compatibility with the in-kernel nfsd required two more changes:
* During read and write operations, implicitly do a FUSE_OPEN if there isn't already a valid file handle. That's because nfsd never calls VOP_OPEN. * During VOP_READDIR, if an implicit open was necessary, directory offsets from a previous VOP_READDIR may not be valid, so VOP_READDIR may have to start from the beginning and read until it encounters the requested offset.
I've done only limited testing over NFS, so there are probably still some more bugs. Thanks to rmacklem for all of the readdir changes, which he had made for his pnfs work.
Sponsored by: The FreeBSD Foundation
show more ...
|
#
419e7ff6 |
| 20-Apr-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: rename the SDT probes from "fuse" to "fusefs"
This matches the new name of the kld.
Sponsored by: The FreeBSD Foundation
|
#
f067b609 |
| 13-Apr-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: implement VOP_ADVLOCK
PR: 234581 Sponsored by: The FreeBSD Foundation
|
#
a7e81cb3 |
| 04-Apr-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: properly handle FOPEN_KEEP_CACHE
If a fuse file system returne FOPEN_KEEP_CACHE in the open or create response, then the client is supposed to _not_ clear its caches for that file. I don't
fusefs: properly handle FOPEN_KEEP_CACHE
If a fuse file system returne FOPEN_KEEP_CACHE in the open or create response, then the client is supposed to _not_ clear its caches for that file. I don't know why clearing the caches would be the default given that there's a separate flag to bypass the cache altogether, but that's the way it is. fusefs(5) will now honor this flag.
Our behavior is slightly different than Linux's because we reuse file handles. That means that open(2) wont't clear the cache if there's a reusable file handle, even if the file server wouldn't have sent FOPEN_KEEP_CACHE had we opened a new file handle like Linux does.
PR: 236560 Sponsored by: The FreeBSD Foundation
show more ...
|
#
9f10f423 |
| 03-Apr-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: send FUSE_FLUSH during VOP_CLOSE
The FUSE protocol says that FUSE_FLUSH should be send every time a file descriptor is closed. That's not quite possible in FreeBSD because multiple file des
fusefs: send FUSE_FLUSH during VOP_CLOSE
The FUSE protocol says that FUSE_FLUSH should be send every time a file descriptor is closed. That's not quite possible in FreeBSD because multiple file descriptors can share a single struct file, and closef doesn't call fo_close until the last close. However, we can still send FUSE_FLUSH on every VOP_CLOSE, which is probably good enough.
There are two purposes for FUSE_FLUSH. One is to allow file systems to return EIO if they have an error when writing data that's cached server-side. The other is to release POSIX file locks (which fusefs(5) does not yet support).
PR: 236405, 236327 Sponsored by: The FreeBSD Foundation
show more ...
|
#
9e444871 |
| 02-Apr-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: cleanup and refactor some recent commits
This commit cleans up after recent commits, especially 345766, 345768, and 345781. There is no functional change. The most important change is to a
fusefs: cleanup and refactor some recent commits
This commit cleans up after recent commits, especially 345766, 345768, and 345781. There is no functional change. The most important change is to add comments documenting why we can't send flags like O_APPEND in FUSE_WRITE_OPEN.
PR: 236340 Sponsored by: The FreeBSD Foundation
show more ...
|
#
f8d4af10 |
| 01-Apr-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: send FUSE_OPEN for every open(2) with unique credentials
By default, FUSE performs authorization in the server. That means that it's insecure for the client to reuse FUSE file handles betwe
fusefs: send FUSE_OPEN for every open(2) with unique credentials
By default, FUSE performs authorization in the server. That means that it's insecure for the client to reuse FUSE file handles between different users, groups, or processes. Linux handles this problem by creating a different FUSE file handle for every file descriptor. FreeBSD can't, due to differences in our VFS design.
This commit adds credential information to each fuse_filehandle. During open(2), fusefs will now only reuse a file handle if it matches the exact same access mode, pid, uid, and gid of the calling process.
PR: 236844 Sponsored by: The FreeBSD Foundation
show more ...
|
#
363a7416 |
| 01-Apr-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: allow opening files O_EXEC
O_EXEC is useful for fexecve(2) and fchdir(2). Treat it as another fufh type alongside the existing RDONLY, WRONLY, and RDWR. Prior to r345742 this would've caus
fusefs: allow opening files O_EXEC
O_EXEC is useful for fexecve(2) and fchdir(2). Treat it as another fufh type alongside the existing RDONLY, WRONLY, and RDWR. Prior to r345742 this would've caused a memory and performance penalty.
PR: 236329 Sponsored by: The FreeBSD Foundation
show more ...
|
#
5ec10aa5 |
| 01-Apr-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: replace obsolete array idioms
r345742 replaced fusefs's fufh array with a fufh list. But it left a few array idioms in place. This commit replaces those idioms with more efficient list idi
fusefs: replace obsolete array idioms
r345742 replaced fusefs's fufh array with a fufh list. But it left a few array idioms in place. This commit replaces those idioms with more efficient list idioms. One location is in fuse_filehandle_close, which now takes a pointer argument. Three other locations are places that had to loop over all of a vnode's fuse filehandles.
Sponsored by: The FreeBSD Foundation
show more ...
|
#
1cedd6df |
| 31-Mar-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: replace the fufh table with a linked list
The FUSE protocol allows each open file descriptor to have a unique file handle. On FreeBSD, these file handles must all be stored in the vnode. Th
fusefs: replace the fufh table with a linked list
The FUSE protocol allows each open file descriptor to have a unique file handle. On FreeBSD, these file handles must all be stored in the vnode. The old method (also used by OSX and OpenBSD) is to store them all in a small array. But that limits the total number that can be stored. This commit replaces the array with a linked list (a technique also used by Illumos). There is not yet any change in functionality, but this is the first step to fixing several bugs.
PR: 236329, 236340, 236381, 236560, 236844 Discussed with: cem Sponsored by: The FreeBSD Foundation
show more ...
|
#
5fccbf31 |
| 30-Mar-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: don't force direct io for files opened O_WRONLY
Previously fusefs would treat any file opened O_WRONLY as though the FOPEN_DIRECT_IO flag were set, in an attempt to avoid issuing reads as pa
fusefs: don't force direct io for files opened O_WRONLY
Previously fusefs would treat any file opened O_WRONLY as though the FOPEN_DIRECT_IO flag were set, in an attempt to avoid issuing reads as part of a RMW write operation on a cached part of the file. However, the FUSE protocol explicitly allows reads of write-only files for precisely that reason.
Sponsored by: The FreeBSD Foundation
show more ...
|
#
080518d8 |
| 29-Mar-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: convert debug printfs into dtrace probes
fuse(4) was heavily instrumented with debug printf statements that could only be enabled with compile-time flags. They fell into three basic groups:
fusefs: convert debug printfs into dtrace probes
fuse(4) was heavily instrumented with debug printf statements that could only be enabled with compile-time flags. They fell into three basic groups:
1. Totally redundant with dtrace FBT probes. These I deleted. 2. Print textual information, usually error messages. These I converted to SDT probes of the form fuse:fuse:FILE:trace. They work just like the old printf statements except they can be enabled at runtime with dtrace. They can be filtered by FILE and/or by priority. 3. More complicated probes that print detailed information. These I converted into ad-hoc SDT probes.
Also, de-inline fuse_internal_cache_attrs. It's big enough to be a regular function, and this way it gets a dtrace FBT probe.
This commit is a merge of r345304, r344914, r344703, and r344664 from projects/fuse2.
Reviewed by: cem MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D19667
show more ...
|
#
f9856d08 |
| 21-Mar-2019 |
Alan Somers <asomers@FreeBSD.org> |
MFHead @345353
|
#
123af6ec |
| 20-Mar-2019 |
Alan Somers <asomers@FreeBSD.org> |
Rename fuse(4) to fusefs(4)
This makes it more consistent with other filesystems, which all end in "fs", and more consistent with its mount helper, which is already named "mount_fusefs".
Reviewed b
Rename fuse(4) to fusefs(4)
This makes it more consistent with other filesystems, which all end in "fs", and more consistent with its mount helper, which is already named "mount_fusefs".
Reviewed by: cem, rgrimes MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D19649
show more ...
|