In vm_phys_alloc_queues_contig, in the case that a sequence of max-order blocks are sought to fulfill an allocation, a sequence is ruled out if it does not have enough max-order blocks to satisfy the allocation. However, there may be smaller blocks of free memory that follow the last max-order block in the sequence, and they may be big enough complete the allocation request, so check for that possibility before giving up on that block sequence.
Details
Details
Diff Detail
Diff Detail
- Lint
Lint Skipped - Unit
Tests Skipped
Event Timeline
Comment Actions
This looks right to me.
sys/vm/vm_phys.c | ||
---|---|---|
1420 | It would be helpful to have a comment explaining what this loop does. |
sys/vm/vm_phys.c | ||
---|---|---|
1411 |
Comment Actions
I'm not sure how much testing is required for this patch.
I ran the three contigmalloc(9) tests I have in a loop for four hours. I followed up with a few hours of random stress2 tests.
No problems seen.