svn commit: r352404 - head/sys/fs/fuse

Alan Somers asomers at FreeBSD.org
Mon Sep 16 14:51:50 UTC 2019


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);


More information about the svn-src-head mailing list