Page MenuHomeFreeBSD

fusefs: fix an interaction between copy_file_range and mmap
ClosedPublic

Authored by asomers on Jan 13 2024, 10:43 PM.
Tags
None
Referenced Files
F144469039: D43451.id132743.diff
Sun, Feb 8, 2:42 PM
Unknown Object (File)
Sun, Feb 8, 9:01 AM
Unknown Object (File)
Sun, Feb 8, 8:19 AM
Unknown Object (File)
Sat, Feb 7, 1:22 AM
Unknown Object (File)
Thu, Feb 5, 1:16 AM
Unknown Object (File)
Thu, Feb 5, 1:00 AM
Unknown Object (File)
Fri, Jan 30, 8:42 PM
Unknown Object (File)
Wed, Jan 21, 2:02 AM
Subscribers

Details

Summary

If a copy_file_range operation tries to read from a page that was
previously written via mmap, that page must be flushed first.

MFC after: 2 weeks

Test Plan

two test cases added to the fusefs test suite

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

sys/fs/fuse/fuse_vnops.c
912

Indent is strange.

I suggest to use (newly added) vnode_pager_clear_sync() instead, I do not think that possible optimization of flushing a range is significant there.

  • Use vnode_pager_clean_sync
This revision is now accepted and ready to land.Jan 15 2024, 9:53 PM