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

Reply via email to