svn commit: r364465 - in head/sys: conf net net/route

Alexander V. Chernikov melifaro at freebsd.org
Wed Sep 9 21:47:40 UTC 2020


09.09.2020, 07:13, "Andriy Gapon" <avg at freebsd.org>:
> On 09/09/2020 00:50, Alexander V. Chernikov wrote:
>>  08.09.2020, 21:03, "Andriy Gapon" <avg at freebsd.org>:
>>>  On 22/08/2020 00:34, Alexander V. Chernikov wrote:
>>>>   Author: melifaro
>>>>   Date: Fri Aug 21 21:34:52 2020
>>>>   New Revision: 364465
>>>>   URL: https://svnweb.freebsd.org/changeset/base/364465
>>>>
>>>>   Log:
>>>>     Make net.fibs growable.
>>>>
>>>>     Allow to dynamically grow the amount of fibs in each vnet.
>>>>
>>>>     This change alters current behavior. Currently, if one defines
>>>>      ROUTETABLES > 1 in the kernel config, each vnet will be created
>>>>      with the number of fibs defined in the kernel config.
>>>>      After this commit vnets will be created with fibs=1.
>>>>
>>>>     Dynamic net.fibs is not compatible with net.add_addr_allfibs.
>>>>      The plan is to deprecate the latter and make
>>>>      net.add_addr_allfibs=0 default behaviour.
>>>>
>>>>     Reviewed by: glebius
>>>>     Relnotes: yes
>>>>     Differential Revision: https://reviews.freebsd.org/D26062
>>>
>>>  I wonder why no one reported a problem that I am seeing after upgrading past
>>>  this revision. Maybe because I do have net.fibs=2 in my loader.conf?
>>  Hi Andriy,
>>
>>  Does r365475 fix the problem for you?
>>  CTLFLAG_RWTUN flag got slipped through the cracks somewhere :-(
>
> I am not sure that it does, I haven't tried it, but I agree with Ryan's comment.
It should.
> In general, I would keep CTLFLAG_RWTUN as the knob is a tunable indeed and some
> tools query that flag.
Thanks for the suggestion, I've updated the params to include CTLFLAG_NOFETCH in r365517.
> So, I would like to re-iterate my earlier suggestion to use CTLFLAG_NOFETCH
> paired with explicit TUNABLE_INT_FETCH (which seems to be there already).
>
>>>  The problem -- unfortunately I only have a screenshot -- but it's a page fault
>>>  trap in this call chain:
>>>  sysctl_register_all -> sysctl_load_tunable_by_oid_locked -> sysctl_fibs ->
>>>  _sx_xlock.
>>>
>>>  The crash is on the RTABLES_LOCK() line.
>>>  And it's kind of obvious why.
>>>
>>>  The tunables, including net.fibs which is declared as RWTUN, are set at
>>>  SI_SUB_TUNABLES stage, but RTABLES_LOCK_INIT() is not called until
>>>  SI_SUB_PROTO_DOMAIN much later. In other words, sysctal_fibs can be called
>>>  earlier than vnet_rtables_init.
>>>
>>>  I think that the best way to handle the problem would be to add CTLFLAG_NOFETCH
>>>  to the sysctl declaration and then to add -- if necessary at all -- an explicit
>>>  query of the kenv.
>>>
>>>  --
>>>  Andriy Gapon
>
> --
> Andriy Gapon


More information about the svn-src-all mailing list