Skip to content

Quoting all space-containing values breaks kernel command line management #28

@greatflyingsteve

Description

@greatflyingsteve

We use this module to create a custom profile, which includes the default network-latency profile. The default profile includes:

[bootloader]
cmdline_network_latency=skew_tick=1 tsc=reliable rcupdate.rcu_normal_after_boot=1

Our custom profile includes:

[bootloader]
cmdline="transparent_hugepage=never default_hugepagesz=1G hugepagesz=1G skew_tick=1"

These two values for cmdline get baked down into a single merged value, which of course contains the arguments from both - but it includes a little too much from both. The final result that ends up in the grub.cfg file is:

set tuned_params="skew_tick=1 tsc=reliable rcupdate.rcu_normal_after_boot=1 "transparent_hugepage=never default_hugepagesz=1G hugepagesz=1G skew_tick=1""

The quotes added by this template appear in the final result. That shouldn't happen, pretty obviously.

Going a step further, if you look at the default profiles that the tuned package installs under CentOS Stream 9, and you try to look for values that contain spaces and examine whether they're in fact quoted, a pattern emerges: mostly, no. They aren't quoted. sysctls that have spaces in the value, in fact, are the only quoted values anywhere in any of the default files.

While the quotes are probably treated as part of the value that eventually gets handed to sysctl, they are definitely treated as part of the value for the kernel command line, and that's pretty plainly never correct. It would be awesome to do away with quotes by default, and have our commandline functional again.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions