mirror of
https://github.com/freebsd/freebsd-src
synced 2024-10-17 13:53:39 +00:00
a62772a78e
If a FUSE server returns FOPEN_DIRECT_IO in response to FUSE_OPEN, that instructs the kernel to bypass the page cache for that file. This feature is also known by libfuse's name: "direct_io". However, when accessing a file via mmap, there is no possible way to bypass the cache completely. This change fixes a deadlock that would happen when an mmap'd write tried to invalidate a portion of the cache, wrongly assuming that a write couldn't possibly come from cache if direct_io were set. Arguably, we could instead disable mmap for files with FOPEN_DIRECT_IO set. But allowing it is less likely to cause user complaints, and is more in keeping with the spirit of open(2), where O_DIRECT instructs the kernel to "reduce", not "eliminate" cache effects. PR: 247276 Reported by: trapexit@spawn.link Reviewed by: cem MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D26485 |
||
---|---|---|
.. | ||
acl | ||
aio | ||
audit | ||
auditpipe | ||
capsicum | ||
cddl | ||
common | ||
devrandom | ||
fifo | ||
file | ||
fs | ||
geom | ||
kern | ||
kqueue | ||
mac | ||
mqueue | ||
net | ||
netinet | ||
netinet6 | ||
netipsec | ||
netmap | ||
netpfil | ||
opencrypto | ||
pjdfstest | ||
posixshm | ||
sys | ||
vfs | ||
vm | ||
Makefile | ||
Makefile.depend | ||
Makefile.inc |