]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
fusefs: fix a deadlock in VOP_PUTPAGES
authorAlan Somers <asomers@FreeBSD.org>
Fri, 26 Apr 2019 19:47:43 +0000 (19:47 +0000)
committerAlan Somers <asomers@FreeBSD.org>
Fri, 26 Apr 2019 19:47:43 +0000 (19:47 +0000)
commit9c7ec33162b509dbbf80306d73dd8d47b70369a7
tree4084bf6320ef4e70da77f1561721fe9ecb8f06e7
parent75d5cb29cbf0d54655d75d3061d582a6c841e258
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