Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 24 Jan 2007 08:46:02 -0500
From:      Randall Stewart <rrs@cisco.com>
To:        Luigi Rizzo <rizzo@icir.org>
Cc:        freebsd-net <freebsd-net@freebsd.org>
Subject:   Re: mbuf patch with sysctl suggestions too
Message-ID:  <45B7631A.3070001@cisco.com>
In-Reply-To: <20070124051050.A56064@xorpc.icir.org>
References:  <45B679F3.3080407@cisco.com> <20070124051050.A56064@xorpc.icir.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Luigi Rizzo wrote:
> On Tue, Jan 23, 2007 at 04:11:15PM -0500, Randall Stewart wrote:
>> Hi all:
>>
>> Here is iteration 2 of the mbuf patch with limits I
>> proposed.
>>
>> Also note the changes for sysctl stuff that Lugi suggested.
>> Please let me know what you think :-)
> 
> ...
>> +	newnmbjclusters = nmbjumbop;
>> +	error = sysctl_int_checked(oidp, &newnmbjclusters, nmbjumbop, 
>> +           SYSCTL_NO_LIMIT, req);
> 
> A few things here:
> - i don't see much of a point in defining SYSCTL_NO_LIMIT;
>   UINT32_MAX would do perfectly there, and i think it is easier
>   to understand than SYSCTL_NO_LIMIT (which looks like a flag).
> 

ok
> - here and in other places you do not allow decresaing the value
>   (by putting min = nmbjumbop etc.), and i am not sure why.
>   I understand a reasonable lower bound, but i guess the worst
>   that can happen, when you reduce the limit to something above
>   the current allocation, is that nothing is allocated until
>   you go again below the limit, right ?

Well.. no I believe someone (was in Lin) mentioned that
you can get a live-lock if you allow a reduction.. and
thus the mbuf clusters were NOT allowed to be reduced..



>   
> - given that you don't use the new value if error != 0, perhaps
>   you can save the assignment newnmbjclusters = nmbjumbop;
> 

ok


> And below:
> 
>> +/*
>> + * Handle an int, unsigned, but limited
>> + * between min and max (unsigned)
>> + * Two cases:
>> + *     a variable:  point arg1 at it.
>> + *     a constant:  pass it in arg2.
>> + * 
>> + */
>> +
>> +extern int nmbjumbo9;
>> +
>> +int
>> +sysctl_int_checked(struct sysctl_oid *oidp, void *val, uint32_t min, uint32_t max, struct sysctl_req *req)
>> +{
> 
> the comment refers to something else and should be fixed e.g.
> 
> 	Handle an unsigned int variable with bound checking.
> 	Returns 0 (and updates *val) if min <= v <= max;
> 	returns EINVAL otherwhise (in which case *val is unchanged)
> 

Cool.. but as I said, Andre wants me to wait on this.. so
I will :-)

R

-- 
Randall Stewart
NSSTG - Cisco Systems Inc.
803-345-0369 <or> 803-317-4952 (cell)



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?45B7631A.3070001>