/[base]
ViewVC logotype

Revision 366211


Jump to revision: Previous Next
Author: asomers
Date: Mon Sep 28 00:23:59 2020 UTC (3 years, 9 months ago)
Changed paths: 3
Log Message:
MF stable/12 r366190:

fusefs: fix mmap'd writes in direct_io mode

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
Approved by:	re (gjb)
Reported by:	trapexit@spawn.link
Reviewed by:	cem
Differential Revision:	https://reviews.freebsd.org/D26485


Changed paths

Path Details
Directoryreleng/12.2/ modified , props changed
Directoryreleng/12.2/sys/fs/fuse/fuse_io.c modified , text changed
Directoryreleng/12.2/tests/sys/fs/fusefs/write.cc modified , text changed

  ViewVC Help
Powered by ViewVC 1.1.27