svn commit: r330703 - head/stand/lua
Kyle Evans
kevans at FreeBSD.org
Fri Mar 9 19:04:08 UTC 2018
Author: kevans
Date: Fri Mar 9 19:04:06 2018
New Revision: 330703
URL: https://svnweb.freebsd.org/changeset/base/330703
Log:
lualoader: Cache kernel list
With autodetection turned on, hitting the filesystem everytime we need to
calculate choices for the kernel carousel is kind of slow. Cache once on the
first listing and reload it anytime the config is reloaded in case any of
the loader.conf(5) changes that affect this (kernel, kernels,
kernels_autodetect) have changed. This also picks up the case where we've
changed currdev and the autodetected kernels could change.
Modified:
head/stand/lua/config.lua
head/stand/lua/core.lua
Modified: head/stand/lua/config.lua
==============================================================================
--- head/stand/lua/config.lua Fri Mar 9 18:51:24 2018 (r330702)
+++ head/stand/lua/config.lua Fri Mar 9 19:04:06 2018 (r330703)
@@ -497,6 +497,7 @@ function config.reload(file)
modules = {}
config.restoreEnv()
config.load(file)
+ core.configReloaded()
end
function config.loadelf()
Modified: head/stand/lua/core.lua
==============================================================================
--- head/stand/lua/core.lua Fri Mar 9 18:51:24 2018 (r330702)
+++ head/stand/lua/core.lua Fri Mar 9 19:04:06 2018 (r330703)
@@ -138,7 +138,18 @@ function core.setSafeMode(safe_mode)
core.sm = safe_mode
end
+function core.configReloaded()
+ -- Clear the kernel cache on config changes, autodetect might have
+ -- changed or if we've switched boot environments then we could have
+ -- a new kernel set.
+ core.cached_kernels = nil
+end
+
function core.kernelList()
+ if core.cached_kernels ~= nil then
+ return core.cached_kernels
+ end
+
local k = loader.getenv("kernel")
local v = loader.getenv("kernels")
local autodetect = loader.getenv("kernels_autodetect") or ""
@@ -166,7 +177,8 @@ function core.kernelList()
-- setting, kernels_autodetect. If it's set to 'yes', we'll add
-- any kernels we detect based on the criteria described.
if autodetect:lower() ~= "yes" then
- return kernels
+ core.cached_kernels = kernels
+ return core.cached_kernels
end
-- Automatically detect other bootable kernel directories using a
@@ -195,7 +207,8 @@ function core.kernelList()
::continue::
end
- return kernels
+ core.cached_kernels = kernels
+ return core.cached_kernels
end
function core.bootenvDefault()
More information about the svn-src-all
mailing list