Author: asomers
Date: Mon Sep 16 14:51:49 2019
New Revision: 352404
URL: https://svnweb.freebsd.org/changeset/base/352404

Log:
  fusefs: fix some minor issues with fuse_vnode_setparent
  
  * When unparenting a vnode, actually clear the flag. AFAIK this is basically
    a no-op because we only unparent a vnode when reclaiming it or when
    unlinking.
  
  * There's no need to call fuse_vnode_setparent during reclaim, because we're
    about to free the vnode data anyway.
  
  Reviewed by:  emaste
  MFC after:    2 weeks
  Sponsored by: The FreeBSD Foundation
  Differential Revision:        https://reviews.freebsd.org/D21630

Modified:
  head/sys/fs/fuse/fuse_node.h
  head/sys/fs/fuse/fuse_vnops.c

Modified: head/sys/fs/fuse/fuse_node.h
==============================================================================
--- head/sys/fs/fuse/fuse_node.h        Mon Sep 16 14:51:24 2019        
(r352403)
+++ head/sys/fs/fuse/fuse_node.h        Mon Sep 16 14:51:49 2019        
(r352404)
@@ -174,6 +174,8 @@ fuse_vnode_setparent(struct vnode *vp, struct vnode *d
                MPASS(dvp->v_type == VDIR);
                VTOFUD(vp)->parent_nid = VTOI(dvp);
                VTOFUD(vp)->flag |= FN_PARENT_NID;
+       } else {
+               VTOFUD(vp)->flag &= ~FN_PARENT_NID;
        }
 }
 

Modified: head/sys/fs/fuse/fuse_vnops.c
==============================================================================
--- head/sys/fs/fuse/fuse_vnops.c       Mon Sep 16 14:51:24 2019        
(r352403)
+++ head/sys/fs/fuse/fuse_vnops.c       Mon Sep 16 14:51:49 2019        
(r352404)
@@ -1525,11 +1525,10 @@ fuse_vnop_reclaim(struct vop_reclaim_args *ap)
                fuse_filehandle_close(vp, fufh, td, NULL);
        }
 
-       if ((!fuse_isdeadfs(vp)) && (fvdat->nlookup)) {
+       if (!fuse_isdeadfs(vp) && fvdat->nlookup > 0) {
                fuse_internal_forget_send(vnode_mount(vp), td, NULL, VTOI(vp),
                    fvdat->nlookup);
        }
-       fuse_vnode_setparent(vp, NULL);
        cache_purge(vp);
        vfs_hash_remove(vp);
        fuse_vnode_destroy(vp);
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to