<feed xmlns='http://www.w3.org/2005/Atom'>
<title>src/sys/fs/fuse, branch main</title>
<subtitle>FreeBSD source tree</subtitle>
<id>https://cgit-dev.freebsd.org/src/atom?h=main</id>
<link rel='self' href='https://cgit-dev.freebsd.org/src/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/'/>
<updated>2026-04-20T21:06:57Z</updated>
<entry>
<title>fusefs: better handling for low-memory conditions</title>
<updated>2026-04-20T21:06:57Z</updated>
<author>
<name>Alan Somers</name>
<email>asomers@FreeBSD.org</email>
</author>
<published>2026-03-30T14:22:07Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=374548e930bd9452351059c14e697036d903b1c4'/>
<id>urn:sha1:374548e930bd9452351059c14e697036d903b1c4</id>
<content type='text'>
Under conditions of low memory, getblk can fail.  fusefs was not
handling those failures very systematically.  It was always using
PCATCH, which appears to have been originally copy/pasted from the NFS
client code, but isn't always appropriate:

* During fuse_vnode_setsize_immediate, which can be called from many
  different VOPs and from the vn_delayed_setsize mechanism, remove
  PCATCH.  Some of these callers cannot tolerate allocate failure.

* In fuse_inval_buf_range, don't assume that getblk will always succeed.

* When calling fuse_inval_buf_range from VOP_ALLOCATE,
  VOP_COPY_FILE_RANGE, or VOP_WRITE (with IO_DIRECT), return EINTR if
  the allocation fails.

* When calling fuse_inval_buf_range from VOP_DEALLOCATE, remove PCATCH.
  This VOP must not fail with EINTR.

No new tests, because I can't force any particular getblk call to fail.

PR:		293957
Sponsored by:	ConnectWise
Reported by:	zjk7@wp.pl
MFC after:	1 week
</content>
</entry>
<entry>
<title>fusefs: redo vnode attribute locking</title>
<updated>2026-03-12T16:11:25Z</updated>
<author>
<name>Alan Somers</name>
<email>asomers@FreeBSD.org</email>
</author>
<published>2026-01-23T21:23:51Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=7e68af7ce2c1b892954df415774fe59fd2f1b62f'/>
<id>urn:sha1:7e68af7ce2c1b892954df415774fe59fd2f1b62f</id>
<content type='text'>
Previously most fields in fuse_vnode_data were protected by the vnode
lock.  But because DEBUG_VFS_LOCKS was never enabled by default until
stable/15 the assertions were never checked, and many were wrong.
Others were missing.  This led to panics in stable/15 and 16.0-CURRENT,
when a vnode was expected to be exclusively locked but wasn't, for fuse
file systems that mount with "-o async".

In some places it isn't possible to exclusively lock the vnode when
accessing these fields.  So protect them with a new mutex instead.  This
fixes panics and unprotected field accesses in VOP_READ,
VOP_COPY_FILE_RANGE, VOP_GETATTR, VOP_BMAP, and FUSE_NOTIFY_INVAL_ENTRY.
Add assertions everywhere the protected fields are accessed.

Lock the vnode exclusively when handling FUSE_NOTIFY_INVAL_INODE.

During fuse_vnode_setsize, if the vnode isn't already exclusively
locked, use the vn_delayed_setsize mechanism.  This fixes panics during
VOP_READ or VOP_GETATTR.

Also, ensure that fuse_vnop_rename locks the "from" vnode.

Finally, reorder elements in struct fuse_vnode_data to reduce the
structure size.

Fixes:		283391
Reported by:	kargl, markj, vishwin, Abdelkader Boudih, groenveld@acm.org
MFC after:	2 weeks
Sponsored by:	ConnectWise
Reviewed by:	kib
Differential Revision: https://reviews.freebsd.org/D55230
</content>
</entry>
<entry>
<title>VOP_RENAME(9): add flags argument</title>
<updated>2026-03-05T23:46:53Z</updated>
<author>
<name>Konstantin Belousov</name>
<email>kib@FreeBSD.org</email>
</author>
<published>2026-02-26T18:22:48Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=e486066cf48a89ba87fab6b3d2b56f271f50439b'/>
<id>urn:sha1:e486066cf48a89ba87fab6b3d2b56f271f50439b</id>
<content type='text'>
Reviewed by:	markj
Tested by:	pho
Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
Differential revision:	https://reviews.freebsd.org/D55539
</content>
</entry>
<entry>
<title>fusefs: remove the obsolete rename_lock</title>
<updated>2026-02-22T17:08:27Z</updated>
<author>
<name>Alan Somers</name>
<email>asomers@FreeBSD.org</email>
</author>
<published>2026-02-10T20:45:23Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=7755a406a6ae3801e885a79f714155f97c4d2bc6'/>
<id>urn:sha1:7755a406a6ae3801e885a79f714155f97c4d2bc6</id>
<content type='text'>
This lock was included in the original GSoC submission.  Its purpose
seems to have been to prevent concurrent FUSE_RENAME operations for the
current mountpoint, as well as to synchronize FUSE_RENAME with
fuse_vnode_setparent.  But it's obsolete, now that ef6ea91593e added
mnt_renamelock .

MFC after:	2 weeks
Sponsored by:	ConnectWise
Reviewed by:	kib
Differential Revision: https://reviews.freebsd.org/D55231
</content>
</entry>
<entry>
<title>fusefs: style</title>
<updated>2026-01-24T16:02:44Z</updated>
<author>
<name>Alan Somers</name>
<email>asomers@FreeBSD.org</email>
</author>
<published>2026-01-24T16:02:44Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=52ddca7c2e336ef43f6aadea601f72233b01bbe2'/>
<id>urn:sha1:52ddca7c2e336ef43f6aadea601f72233b01bbe2</id>
<content type='text'>
Reorder macro definitions.
</content>
</entry>
<entry>
<title>fusefs: Implement support for the auto_unmount option kernel-side</title>
<updated>2026-01-24T10:06:16Z</updated>
<author>
<name>Gleb Popov</name>
<email>arrowd@FreeBSD.org</email>
</author>
<published>2025-10-14T16:15:50Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=10037d0978f8b16dc6746b0b942788e5edc6e84f'/>
<id>urn:sha1:10037d0978f8b16dc6746b0b942788e5edc6e84f</id>
<content type='text'>
libfuse clients may pass the "-o auto_unmount" flag to ensure that the mountpoint
will get unmounted even if the server terminate abnormally. Without this flag
sending KILL to a FUSE daemon leaves its mountpoint mounted.

Approved by:	asomers
Differential Revision:	https://reviews.freebsd.org/D53086
</content>
</entry>
<entry>
<title>fusefs: support FUSE_IOCTL</title>
<updated>2026-01-10T00:06:21Z</updated>
<author>
<name>CismonX</name>
<email>admin@cismon.net</email>
</author>
<published>2025-07-05T12:46:27Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=17ba6f428683b661178b50a9d59f8b9e0dd2138a'/>
<id>urn:sha1:17ba6f428683b661178b50a9d59f8b9e0dd2138a</id>
<content type='text'>
MFC After: 1 week
Signed-off-by: CismonX &lt;admin@cismon.net&gt;
Reviewed by: imp
Pull Request: https://github.com/freebsd/freebsd-src/pull/1470
</content>
</entry>
<entry>
<title>fs/fuse: use dedicated category per source file</title>
<updated>2025-12-29T01:16:25Z</updated>
<author>
<name>Konstantin Belousov</name>
<email>kib@FreeBSD.org</email>
</author>
<published>2025-12-28T14:22:36Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=54b52f655e0fdaef21c3cde85e8bf030efa7b86e'/>
<id>urn:sha1:54b52f655e0fdaef21c3cde85e8bf030efa7b86e</id>
<content type='text'>
Submitted by:	mckusick
Reviewed by:	emaste, mckusick
Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
Differential revision:	https://reviews.freebsd.org/D54380
</content>
</entry>
<entry>
<title>fusefs: standardize on OPNOTSUPP for posix_fallocate(2)</title>
<updated>2025-11-05T00:30:58Z</updated>
<author>
<name>Kyle Evans</name>
<email>kevans@FreeBSD.org</email>
</author>
<published>2025-11-05T00:30:58Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=fa393807c57e80a01dde40c668650537490c1eaa'/>
<id>urn:sha1:fa393807c57e80a01dde40c668650537490c1eaa</id>
<content type='text'>
POSIX Issue 7 had allowed EINVAL for this case, but issue 8 moves it
to ENOTSUP instead.  ZFS uses the latter and we have some software in
ports already that's wanting to use that to detect the filesystem not
supporting it, so let's standardize on it.

Reviewed by:	imp (previous version), asomers, kib
Differential Revision:	https://reviews.freebsd.org/D53535
</content>
</entry>
<entry>
<title>fusefs: respect the server's FUSE_SETXATTR_EXT flag</title>
<updated>2025-11-03T17:14:35Z</updated>
<author>
<name>Alan Somers</name>
<email>asomers@FreeBSD.org</email>
</author>
<published>2025-10-26T18:06:51Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=e8449c0e0fcb8a3eb5872cbee5c3dde4b05a5f50'/>
<id>urn:sha1:e8449c0e0fcb8a3eb5872cbee5c3dde4b05a5f50</id>
<content type='text'>
FUSE protocol 7.33 extended the FUSE_SETXATTR request format.  But the
extension is optional.  The server must opt-in by setting the
FUSE_SETXATTR_IN flag during FUSE_INIT.  We were wrongly using the
extended format for any server using protocol 7.33 or later.

PR:		290547
Co-authored-by:	CismonX &lt;admin@cismon.net&gt;
Fixes:		d5e3cf41e89 ("fusefs: Upgrade FUSE protocol to version 7.33")
MFC after:	3 days
</content>
</entry>
</feed>
