How about ’show-module-options’? rgds, toomas
> On 12. Dec 2020, at 07:57, Kyle Evans <kev...@freebsd.org> wrote: > > Author: kevans > Date: Sat Dec 12 05:57:42 2020 > New Revision: 368575 > URL: https://svnweb.freebsd.org/changeset/base/368575 > > Log: > lualoader: provide module-manipulation commands > > Specifically, we have: > - enable-module > - disable-module > - toggle-module > > These can be used to add/remove modules to be loaded or force modules to be > loaded in spite of modules_blacklist. In the typical case, a user is > expected to use them to recover an issue happening due to a module directive > they've added to their loader.conf or because they discover that they've > under-specified what to load. > > MFC after: 1 week > > Modified: > head/stand/lua/cli.lua > head/stand/lua/cli.lua.8 > head/stand/lua/config.lua > head/stand/lua/config.lua.8 > > Modified: head/stand/lua/cli.lua > ============================================================================== > --- head/stand/lua/cli.lua Sat Dec 12 02:26:43 2020 (r368574) > +++ head/stand/lua/cli.lua Sat Dec 12 05:57:42 2020 (r368575) > @@ -65,6 +65,14 @@ local function parseBootArgs(argv, with_kernel) > end > end > > +local function setModule(module, loading) > + if loading and config.enableModule(module) then > + print(module .. " will be loaded") > + elseif not loading and config.disableModule(module) then > + print(module .. " will not be loaded") > + end > +end > + > -- Declares a global function cli_execute that attempts to dispatch the > -- arguments passed as a lua function. This gives lua a chance to intercept > -- builtin CLI commands like "boot" > @@ -132,6 +140,37 @@ end > > cli['reload-conf'] = function() > config.reload() > +end > + > +cli["enable-module"] = function(...) > + local _, argv = cli.arguments(...) > + if #argv == 0 then > + print("usage error: enable-module module") > + return > + end > + > + setModule(argv[1], true) > +end > + > +cli["disable-module"] = function(...) > + local _, argv = cli.arguments(...) > + if #argv == 0 then > + print("usage error: disable-module module") > + return > + end > + > + setModule(argv[1], false) > +end > + > +cli["toggle-module"] = function(...) > + local _, argv = cli.arguments(...) > + if #argv == 0 then > + print("usage error: toggle-module module") > + return > + end > + > + local module = argv[1] > + setModule(module, not config.isModuleEnabled(module)) > end > > -- Used for splitting cli varargs into cmd_name and the rest of argv > > Modified: head/stand/lua/cli.lua.8 > ============================================================================== > --- head/stand/lua/cli.lua.8 Sat Dec 12 02:26:43 2020 (r368574) > +++ head/stand/lua/cli.lua.8 Sat Dec 12 05:57:42 2020 (r368575) > @@ -26,7 +26,7 @@ > .\" > .\" $FreeBSD$ > .\" > -.Dd September 13, 2019 > +.Dd December 12, 2020 > .Dt CLI.LUA 8 > .Os > .Sh NAME > @@ -77,14 +77,26 @@ This function may be invoked by a user at the loader p > .Ic foo . > Arguments may be passed to it as usual, space-delimited. > .Ss Default Commands > -As of present, the > +The > .Nm > -module by default provides commands for > -.Ic autoboot , > -.Ic boot , > -.Ic boot-conf , > -and > -.Ic reload-conf . > +module provides the following default commands: > +.Bl -bullet > +.\"-width toggle-module -offset indent > +.It > +.Ic autoboot > +.It > +.Ic boot > +.It > +.Ic boot-conf > +.It > +.Ic reload-conf > +.It > +.Ic enable-module > +.It > +.Ic disable-module > +.It > +.Ic toggle-module > +.El > .Pp > For > .Ic autoboot , > @@ -103,6 +115,16 @@ The > command will reload the configuration from disk. > This is useful if you have manually changed currdev and would like to easily > reload the configuration from the new device. > +.Pp > +The > +.Ic enable-module , > +.Ic disable-module , > +and > +.Ic toggle-module > +commands manipulate the list of modules to be loaded along with the kernel. > +Modules blacklisted are considered disabled by > +.Ic toggle-module . > +These commands will override any such restriction as needed. > .Ss Exported Functions > The following functions are exported from > .Nm : > > Modified: head/stand/lua/config.lua > ============================================================================== > --- head/stand/lua/config.lua Sat Dec 12 02:26:43 2020 (r368574) > +++ head/stand/lua/config.lua Sat Dec 12 05:57:42 2020 (r368575) > @@ -312,7 +312,7 @@ local function loadModule(mod, silent) > for k, v in pairs(mod) do > if v.load ~= nil and v.load:lower() == "yes" then > local module_name = v.name or k > - if blacklist[module_name] ~= nil then > + if not v.force and blacklist[module_name] ~= nil then > if not silent then > > print(MSG_MODBLACKLIST:format(module_name)) > end > @@ -680,6 +680,45 @@ function config.loadelf() > status = loadModule(modules, not config.verbose) > hook.runAll("modules.loaded") > return status > +end > + > +function config.enableModule(modname) > + if modules[modname] == nil then > + modules[modname] = {} > + elseif modules[modname].load == "YES" then > + modules[modname].force = true > + return true > + end > + > + modules[modname].load = "YES" > + modules[modname].force = true > + return true > +end > + > +function config.disableModule(modname) > + if modules[modname] == nil then > + return false > + elseif modules[modname].load ~= "YES" then > + return true > + end > + > + modules[modname].load = "NO" > + modules[modname].force = nil > + return true > +end > + > +function config.isModuleEnabled(modname) > + local mod = modules[modname] > + if not mod or mod.load ~= "YES" then > + return false > + end > + > + if mod.force then > + return true > + end > + > + local blacklist = getBlacklist() > + return blacklist[modname] > end > > hook.registerType("config.loaded") > > Modified: head/stand/lua/config.lua.8 > ============================================================================== > --- head/stand/lua/config.lua.8 Sat Dec 12 02:26:43 2020 > (r368574) > +++ head/stand/lua/config.lua.8 Sat Dec 12 05:57:42 2020 > (r368575) > @@ -26,7 +26,7 @@ > .\" > .\" $FreeBSD$ > .\" > -.Dd April 30, 2020 > +.Dd December 12, 2020 > .Dt CONFIG.LUA 8 > .Os > .Sh NAME > @@ -184,6 +184,25 @@ This will be called by the Lua intercepted > and > .Ic boot > commands. > +.It Fn config.enableModule modname > +Marks a module named > +.Fa modname > +to be loaded during > +.Fn config.loadelf . > +If the module was previously blacklisted, then it will be forcefully allowed > to > +load. > +.It Fn config.disableModule modname > +Marks a module named > +.Fa modname > +to not be loaded during > +.Fn config.loadelf . > +.It Fn config.isModuleEnabled modname > +Checks if the module named > +.Fa modname > +will be loaded during > +.Fn config.loadelf . > +It checks both that the module is marked for loading and that it is either > +forced or not blacklisted. > .El > .Ss Defined Hooks > The following hooks are defined in _______________________________________________ svn-src-head@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"