During vm_page_cache()'s call to vm_radix_insert(), if vm_page_alloc() was called to allocate a new page of radix trie nodes, there could be a call to vm_radix_remove() on the same trie (of PG_CACHED pages) as the in-progress vm_radix_insert(). With the removal of PG_CACHED pages, we can simplify vm_radix_insert() and vm_radix_remove() by removing the flags on the root of the trie that were used to detect this case and the code for restarting the vm_radix_insert() at the trie's root when it happened.
Details
Details
Diff Detail
Diff Detail
- Repository
- rS FreeBSD src repository - subversion
- Lint
Lint Not Applicable - Unit
Tests Not Applicable
Event Timeline
Comment Actions
Three of the pmap implementations use radix tries to maintain a collection of page table pages. I found that none of them ever initialized the "rt_flags" field. A radix trie root is initialized by direct assignment to its field(s) in the user, and not with a "method".
Comment Actions
The i386 problem seen is unrelated to this patch.
So to conclude: No problems found with this patch.