Re: [-mm][PATCH 4/5] core of reclaim throttle

From: KOSAKI Motohiro
Date: Mon May 05 2008 - 18:23:29 EST


> > + throttle_on = 1;
> > + current->flags |= PF_RECLAIMING;
> > + wait_event(zone->reclaim_throttle_waitq,
> > + atomic_add_unless(&zone->nr_reclaimers, 1, MAX_RECLAIM_TASKS));
>
> This is a problem. Processes without __GFP_FS or __GFP_IO cannot wait on
> processes that have those flags set in their gfp_mask, and tasks that do
> not have __GFP_IO set cannot wait for tasks with it. This is because the
> tasks that have those flags set may grab locks that the tasks without the
> flag are holding, causing a deadlock.

hmmm, AFAIK,
on current kernel, sometimes __GFP_IO task wait for non __GFP_IO task
by lock_page().
Is this wrong?

therefore my patch care only recursive reclaim situation.
I don't object to your opinion. but I hope understand exactly your opinion.

> The easiest fix would be to only make tasks with both __GFP_FS and __GFP_IO
> sleep. Tasks that call try_to_free_pages without those flags are relatively
> rare and should hopefully not cause any issues.

Agreed it's easy.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/