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

KOSAKI Motohiro
2008-10-24T04:55:00Z

> >
> > Actually, schedule_on_each_cpu() is very problematic function.
> > it introduce the dependency of all worker on keventd_wq,
> > but we can't know what lock held by worker in kevend_wq because
> > keventd_wq is widely used out of kernel drivers too.
> >
> > So, the task of any lock held shouldn't wait on keventd_wq.
> > Its task should use own special purpose work queue.
>
> I don't see a better way to solve it, other than avoiding lru_add_drain_all

Well,

Unfortunately, lru_add_drain_all is also used some other VM place
(page migration and memory hotplug).
and page migration's usage is the same of this mlock usage.
(1. grab mmap_sem 2. call lru_add_drain_all)

Then, change mlock usage isn't solution ;-)