[Bug 211674] sysutils/fusefs-ntfs: fuse_vnode leak/reclamation failure

From: <bugzilla-noreply_at_freebsd.org>
Date: Sat, 11 Feb 2023 23:42:50 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=211674

--- Comment #11 from Alan Somers <asomers@FreeBSD.org> ---
Ok, here are the results of my investigations:
1) It's not a problem that the vnode number keeps rising.  The kernel doesn't
reclaim vnodes as soon as all their file descriptors get closed.  Rather, the
vnodes remain allocated just in case the same file system decides it needs to
use some more.  The kernel won't reclaim vnodes until unmount or until it
starts to run low on vnodes, possibly due to activity on some other file
system.

2) It's mostly not a problem that the fuse_msgbuf value keeps rising (but see
caveat below).  Similarly to the vnode situation, uma does not free items as
soon as they are no longer needed.  But it will free them in response to memory
pressure.  See uma(9).

3) There are some actual resource leaks, which can be observed by the value of
"sysctl vfs.fusefs.stats.ticket_count".  Those are probably responsible for
some of the fuse_msgbuf memory consumption, but probably a minority.  I'll work
on fixing these.  The first one I found is in an error path, triggerable by a
malicious server.

4) You probably aren't the only person to notice slow unmounts.  That's
probably why the FUSE protocol describes a BATCH_FORGET operation.  It isn't
implemented in FreeBSD, but probably could be.  I don't know if fuse-ntfs is
able to take advantage.

-- 
You are receiving this mail because:
You are the assignee for the bug.