History log of /dragonfly/sys/vfs/fuse/fuse_util.c (Results 1 – 2 of 2)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 1a8e5e4c 16-Mar-2024 Matthew Dillon <dillon@apollo.backplane.com>

sys/vfs/fuse: Fix a ton more stuff

* Remove all the fuse_dent code. It is no longer needed.

* Remove signal mask wrappers. tsleep() isn't passing PCATCH so
signals are basically ignored.

* Add

sys/vfs/fuse: Fix a ton more stuff

* Remove all the fuse_dent code. It is no longer needed.

* Remove signal mask wrappers. tsleep() isn't passing PCATCH so
signals are basically ignored.

* Add missing required FUSE_RELEASE operations (paired with CREATE/OPEN)

* Add missing required FUSE_FORGET operations (paired with LOOKUPs).
"." and ".." are not recorded by userland and do not need to be
forgotten (will confuse userland if they are).

* No reply is expected from FUSE_FORGET RPCs, add infrastructure to
handle this case.

* Index fuse_node's by their inode number, which greatly improves
hardlink handling.

* Properly store the file-handle for CREATE operations so we can
release it later (fixes some dangling .fuse_hidden* files).

* Flush the vnode and issue a FUSE_RELEASE when removing a file,
including in the rename-over-file case, if the file is no longer
open. Otherwise cached vnodes that have not yet been reclaimed
will interfere with the removal and cause the fuse userland to
create a .fuse_hidden* file.

NOTE: RELEASE operations still need a bit of work. The v_opencount
test in the file removal path is not sufficient, but we had
to close RELEASEs there for the general case to avoid many
annoying cases where .fuse_hidden* files are created.

show more ...


Revision tags: v6.4.0, v6.4.0rc1, v6.5.0, v6.2.2, v6.2.1, v6.2.0, v6.3.0, v6.0.1, v6.0.0, v6.0.0rc1, v6.1.0, v5.8.3, v5.8.2, v5.8.1, v5.8.0, v5.9.0, v5.8.0rc1, v5.6.3, v5.6.2, v5.6.1, v5.6.0, v5.6.0rc1, v5.7.0, v5.4.3, v5.4.2
# 5812c3cc 31-Mar-2019 Tomohiro Kusumi <kusumi.tomohiro@gmail.com>

sys/vfs/fuse: Add initial FUSE support

The basic code design comes from FreeBSD, but the code is written
from scratch. It was just easier to write from scratch than trying to
port sys/fs/fuse/* in F

sys/vfs/fuse: Add initial FUSE support

The basic code design comes from FreeBSD, but the code is written
from scratch. It was just easier to write from scratch than trying to
port sys/fs/fuse/* in FreeBSD for various reasons. Note that this is
to implement FUSE API/ABI, but not to be compatible with FreeBSD
implementation which contains FreeBSD specific sysctls, etc.

The initial version doesn't support FUSE_WRITE by disabling
VOP_WRITE() by returning EOPNOTSUPP. It currently works with simple
write(2) calls like dd(1) via direct I/O, but not when syncer thread
or mmap(2) gets involved under non trivial conditions. It looks to
be doable with custom VOP_GETPAGES() and VOP_PUTPAGES(), but if not
then it requires some changes to sys/kern/* and sys/vm/* to properly
support writes.

Besides above, this initial version supports basic FUSE operations
invoked from file related system calls via FUSE VOP's, but not things
like FUSE_IOCTL, FUSE_POLL, FUSE_FALLOCATE, etc. Although dmesg says
FUSE 7.28, don't expect it to support everything 7.28 (or anywhere
close to 7.28) says it has.

FUSE will be dropped from DragonFly releases until it gets stabilized
to certain extent including above, at least for write support.

show more ...