CVSROOT: /cvs Module name: src Changes by: nat...@cvs.openbsd.org 2016/09/07 11:53:35
Modified files: lib/libfuse : fuse_ops.c fuse_private.h fuse_subr.c sys/miscfs/fuse: fuse_lookup.c fuse_vfsops.c fuse_vnops.c fusefs_node.h Log message: Fix fuse node lookups. Currently fusefs nodes in the kernel remember the parent inode number for ".." lookups. This only works until the kernel starts to reuse vnodes and the parent's vnode is reclaimed and the ino to path mapping is removed from the userland process by libfuse. Fix this by using reference counting in libfuse, so that parent mapping are retained as long as a child uses them. Also, don't free the root node. This commit resolves following issue: $ doas fuse-zip ~/Downloads/foo.zip /mnt $ ls /mnt openbsd-www $ grep -IR foo /usr/src > /dev/null # force vfs to reclaim vnodes $ ls /mnt ls: /mnt: No such file or directory $ ok tedu