#
2ffddc5e |
| 20-Jun-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: raise protocol level to 7.13
This protocol version adds one new feature: the ability for the server to set the maximum number of background requests and a "congestion threshold" with ill-def
fusefs: raise protocol level to 7.13
This protocol version adds one new feature: the ability for the server to set the maximum number of background requests and a "congestion threshold" with ill-defined properties. I don't know of any fuse file systems in ports that use this feature, so I'm not implementing it.
Sponsored by: The FreeBSD Foundation
show more ...
|
#
a1c9f4ad |
| 20-Jun-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: implement VOP_BMAP
If the fuse daemon supports FUSE_BMAP, then use that for the block mapping. Otherwise, use the same technique used by vop_stdbmap. Report large values for runp and runb i
fusefs: implement VOP_BMAP
If the fuse daemon supports FUSE_BMAP, then use that for the block mapping. Otherwise, use the same technique used by vop_stdbmap. Report large values for runp and runb in order to maximize read clustering and minimize upcalls, even if we don't know the true layout.
The major result of this change is that sequential reads to FUSE files will now usually happen 128KB at a time instead of 64KB.
Sponsored by: The FreeBSD Foundation
show more ...
|
#
d569012f |
| 17-Jun-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: implement non-clustered readahead
fusefs will now read ahead at most one cache block at a time (usually 64 KB). Clustered reads are still TODO. Individual file systems may disable read ahe
fusefs: implement non-clustered readahead
fusefs will now read ahead at most one cache block at a time (usually 64 KB). Clustered reads are still TODO. Individual file systems may disable read ahead by setting fuse_init_out.max_readahead=0 during initialization.
Sponsored by: The FreeBSD Foundation
show more ...
|
Revision tags: vendor/libarchive/3.4.0, vendor/lldb/lldb-release_80-r363030, vendor/lld/lld-release_80-r363030, vendor/llvm-libunwind/libunwind-release_80-r363030, vendor/libc++/libc++-release_80-r363030, vendor/libc++/libc++-release_80-r364487, vendor/libc++/libc++-release_801-r366581, vendor/compiler-rt/compiler-rt-release_80-r363030, vendor/compiler-rt/compiler-rt-release_80-r364487, vendor/compiler-rt/compiler-rt-release_801-r366581, vendor/clang/clang-release_80-r363030, vendor/llvm/llvm-release_80-r363030, vendor/llvm/llvm-release_80-r364487, vendor/llvm/llvm-release_801-r366581 |
|
#
6ff7f297 |
| 03-Jun-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: don't require FUSE_EXPORT_SUPPORT for async invalidation
In r348560 I thought that FUSE_EXPORT_SUPPORT was required for cases where the node to be invalidated (or the parent of the entry to
fusefs: don't require FUSE_EXPORT_SUPPORT for async invalidation
In r348560 I thought that FUSE_EXPORT_SUPPORT was required for cases where the node to be invalidated (or the parent of the entry to be invalidated) wasn't cached. But I realize now that that's not the case. During entry invalidation, if the parent isn't in the vfs hash table, then it must've been reclaimed. And since fuse_vnop_reclaim does a cache_purge, that means the entry to be invalidated has already been removed from the namecache. And during inode invalidation, if the inode to be invalidated isn't in the vfs hash table, then it too must've been reclaimed. In that case it will have no buffer cache to invalidate.
Sponsored by: The FreeBSD Foundation
show more ...
|
#
eae1ae13 |
| 03-Jun-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: support asynchronous cache invalidation
Protocol 7.12 adds a way for the server to notify the client that it should invalidate an inode's data cache and/or attributes. This commit implement
fusefs: support asynchronous cache invalidation
Protocol 7.12 adds a way for the server to notify the client that it should invalidate an inode's data cache and/or attributes. This commit implements that mechanism. Unlike Linux's implementation, ours requires that the file system also supports FUSE_EXPORT_SUPPORT (NFS-style lookups). Otherwise the invalidation operation will return EINVAL.
Sponsored by: The FreeBSD Foundation
show more ...
|
Revision tags: vendor/one-true-awk/4189ef5d |
|
#
c2d70d6e |
| 01-Jun-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: support name cache invalidation
Protocol 7.12 adds a way for the server to notify the client that it should invalidate an entry from its name cache. This commit implements that mechanism.
fusefs: support name cache invalidation
Protocol 7.12 adds a way for the server to notify the client that it should invalidate an entry from its name cache. This commit implements that mechanism.
Sponsored by: The FreeBSD Foundation
show more ...
|
#
0d2bf489 |
| 31-May-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: check the vnode cache when looking up files for the NFS server
FUSE allows entries to be cached for a limited amount of time. fusefs's vnop_lookup method already implements that using the t
fusefs: check the vnode cache when looking up files for the NFS server
FUSE allows entries to be cached for a limited amount of time. fusefs's vnop_lookup method already implements that using the timeout functionality of cache_lookup/cache_enter_time. However, lookups for the NFS server go through a separate path: vfs_vget. That path can't use the same timeout functionality because cache_lookup/cache_enter_time only work on pathnames, whereas vfs_vget works by inode number.
This commit adds entry timeout information to the fuse vnode structure, and checks it during vfs_vget. This allows the NFS server to take advantage of cached entries. It's also the same path that FUSE's asynchronous cache invalidation operations will use.
Sponsored by: The FreeBSD Foundation
show more ...
|
Revision tags: vendor/ena-com/2.0.0 |
|
#
a4856c96 |
| 29-May-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: raise protocol level to 7.12
This commit raises the protocol level and adds backwards-compatibility code to handle structure size changes. It doesn't implement any new features. The new fea
fusefs: raise protocol level to 7.12
This commit raises the protocol level and adds backwards-compatibility code to handle structure size changes. It doesn't implement any new features. The new features added in protocol 7.12 are:
* server-side umask processing (which FreeBSD won't do) * asynchronous inode and directory entry invalidation (which I'll do next)
Sponsored by: The FreeBSD Foundation
show more ...
|
Revision tags: vendor/openssl/1.0.2s, vendor/openssl/1.1.1c |
|
#
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 ...
|
#
9bcecf0f |
| 27-May-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: clear fuse_getattr_in.getattr_flags
Protocol 7.9 adds this field. We could use it to store the file handle of the file whose attributes we're requesting. However, that requires extra work
fusefs: clear fuse_getattr_in.getattr_flags
Protocol 7.9 adds this field. We could use it to store the file handle of the file whose attributes we're requesting. However, that requires extra work at runtime to look up a file handle, and I'm not aware of any file systems that care. So it's easiest just to clear it.
Sponsored by: The FreeBSD Foundation
show more ...
|
#
93fecd02 |
| 25-May-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: misc build fixes
* Only build the tests on platforms with C++14 support * Fix an undefined symbol error on lint builds * Remove an unused function: fiov_clear
Sponsored by: The FreeBSD Foun
fusefs: misc build fixes
* Only build the tests on platforms with C++14 support * Fix an undefined symbol error on lint builds * Remove an unused function: fiov_clear
Sponsored by: The FreeBSD Foundation
show more ...
|
#
e97ae4ad |
| 24-May-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: implement FUSE_ASYNC_READ
If a daemon sets the FUSE_ASYNC_READ flag during initialization, then the client is allowed to issue multiple concurrent reads for the same file handle. Otherwise
fusefs: implement FUSE_ASYNC_READ
If a daemon sets the FUSE_ASYNC_READ flag during initialization, then the client is allowed to issue multiple concurrent reads for the same file handle. Otherwise concurrent reads are not allowed. This commit implements it. Previously we unconditionally disallowed concurrent reads.
Sponsored by: The FreeBSD Foundation
show more ...
|
Revision tags: vendor/libfdt/1.5.0 |
|
#
ad587bc5 |
| 24-May-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: fix some garbage left behind by r348209
Sponsored by: The FreeBSD Foundation
|
#
e76986fd |
| 23-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 ...
|
#
e5b50fe7 |
| 23-May-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: Make fuse file systems NFS-exportable
This commit adds the VOPs needed by userspace NFS servers (tested with net/unfs3). More work is needed to make the in-kernel nfsd work, because of its
fusefs: Make fuse file systems NFS-exportable
This commit adds the VOPs needed by userspace NFS servers (tested with net/unfs3). More work is needed to make the in-kernel nfsd work, because of its stateless nature. It doesn't open files prior to doing I/O. Also, the NFS-related VOPs currently ignore the entry cache.
Sponsored by: The FreeBSD Foundation
show more ...
|
#
2013b723 |
| 23-May-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: improve attribute cacheing
Consolidate all calls to fuse_vnode_setsize as a result of a file attribute change to one location in fuse_internal_setattr. There are still a few calls elsewhere
fusefs: improve attribute cacheing
Consolidate all calls to fuse_vnode_setsize as a result of a file attribute change to one location in fuse_internal_setattr. There are still a few calls elsewhere that happen as a result of a write.
Sponsored by: The FreeBSD Foundation
show more ...
|
Revision tags: zfs-0.8.0 |
|
#
fe221e01 |
| 16-May-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: forward UTIME_NOW to the server
If a user sets both atime and mtime to UTIME_NOW when calling a syscall like utimensat(2), allow the server to choose what "now" means. Due to the design of
fusefs: forward UTIME_NOW to the server
If a user sets both atime and mtime to UTIME_NOW when calling a syscall like utimensat(2), allow the server to choose what "now" means. Due to the design of FreeBSD's VFS, it's not possible to do this for just one of atime or mtime; it's all or none.
PR: 237181 Sponsored by: The FreeBSD Foundation
show more ...
|
#
e7f73af1 |
| 16-May-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: allow the server to specify st_blksize
If the server sets fuse_attr.blksize to a nonzero value in the response to FUSE_GETATTR, then the client should use that as the value for stat.st_blksi
fusefs: allow the server to specify st_blksize
If the server sets fuse_attr.blksize to a nonzero value in the response to FUSE_GETATTR, then the client should use that as the value for stat.st_blksize .
Sponsored by: The FreeBSD Foundation
show more ...
|
#
3d15b234 |
| 15-May-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: don't track a file's size in two places
fuse_vnode_data.filesize was mostly redundant with fuse_vnode_data.cached_attrs.st_size, but didn't have exactly the same meaning. It was very confus
fusefs: don't track a file's size in two places
fuse_vnode_data.filesize was mostly redundant with fuse_vnode_data.cached_attrs.st_size, but didn't have exactly the same meaning. It was very confusing. This commit eliminates the former. It also eliminates fuse_vnode_refreshsize, which ignored the cache timeout value.
Sponsored by: The FreeBSD Foundation
show more ...
|
Revision tags: vendor/netcat/6.5, vendor/netcat/6.4, vendor/netcat/6.3, vendor/netcat/6.2, vendor/netcat/6.1, vendor/netcat/6.0, vendor/acpica/20190509, zfs-0.8.0-rc5 |
|
#
d5ff2688 |
| 09-May-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: create sockets with FUSE_MKNOD, not FUSE_CREATE
libfuse expects sockets to be created with FUSE_MKNOD, not FUSE_CREATE, because that's how Linux does it. My first attempt at creating socket
fusefs: create sockets with FUSE_MKNOD, not FUSE_CREATE
libfuse expects sockets to be created with FUSE_MKNOD, not FUSE_CREATE, because that's how Linux does it. My first attempt at creating sockets (r346894) used FUSE_CREATE because FreeBSD uses VOP_CREATE for this purpose. There are no backwards-compatibility concerns with this change, because socket support hasn't yet been merged to head.
Sponsored by: The FreeBSD Foundation
show more ...
|
#
002e54b0 |
| 09-May-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: clear a dir's attr cache when its contents change
Any change to a directory's contents should cause its mtime and ctime to be updated by the FUSE daemon. Clear its attribute cache so we'll
fusefs: clear a dir's attr cache when its contents change
Any change to a directory's contents should cause its mtime and ctime to be updated by the FUSE daemon. Clear its attribute cache so we'll get the new attributs the next time that they're needed. This affects the following VOPs: VOP_CREATE, VOP_LINK, VOP_MKDIR, VOP_MKNOD, VOP_REMOVE, VOP_RMDIR, and VOP_SYMLINK
Reported by: pjdfstest Sponsored by: The FreeBSD Foundation
show more ...
|
Revision tags: vendor/device-tree/5.1 |
|
#
3fa12789 |
| 06-May-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: allow ftruncate on files without write permission
ftruncate should succeed as long as the file descriptor is writable, even if the file doesn't have write permission. This is important when
fusefs: allow ftruncate on files without write permission
ftruncate should succeed as long as the file descriptor is writable, even if the file doesn't have write permission. This is important when combined with O_CREAT.
Reported by: pjdfstest Sponsored by: The FreeBSD Foundation
show more ...
|
Revision tags: vendor/Juniper/libxo/1.0.4 |
|
#
a90e32de |
| 06-May-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: clear SUID & SGID after a successful write by a non-owner
Reported by: pjdfstest Sponsored by: The FreeBSD Foundation
|
Revision tags: vendor/sqlite3/sqlite-3280000, vendor/wpa/2.8, vendor/sqlite3/sqlite-3270200 |
|
#
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
|
#
268c28ed |
| 19-Apr-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: give priority to FUSE_INTERRUPT operations
When interrupting a FUSE operation, send the FUSE_INTERRUPT op to the daemon ASAP, ahead of other unrelated operations.
PR: 236530 Sponsored by:
fusefs: give priority to FUSE_INTERRUPT operations
When interrupting a FUSE operation, send the FUSE_INTERRUPT op to the daemon ASAP, ahead of other unrelated operations.
PR: 236530 Sponsored by: The FreeBSD Foundation
show more ...
|