Date: Wed, 19 Apr 2023 10:31:42 +0800 From: Zhenlei Huang <zlei@FreeBSD.org> To: Hans Petter Selasky <hps@selasky.org>, Gleb Smirnoff <glebius@FreeBSD.org> Cc: freebsd-current@freebsd.org Subject: Re: Is it valid to combine CTLFLAG_TUN with CTLFLAG_VNET ? Message-ID: <2CFA5EBD-ABEB-4D22-9D9A-50725168112E@FreeBSD.org> In-Reply-To: <263045d4-409a-8a2d-87e1-50b1afcb7338@selasky.org> References: <94C1B333-9C0F-4874-BBB1-3E72F3DF3F6A@FreeBSD.org> <9dc65578-9312-1139-932f-396bc42e66b2@selasky.org> <ZC28li9kOc5e4rbc@FreeBSD.org> <b2338626-4f3a-d0f8-ce6b-365b8e393fec@selasky.org> <263045d4-409a-8a2d-87e1-50b1afcb7338@selasky.org>
index | next in thread | previous in thread | raw e-mail
[-- Attachment #1 --] > On Apr 6, 2023, at 3:56 AM, Hans Petter Selasky <hps@selasky.org> wrote: > > On 4/5/23 21:44, Hans Petter Selasky wrote: >> On 4/5/23 20:23, Gleb Smirnoff wrote: >>> What if we remove the CTLFLAG_VNET check from the code you posted above? >>> I don't see anything going wrong, rather going right 😄 >>> >>> CTLFLAG_VNET will not mask away CTLFLAG_TUN. >> Hi Gleb, >> It's possible to bypass that check, but some work needs to be done first. Then all jails created, will also start from those sysctl tunable values. >> The problem is, where does the VNET base pointer come from? >> Especially those static sysctl's. You would need to make some design there I guess and look at the SYSINIT() order. When are SYSINIT's filled with tunable data's. And when is the default VNET created. >> Because the data pointer passed to the register sysctl function is simply an offset pointer into a malloc'ed structure. >> --HPS > > Hi Zhenlei, > > Feel free to work on this, and add me as a reviewer and complete phase two of: > >> commit 3da1cf1e88f8448bb10c5f778ab56ff65c7a6938 >> Author: Hans Petter Selasky <hselasky@FreeBSD.org> >> Date: Fri Jun 27 16:33:43 2014 +0000 >> Extend the meaning of the CTLFLAG_TUN flag to automatically check if >> there is an environment variable which shall initialize the SYSCTL >> during early boot. This works for all SYSCTL types both statically and >> dynamically created ones, except for the SYSCTL NODE type and SYSCTLs >> which belong to VNETs. A new flag, CTLFLAG_NOFETCH, has been added to > > --HPS Posted to https://reviews.freebsd.org/D39638 <https://reviews.freebsd.org/D39638> CC freebsd-current if some people are interested in the fix. Best regards, Zhenlei [-- Attachment #2 --] <html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On Apr 6, 2023, at 3:56 AM, Hans Petter Selasky <<a href="mailto:hps@selasky.org" class="">hps@selasky.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="">On 4/5/23 21:44, Hans Petter Selasky wrote:<br class=""><blockquote type="cite" class="">On 4/5/23 20:23, Gleb Smirnoff wrote:<br class=""><blockquote type="cite" class="">What if we remove the CTLFLAG_VNET check from the code you posted above?<br class="">I don't see anything going wrong, rather going right 😄<br class=""><br class="">CTLFLAG_VNET will not mask away CTLFLAG_TUN.<br class=""></blockquote>Hi Gleb,<br class="">It's possible to bypass that check, but some work needs to be done first. Then all jails created, will also start from those sysctl tunable values.<br class="">The problem is, where does the VNET base pointer come from?<br class="">Especially those static sysctl's. You would need to make some design there I guess and look at the SYSINIT() order. When are SYSINIT's filled with tunable data's. And when is the default VNET created.<br class="">Because the data pointer passed to the register sysctl function is simply an offset pointer into a malloc'ed structure.<br class="">--HPS<br class=""></blockquote><br class="">Hi Zhenlei,<br class=""><br class="">Feel free to work on this, and add me as a reviewer and complete phase two of:<br class=""><br class=""><blockquote type="cite" class="">commit 3da1cf1e88f8448bb10c5f778ab56ff65c7a6938<br class="">Author: Hans Petter Selasky <<a href="mailto:hselasky@FreeBSD.org" class="">hselasky@FreeBSD.org</a>><br class="">Date: Fri Jun 27 16:33:43 2014 +0000<br class=""> Extend the meaning of the CTLFLAG_TUN flag to automatically check if<br class=""> there is an environment variable which shall initialize the SYSCTL<br class=""> during early boot. This works for all SYSCTL types both statically and<br class=""> dynamically created ones, except for the SYSCTL NODE type and SYSCTLs<br class=""> which belong to VNETs. A new flag, CTLFLAG_NOFETCH, has been added to<br class=""></blockquote><br class="">--HPS<br class=""></div></div></blockquote><br class=""></div>Posted to <a href="https://reviews.freebsd.org/D39638" class="">https://reviews.freebsd.org/D39638</a> <div class=""><br class=""></div><div class="">CC <span style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);" class="">freebsd-current</span> if some people are interested in the fix.<div class=""><br class=""><div class=""> <div>Best regards,</div><div>Zhenlei</div> </div> <br class=""></div></div></body></html>home | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?2CFA5EBD-ABEB-4D22-9D9A-50725168112E>
