Subject: Re: [RFC][PATCH 2/9] deadlock prevention core

From: Daniel Phillips <[email-masked]>
Date: Sun, 13 Aug 2006 15:05:25 -0700

Rik van Riel wrote:
> Thomas Graf wrote:
>> skb->dev is not guaranteed to still point to the "allocating" device
>> once the skb is freed again so reserve/unreserve isn't symmetric.
>> You'd need skb->alloc_dev or something.
> 
> There's another consequence of this property of the network
> stack.
> 
> Every network interface must be able to fall back to these
> MEMALLOC allocations, because the memory critical socket
> could be on another network interface.  Hence, we cannot
> know which network interfaces should (not) be marked MEMALLOC.

Good point.  We do however know which interfaces should be marked
capable of carrying block IO traffic: the ones that have been fixed,
audited and tested.  We might then allow the network block device to
specify which interface(s) will actually carry the traffic.

The advantage of being specific about which devices are carrying at
least one block io socket is, we can skip the reserve accounting for
the other interfaces.  But is the extra layer of configuration gack a
better idea than just doing the accounting for every device, provided
the system is in reclaim?

By the way, another way to avoid impact on the normal case is an
experimental option such as CONFIG_PREVENT_NETWORK_BLOCKIO_DEADLOCK.

Regards,

Daniel