Messages in this thread | | | Date | Fri, 26 Mar 2004 10:43:17 -0500 (EST) | From | Rajesh Venkatasubramanian <> | Subject | Re: [RFC][PATCH 1/3] radix priority search tree - objrmap complexity fix |
| |
Hi Andrea,
There is a problem with the prio_tree merge. As usual it is related to VM_NONLINEAR. When I was reading Hugh's nonlinear patch, I recalled this problem.
Currently, with the prio_tree search in try_to_unmap, you will not check all the nonlinear vmas. Earlier, with a list walk it was not a problem. But, now in try_to_unmap we only select vmas that map a given page. That's meaningless for nonlinear vmas.
I think the fix is straight-forward. My plan is to add a "list_head i_mmap_nonlinear" to the address_space and use the list to find all nonlinear vmas in try_to_unmap_inode.
In sys_remap_file_pages, we can do something like below:
if (!(vma->vm_flags & VM_NONLINEAR)) { /* vma is not already nonlinear */ __vma_prio_tree_remove(&mapping->i_mmap_shared, vma) list_add_tail(&vma->shared.vm_set.list, &mapping->i_mmap_nonlinear); }
Urggh. That forces us to take i_shared_sem in sys_remap_file_pages.
Please let me know if you have any better idea. Otherwise, tonite I will send you a patch for 2.6.5-rc2-aa4.
Thanks, Rajesh
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |