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
Unknown Object (File)
Sun, May 26, 3:09 PM
Unknown Object (File)
Sun, May 26, 1:18 AM
Unknown Object (File)
Sun, May 12, 4:21 AM
Unknown Object (File)
Fri, May 10, 4:41 PM
Unknown Object (File)
Fri, May 10, 4:41 PM
Unknown Object (File)
Fri, May 10, 8:39 AM
Unknown Object (File)
Apr 29 2024, 2:14 AM
Unknown Object (File)
Apr 27 2024, 6:29 PM
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 Passed
Unit
No Test Coverage
Build Status
Buildable 55431
Build 52320: arc lint + arc unit

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