#
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 ...
|
#
8eecd9ce |
| 14-Jun-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: enable write clustering
Enable write clustering in fusefs whenever cache mode is set to writeback and the "async" mount option is used. With default values for MAXPHYS, DFLTPHYS, and the fu
fusefs: enable write clustering
Enable write clustering in fusefs whenever cache mode is set to writeback and the "async" mount option is used. With default values for MAXPHYS, DFLTPHYS, and the fuse max_write mount parameter, that means sequential writes will now be written 128KB at a time instead of 64KB.
Also, add a regression test for PR 238565, a panic during unmount that probably affects UFS, ext2, and msdosfs as well as fusefs.
PR: 238565 Sponsored by: The FreeBSD Foundation
show more ...
|
#
2d6bf515 |
| 06-Jun-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: add some explicit tests for FUSE_FORGET
Sponsored by: The FreeBSD Foundation
|
#
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 ...
|
#
bda39894 |
| 27-May-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: set FUSE_WRITE_CACHE when writing from cache
This bit tells the server that we're not sure which uid, gid, and/or pid originated the write. I don't know of a single file system that cares,
fusefs: set FUSE_WRITE_CACHE when writing from cache
This bit tells the server that we're not sure which uid, gid, and/or pid originated the write. I don't know of a single file system that cares, but it's part of the protocol.
Sponsored by: The FreeBSD Foundation
show more ...
|
#
7637cc62 |
| 27-May-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: remove obsolete comments in the tests
Sponsored by: The FreeBSD Foundation
|
#
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 ...
|
#
16bd2d47 |
| 16-May-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: Upgrade FUSE protocol to version 7.9.
This commit upgrades the FUSE API to protocol 7.9 and adds unit tests for backwards compatibility with servers built for version 7.8. It doesn't implem
fusefs: Upgrade FUSE protocol to version 7.9.
This commit upgrades the FUSE API to protocol 7.9 and adds unit tests for backwards compatibility with servers built for version 7.8. It doesn't implement any of 7.9's new features yet.
Sponsored by: The FreeBSD Foundation
show more ...
|
#
3429092c |
| 12-May-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: support kqueue for /dev/fuse
/dev/fuse was already pollable with poll and select. Add support for kqueue, too. And add tests for polling with poll, select, and kqueue.
Sponsored by: The F
fusefs: support kqueue for /dev/fuse
/dev/fuse was already pollable with poll and select. Add support for kqueue, too. And add tests for polling with poll, select, and kqueue.
Sponsored by: The FreeBSD Foundation
show more ...
|
#
a87257ac |
| 09-May-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: shorten and consolidate sleeps
Some fusefs tests must sleep because they deliberately trigger a race, or because they're testing the cache timeout functionality. Consolidate the sleep inter
fusefs: shorten and consolidate sleeps
Some fusefs tests must sleep because they deliberately trigger a race, or because they're testing the cache timeout functionality. Consolidate the sleep interval in a single place so it will be easy to adjust. Shorten it from either 500ms or 250ms to 100ms. From experiment I find that 10ms works every time, so 100ms should be fairly safe.
Sponsored by: The FreeBSD Foundation
show more ...
|
#
61b0a927 |
| 04-May-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: use effective gid, not real gid, for FUSE operations
This is the gid used for stuff like setting the group of a newly created file.
Reported by: pjdfstest Sponsored by: The FreeBSD Foundati
fusefs: use effective gid, not real gid, for FUSE operations
This is the gid used for stuff like setting the group of a newly created file.
Reported by: pjdfstest Sponsored by: The FreeBSD Foundation
show more ...
|
#
474ba6fa |
| 01-May-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: fix some permission checks with -o default_permissions
When mounted with -o default_permissions fusefs is supposed to validate all permissions in the kernel, not the file system. This commi
fusefs: fix some permission checks with -o default_permissions
When mounted with -o default_permissions fusefs is supposed to validate all permissions in the kernel, not the file system. This commit fixes two permissions that I had previously overlooked.
* Only root may chown a file * Non-root users may only chgrp a file to a group to which they belong
PR: 216391 Sponsored by: The FreeBSD Foundation
show more ...
|
#
a1542146 |
| 18-Apr-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: improvements to interruptibility
* If a process receives a fatal signal while blocked on a fuse operation, return ASAP without waiting for the operation to complete. But still send the
fusefs: improvements to interruptibility
* If a process receives a fatal signal while blocked on a fuse operation, return ASAP without waiting for the operation to complete. But still send the FUSE_INTERRUPT op to the daemon. * Plug memory leaks from r346339
Interruptibility is now fully functional, but it could be better: * Operations that haven't been sent to the server yet should be aborted without sending FUSE_INTERRUPT. * It would be great if write operations could be made restartable. That would require delaying uiomove until the last possible moment, which would be sometime during fuse_device_read. * It would be nice if we didn't have to guess which EAGAIN responses were for FUSE_INTERRUPT operations.
PR: 236530 Sponsored by: The FreeBSD Foundation
show more ...
|
#
ff4fbdf5 |
| 10-Apr-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: WIP supporting -o default_permissions
Normally all permission checking is done in the fuse server. But when -o default_permissions is used, it should be done in the kernel instead. This co
fusefs: WIP supporting -o default_permissions
Normally all permission checking is done in the fuse server. But when -o default_permissions is used, it should be done in the kernel instead. This commit adds appropriate permission checks through fusefs when -o default_permissions is used. However, sticky bit checks aren't working yet. I'll handle those in a follow-up commit.
There are no checks for file flags, because those aren't supported by our version of the FUSE protocol. Nor is there any support for ACLs, though that could be added if there were any demand.
PR: 216391 Reported by: hiyorin@gmail.com Sponsored by: The FreeBSD Foundation
show more ...
|
#
140bb492 |
| 05-Apr-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: correctly return EROFS from VOP_ACCESS
Sponsored by: The FreeBSD Foundation
|
#
35cf0e7e |
| 03-Apr-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: fix a panic in VOP_READDIR
The original fusefs import, r238402, contained a bug in fuse_vnop_close that could close a directory's file handle while there were still other open file descripto
fusefs: fix a panic in VOP_READDIR
The original fusefs import, r238402, contained a bug in fuse_vnop_close that could close a directory's file handle while there were still other open file descriptors. The code looks deliberate, but there is no explanation for it. This necessitated a workaround in fuse_vnop_readdir that would open a new file handle if, "for some mysterious reason", that vnode didn't have any open file handles. r345781 had the effect of causing the workaround to panic, making the problem more visible.
This commit removes the workaround and the original bug, which also fixes the panic.
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 ...
|
#
42d50d16 |
| 28-Mar-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: add a regression test for bug 236844
fusefs should send a FUSE_OPEN for every open(2) so the daemon can validate accesses.
PR: 236844 Sponsored by: The FreeBSD Foundation
|
#
09c01e67 |
| 28-Mar-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: deduplicate code in the allow_other test
Sponsored by: The FreeBSD Foundation
|
#
e0bec057 |
| 27-Mar-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: correctly set fuse_release_in.flags in an error path
fuse_vnop_create must close the newly created file if it can't allocate a vnode. When it does so, it must use the same file flags for FU
fusefs: correctly set fuse_release_in.flags in an error path
fuse_vnop_create must close the newly created file if it can't allocate a vnode. When it does so, it must use the same file flags for FUSE_RELEASE as it used for FUSE_OPEN or FUSE_CREATE.
Reported by: Coverity Coverity CID: 1066204 Sponsored by: The FreeBSD Foundation
show more ...
|
#
91ff3a0d |
| 21-Mar-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: add a test case for the allow_other mount option
Also, fix one of the default_permissions test cases. I forgot the expectation for FUSE_ACCESS, because that doesn't work right now.
Sponsor
fusefs: add a test case for the allow_other mount option
Also, fix one of the default_permissions test cases. I forgot the expectation for FUSE_ACCESS, because that doesn't work right now.
Sponsored by: The FreeBSD Foundation
show more ...
|
#
9821f1d3 |
| 21-Mar-2019 |
Alan Somers <asomers@FreeBSD.org> |
fusefs: adapt the tests to the fuse => fusefs rename
Sponsored by: The FreeBSD Foundation
|