Besides reducing code duplication, for the object case this avoids needlessly executing some code when a reservation is broken to release pages.
Details
Diff Detail
- Repository
- rG FreeBSD src repository
- Lint
Lint Not Applicable - Unit
Tests Not Applicable
Event Timeline
This change does slightly reduce the code size:
dougm@108-254-203-204:GENERIC $ size orig.vm_page.o
text data bss dec hex filename 50782 25808 13424 90014 0x15f9e orig.vm_page.o
dougm@108-254-203-204:GENERIC $ size vm_page.o
text data bss dec hex filename 50670 25808 13424 89902 0x15f2e vm_page.o
sys/vm/vm_page.c | ||
---|---|---|
2195 | This partial sentence should be reformulated now, I believe. Out of old context it is not sufficient, and should be a normal sentence. | |
2208 | Now in vm_page_alloc_contig_domain(), this would loop without retrying vm_reserv_alloc_contig(). Was it intended? From the commit message it seems so, but vm_domain_alloc_fail() drops object lock which might change the disposition for reservations? |
sys/vm/vm_page.c | ||
---|---|---|
2208 | It was intended. Now, if vm_reserv_reclaim_contig returns true, control goes to vm_reserv_object && vm_reserv_alloc_contig without a call to vm_domain_alloc_fail, so the object lock would not have been dropped, and the vm_reserv_alloc_contig call will fail a second time. |