On Sat, August 12, 2006 16:14, Peter Zijlstra said:
+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.
+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.
Is it needed at all, considering var_free_kbytes already exists?
Greetings,
Indan