Re: [RFC][PATCH] lru_add_drain_all() don't use schedule_on_each_cpu()

Andrew Morton
2008-10-28T20:47:55Z

On Tue, 28 Oct 2008 09:25:31 -0500 (CDT)
Christoph Lameter <cl@linux-foundation.org> wrote:

> On Mon, 27 Oct 2008, Andrew Morton wrote:
>
> > Can we fix that instead?
>
> How about this fix?
>
>
>
> Subject: Move migrate_prep out from under mmap_sem
>
> Move the migrate_prep outside the mmap_sem for the following system calls
>
> 1. sys_move_pages
> 2. sys_migrate_pages
> 3. sys_mbind()
>
> It really does not matter when we flush the lru. The system is free to add
> pages onto the lru even during migration which will make the page
> migration either skip the page (mbind, migrate_pages) or return a busy
> state (move_pages).
>

That looks nicer, thanks. Hopefully it fixes the
lockdep-warning/deadlock...

I guess we should document our newly discovered schedule_on_each_cpu()
problems before we forget about it and later rediscover it.