cvs commit: src/sys/netinet in_pcb.c tcp_subr.c tcp_timer.c tcp_var.h

Robert Watson rwatson at FreeBSD.org
Tue Sep 12 04:39:20 PDT 2006


On Tue, 12 Sep 2006, Mike Silbersack wrote:

> On Mon, 11 Sep 2006, Gleb Smirnoff wrote:
>
>> The UMA zone can't be made smaller than it is, while IP port ranges can 
>> vary in both directions.
>
> Hm, it can't be made smaller because we're using UMA_ZONE_NOFREE... why are 
> we using that?  Shouldn't locking handle that, rwatson? :)

This is necessary due to the sysctl monitoring model.  If you read the sysctl 
code for various socket types closely, you'll see that it builds a list of 
pointers to sockets to export data on, but because the quantity of data may be 
significant, it releases the global pcb list lock for the protocol after 
building the list.  This is alright because the memory is type-stable, and 
because of the generation counter.  Stephan and I have been discussing 
removing this, but have been working our way through some other issues first. 
However, if we do remove it, an alternative approach is needed to dealing with 
very large socket lists.  We would both like to be able to reclaim pcb memory, 
though.

Robert N M Watson
Computer Laboratory
University of Cambridge


More information about the cvs-all mailing list