svn commit: r238688 - projects/fuse/sys/fs/fuse
Attilio Rao
attilio at FreeBSD.org
Sun Jul 22 14:31:43 UTC 2012
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);
More information about the svn-src-projects
mailing list