[Bug 291064] locking bug in fuse_vnop_read()
| Newsgroups | gmane.os.freebsd.devel.file-systems |
|---|---|
| Message-ID | <[email protected]/bugzilla/> |
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=291064 Konstantin Belousov <[email protected]> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |[email protected] --- Comment #8 from Konstantin Belousov <[email protected]> --- It seems that fusefs tries to modify the internal attr cache on read, and cache correctly asserts that the vnode is exclusively locked. While it is not for reads. NFS have has a similar issue, and fixing it was not easy. Try the following. It should cover the issue at hand, but might cause something else, I have no idea about the fusefs code. (And the comment is completely wrong). diff --git a/sys/fs/fuse/fuse_node.c b/sys/fs/fuse/fuse_node.c index 742dc66bcafc..bc47562d79db 100644 --- a/sys/fs/fuse/fuse_node.c +++ b/sys/fs/fuse/fuse_node.c @@ -264,9 +264,11 @@ fuse_vnode_alloc(struct mount *mp, *vpp = NULL; return (err); } +#if 0 /* Disallow async reads for fifos because UFS does. I don't know why */ if (data->dataflags & FSESS_ASYNC_READ && vtyp != VFIFO) VN_LOCK_ASHARE(*vpp); +#endif vn_set_state(*vpp, VSTATE_CONSTRUCTED); err = vfs_hash_insert(*vpp, fuse_vnode_hash(nodeid), LK_EXCLUSIVE, -- You are receiving this mail because: You are the assignee for the bug.