Messages in this thread | | | Date | Tue, 14 Sep 2010 20:30:18 -0400 | From | Rik van Riel <> | Subject | Re: Deadlock possibly caused by too_many_isolated. |
| |
On 09/14/2010 07:11 PM, Neil Brown wrote:
> Index: linux-2.6.32-SLE11-SP1/mm/vmscan.c > =================================================================== > --- linux-2.6.32-SLE11-SP1.orig/mm/vmscan.c 2010-09-15 08:37:32.000000000 +1000 > +++ linux-2.6.32-SLE11-SP1/mm/vmscan.c 2010-09-15 08:38:57.000000000 +1000 > @@ -1106,6 +1106,11 @@ static unsigned long shrink_inactive_lis > /* We are about to die and free our memory. Return now. */ > if (fatal_signal_pending(current)) > return SWAP_CLUSTER_MAX; > + if (!(sc->gfp_mask& __GFP_IO)) > + /* Not allowed to do IO, so mustn't wait > + * on processes that might try to > + */ > + return SWAP_CLUSTER_MAX; > } > > /*
Close. We must also be sure that processes without __GFP_FS set in their gfp_mask do not wait on processes that do have __GFP_FS set.
Considering how many times we've run into a bug like this, I'm kicking myself for not having thought of it :(
-- All rights reversed
| |