Messages in this thread | | | Date | Fri, 9 May 2008 11:00:22 -0700 (PDT) | From | Christoph Lameter <> | Subject | Re: Spinlocks waiting with interrupts disabled / preempt disabled. |
| |
On Fri, 9 May 2008, Peter Zijlstra wrote:
> > A third solution would be to look at this problem on a case-by-case > > basis. In the case under discussion, there may be other kernel bugs > > that aggravate the problem (it is an old kernel after all) and maybe > > this just means the address_space.tree_lock ought to be replaced with > > something else (though I wouldn't claim to know what). > > That has been done by Nick Piggin, the lockless pagecache work removes > the read side of the tree_lock.
When is that going to get merged? find_get_page is still:
struct page * find_get_page(struct address_space *mapping, pgoff_t offset) { struct page *page;
read_lock_irq(&mapping->tree_lock); page = radix_tree_lookup(&mapping->page_tree, offset); if (page) page_cache_get(page); read_unlock_irq(&mapping->tree_lock); return page; } EXPORT_SYMBOL(find_get_page);
| |