The removal of vm_fault_additional_pages() means that a hard fault on a
OBJT_SWAP-backed page will cause exactly one page to be read in. This
change restores readahead and readbehind for the swap pager in
swap_pager_getpages(). haspages() is modified to return the largest
contiguous non-resident range of pages in the swap block containing the
requested range.
Details
Details
- Reviewers
kib alc glebius - Commits
- rS305056: Restore swap pager readahead after r292373.
Diff Detail
Diff Detail
- Repository
- rS FreeBSD src repository - subversion
- Lint
Lint Not Applicable - Unit
Tests Not Applicable
Event Timeline
sys/vm/swap_pager.c | ||
---|---|---|
1093 ↗ | (On Diff #19766) | May be, assert that the object paging count > 0 there ? I wonder should we increment it locally instead of relying on the caller. |
sys/vm/swap_pager.c | ||
---|---|---|
1093 ↗ | (On Diff #19766) | Hm, I deleted the comment that references the pip reference because I thought it wasn't true in all cases. For instance, a tmpfs read may page in from swap via uiomove_object_page(), but it looks like the paging count will be 0 in this case, and the stability of the backing store is instead provided by the vnode lock. Is this incorrect? |