If vm_fault_hold(9) finds wired page after the pager error, do not free it, leave the page to the wire owner. E.g. the page might be a part of the invalidated buffer.
Details
Details
Diff Detail
Diff Detail
- Repository
- rS FreeBSD src repository - subversion
- Lint
Lint Not Applicable - Unit
Tests Not Applicable
Event Timeline
Comment Actions
You are right.
In my case, the race was impossible because this situation (VM_PAGER_BAD) was only observed for the FFS pager, and one wired reference was from the buffer, which explains why the race which you noted did not realized in the tests.
sys/vm/vm_fault.c | ||
---|---|---|
724 ↗ | (On Diff #21185) | Do you need to recheck wire_count after acquiring the page lock? |