Note: This bug is displayed in read-only format because the product is no longer active in Red Hat Bugzilla.

Bug 2139922

Summary: BLS entries to always have placeholder $tuned_params
Product: Red Hat OpenStack Reporter: Steve Baker <sbaker>
Component: tripleo-ansibleAssignee: Steve Baker <sbaker>
Status: CLOSED DUPLICATE QA Contact: Joe H. Rahme <jhakimra>
Severity: high Docs Contact:
Priority: high    
Version: 17.0 (Wallaby)   
Target Milestone: z1   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2022-11-16 21:53:57 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Steve Baker 2022-11-03 20:54:58 UTC
Currently on the distributed overcloud image, the options line in /boot/loader/entries files is fully expanded with the actual kernel arguments, for example:

  $ grep -r options /boot/loader/entries/*
  options root=LABEL=img-rootfs ro  console=tty0 console=ttyS0,115200 no_timer_check nofb nomodeset vga=normal console=tty0 console=ttyS0,115200 audit=1 nousb

This RFE proposes that the image should be distributed with the options line in /boot/loader/entries being:

  options root=LABEL=img-rootfs ro $kernelopts $tuned_params

Likewise in tripleo-ansible tripleo_kernel role, calls to grub2-mkconfig[1] will include the argument --no-grubenv-update to preserve the $kernelopts placeholder in /boot/loader/entries files.

At boot time $kernelopts is replaced with the kernelopts value from the grubenv file, or the grub.cfg value which was built from /etc/default/grub GRUB_CMDLINE_LINUX_DEFAULT, GRUB_CMDLINE_LINUX. Currently we have no kernelopts value written to the grubenv, so we need to decide if this will change when implementing this RFE.

The reason for this change is to ensure there is also always a $tuned_params placeholder for the tuned tooling. Currently any grub2-mkconfig call will also remove $tuned_params and it is very difficult to call the grub tooling and tuned tooling in the right order to ensure $tuned_params always exists. This has resulted in workarounds[2] for 17.0 as part of bug #2122949. This RFE will remove the need for this workaround, and make kernel args more manageable across kernel updates.

[1] https://opendev.org/openstack/tripleo-ansible/src/branch/master/tripleo_ansible/roles/tripleo_kernel/tasks/kernelargs.yml#L157
[2] https://code.engineering.redhat.com/gerrit/c/nfv-qe/+/427777/14/tht/setups/panther06/17.0/ospd-17.0-vxlan-dpdk-sriov-ctlplane-dataplane-bonding-rt-hybrid/playbooks/fix_rt_kernel.yaml.j2

Comment 2 Steve Baker 2022-11-16 21:24:35 UTC
I'm downgrading this to a bug because the fix will be much smaller than switching to $kernelopts.

RHEL-9 has moved away from using $kernelopts for a variety of reasons, so we really shouldn't add it back in our images.

Right now I'm looking at ensuring tuned-adm profile <profile> gets re-run after each grub2-mkconfig in tripleo-ansible. This will ensure $tuned_params gets restored to the BLS entry each time grub2-mkconfig removes it.

Comment 3 Steve Baker 2022-11-16 21:53:57 UTC
Actually lets use the original bug and aim to fix it in 17.0 z1

*** This bug has been marked as a duplicate of bug 2122949 ***