]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
fusefs: fix a deadlock in VOP_PUTPAGES
authorasomers <asomers@FreeBSD.org>
Fri, 26 Apr 2019 19:47:43 +0000 (19:47 +0000)
committerasomers <asomers@FreeBSD.org>
Fri, 26 Apr 2019 19:47:43 +0000 (19:47 +0000)
commit570b4e6ddd808fce58de0222b29be038639121b8
tree4084bf6320ef4e70da77f1561721fe9ecb8f06e7
parent002c1a9af5d585eb79a22ea84973379bb9922e53
fusefs: fix a deadlock in VOP_PUTPAGES

As of r346162 fuse now invalidates the cache during writes.  But it can't do
that when writing from VOP_PUTPAGES, because the write is coming _from_ the
cache.  Trying to invalidate the cache in that situation causes a deadlock
in vm_object_page_remove, because the pages in question have already been
busied by the same thread.

PR: 235774
Sponsored by: The FreeBSD Foundation
sys/fs/fuse/fuse_io.c
sys/fs/fuse/fuse_io.h
sys/fs/fuse/fuse_vnops.c