Re: [RFC][PATCH 3/4] deadlock prevention core
From: Peter Zijlstra <hidden>
Date: 2006-08-12 17:45:58
Also in:
linux-mm, lkml
From: Peter Zijlstra <hidden>
Date: 2006-08-12 17:45:58
Also in:
linux-mm, lkml
On Sat, 2006-08-12 at 19:31 +0200, Indan Zupancic wrote:
On Sat, August 12, 2006 16:14, Peter Zijlstra said:quoted
+struct sk_buff *__alloc_skb(unsigned int size, gfp_t gfp_mask, int fclone) +{ + struct sk_buff *skb; + + skb = ___alloc_skb(size, gfp_mask & ~__GFP_MEMALLOC, fclone); + + if (!skb && (gfp_mask & __GFP_MEMALLOC) && memalloc_skbs_available()) + skb = ___alloc_skb(size, gfp_mask, fclone); + + return skb; +} +I'd drop the memalloc_skbs_available() check, as that's already done by ___alloc_skb.
Right, thanks. Hmm, its the last occurence of that function, even better.
quoted
+static DEFINE_SPINLOCK(memalloc_lock); +static int memalloc_socks; +static unsigned long memalloc_reserve;Why is this a long? adjust_memalloc_reserve() takes an int.
Euhm, right :-) long comes naturaly when I think about quantities op pages. The adjust_memalloc_reserve() argument is an increment, a delta; perhaps I should change that to long.
Is it needed at all, considering var_free_kbytes already exists?
Having them separate would allow ajust_memalloc_reserve() to be used by other callers too (would need some extra locking).