Lazily write inode timestamps to FUSE

Before this, the FUSE daemon receives a setattr inode timestamp
request for every write request. This can be crippling for write
performance or read performance during writes especially random
writes where the write back cache does not effectively coagulate
requests.

We now add the MS_LAZYTIME mount flag
(http://man7.org/linux/man-pages/man2/mount.2.html) to lazily flush
the timestamp updates from memory to disk

Test: m
Bug: 135341433
Change-Id: I95a467d5682a325b4099f32634d93ed2921f815e
This commit is contained in:
Zim 2019-09-26 16:06:05 +01:00
parent 981222f500
commit aeb87efb1f

View file

@ -1023,7 +1023,8 @@ int MountUserFuse(userid_t user_id, const std::string& relative_path,
const int result_int =
TEMP_FAILURE_RETRY(mount("/dev/fuse", path.c_str(), "fuse",
MS_NOSUID | MS_NODEV | MS_NOEXEC | MS_NOATIME, opts.c_str()));
MS_NOSUID | MS_NODEV | MS_NOEXEC | MS_NOATIME | MS_LAZYTIME,
opts.c_str()));
if (result_int != 0) {
PLOG(ERROR) << "Failed to mount " << path;
return -errno;