mirror of
https://github.com/libguestfs/libguestfs.git
synced 2026-03-22 07:03:38 +00:00
appliance: Pass "quiet" option to kernel when !verbose.
The quiet option suppresses kernel messages. On my laptop it improves appliance boot times by about 40% (3.5s -> 2.5s). The emulated UART is slow and has a fixed, small FIFO (16 bytes). But it has the advantage of being a simple ISA device which is available very early in boot, thus enabling us to diagnose early boot problems. So the aim is to reduce our usage of this UART on fast paths. Of course when we are in verbose mode, we should not add this flag because we want to see all the messages. This change is not entirely invisible: (1) Progress messages use the "Linux version ..." string from kernel output in order to determine part of where we are in the boot process. This string will no longer be detected. We should probably use a BIOS message or maybe drop this altogether. I have added a comment to the code. (2) It is possible for programs to be listening for GUESTFS_EVENT_APPLIANCE events, and they will see fewer messages now (although what kernel messages programs see is never defined).
This commit is contained in:
@@ -351,7 +351,7 @@ guestfs_int_appliance_command_line (guestfs_h *g, const char *appliance_dev,
|
||||
" cgroup_disable=memory" /* saves us about 5 MB of RAM */
|
||||
"%s" /* root=appliance_dev */
|
||||
" %s" /* selinux */
|
||||
"%s" /* verbose */
|
||||
" %s" /* quiet/verbose */
|
||||
"%s" /* network */
|
||||
" TERM=%s" /* TERM environment variable */
|
||||
"%s%s" /* handle identifier */
|
||||
@@ -362,7 +362,7 @@ guestfs_int_appliance_command_line (guestfs_h *g, const char *appliance_dev,
|
||||
lpj_s,
|
||||
root,
|
||||
g->selinux ? "selinux=1 enforcing=0" : "selinux=0",
|
||||
g->verbose ? " guestfs_verbose=1" : "",
|
||||
g->verbose ? "guestfs_verbose=1" : "quiet",
|
||||
g->enable_network ? " guestfs_network=1" : "",
|
||||
term ? term : "linux",
|
||||
STRNEQ (g->identifier, "") ? " guestfs_identifier=" : "",
|
||||
|
||||
@@ -129,6 +129,9 @@ guestfs_int_log_message_callback (guestfs_h *g, const char *buf, size_t len)
|
||||
const char *sentinel;
|
||||
size_t slen;
|
||||
|
||||
/* Since 2016-03, if !verbose, then we add the "quiet" flag to the
|
||||
* kernel, so the following sentinel will never be produced. XXX
|
||||
*/
|
||||
sentinel = "Linux version"; /* kernel up */
|
||||
slen = strlen (sentinel);
|
||||
if (memmem (buf, len, sentinel, slen) != NULL)
|
||||
|
||||
Reference in New Issue
Block a user