Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 22 Jul 2012 14:31:42 +0000 (UTC)
From:      Attilio Rao <attilio@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r238688 - projects/fuse/sys/fs/fuse
Message-ID:  <201207221431.q6MEVgn3094260@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: attilio
Date: Sun Jul 22 14:31:42 2012
New Revision: 238688
URL: http://svn.freebsd.org/changeset/base/238688

Log:
  Handle the case where there are collision in the inode vfs hash struct.
  
  Reported by:	pho
  Tested by:	pho

Modified:
  projects/fuse/sys/fs/fuse/fuse_node.c

Modified: projects/fuse/sys/fs/fuse/fuse_node.c
==============================================================================
--- projects/fuse/sys/fs/fuse/fuse_node.c	Sun Jul 22 13:41:45 2012	(r238687)
+++ projects/fuse/sys/fs/fuse/fuse_node.c	Sun Jul 22 14:31:42 2012	(r238688)
@@ -213,18 +213,13 @@ fuse_vnode_alloc(struct mount *mp,
 	}
 	err = vfs_hash_insert(*vpp, fuse_vnode_hash(nodeid), LK_EXCLUSIVE,
 	    td, &vp2, fuse_vnode_cmp, &nodeid);
-
-	if (err) {
-		fuse_vnode_destroy(*vpp);
-		*vpp = NULL;
+	if (err)
 		return (err);
+	if (vp2 != NULL) {
+		*vpp = vp2;
+		return (0);
 	}
-	/*
-         * XXXIP: Prevent silent vnode reuse. It may happen because several fuse
-         * filesystems ignore inode numbers
-         */
-	KASSERT(vp2 == NULL,
-	    ("vfs hash collision for node #%ju\n", (uintmax_t)nodeid));
+
 	ASSERT_VOP_ELOCKED(*vpp, "fuse_vnode_alloc");
 
 	return (0);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201207221431.q6MEVgn3094260>