dracutdevs / dracut

dracut the event driven initramfs infrastructure
https://github.com/dracutdevs/dracut/wiki
GNU General Public License v2.0
604 stars 400 forks source link

Skip iscsi parsing on systems without iSCSI boot #1520

Open anjalidk opened 3 years ago

anjalidk commented 3 years ago

Description: This fix gives a boot improvement of about 4-5secs on non-iSCSI boot systems, when iscsi parameters are given in kernel command line.

On cloud systems, we need to boot various boot types but use the same image and same kernel command line parameters. This means, we add an iscsi parameters on systems which are booting via iSCSI and also ones that are not. But we need to ignore the iscsi parameters non-iSCSI system, else it gives a penalty of 4-5 secs on boot time.

For a system which did not boot via iSCSI, there is no ipxe and hence no ipxe added iBFT ACPI table - /sys/firmware/acpi/tables/iBFT.

So we check for the precence of this table to determine if we can skip iscsi parsing and then subsequently skip running iscsiroot.sh script.

Otherwise on a non-iSCSI boot system, the iscsiroot,sh script keeps running and trying to connect to iscsi target when there isn't one. Also, that script has multiple sleeps in it, which impacts boot time negatively.

Distribution: Oracle Linux, and hence Redhat

Dracut version: All dracut versions

Init system: systemd

To Reproduce: Boot a VM which has a local disk from which it boots. You also need in kernel command line: netroot=iscsi:XXXX. However, this is unused on a local boot disk.

Expected behavior: We should ignore iscsi parsing, if the iBFT table indicates we do not have an iSCSI boot.

tpgxyz commented 3 years ago

Can't you just add this to dracut.conf ? omit_dracutmodules+=" iscsi "

anjalidk commented 3 years ago

Hi, We cannot, because we do not want different image for iSCSI and non-iSCSI Systems. We want the same image, so the code must detect whether we are PV or iSCSI dynamically. See this issue where I have described the problem: https://github.com/dracutdevs/dracut/issues/1520

Anjali

On May 26, 2021, at 11:11 AM, Tomasz Paweł Gajc @.**@.>> wrote:

Can't you just add this to dracut.conf ? omit_dracutmodules+=" iscsi "

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHubhttps://urldefense.com/v3/__https://github.com/dracutdevs/dracut/issues/1520*issuecomment-849008037__;Iw!!GqivPVa7Brio!KBvQa5lO6NgWfOcVvaJkJAz91FDxvitZcMlsN5IB85VpklJCfzcsp2o0RZkTP7MMzxTjXg$, or unsubscribehttps://urldefense.com/v3/__https://github.com/notifications/unsubscribe-auth/AQE6QX7PISWG7Y5BWR6VFDDTPU2VDANCNFSM45QHWMNA__;!!GqivPVa7Brio!KBvQa5lO6NgWfOcVvaJkJAz91FDxvitZcMlsN5IB85VpklJCfzcsp2o0RZkTP7Pw3DHZzA$.

jiayi0118 commented 2 years ago

This seems more like an enhancement rather than bug.

Anyway, from my point, it is not proper to modify iscsi dracutmodule to satisfy the requirement, which breaks the open-close principle.

Perhaps a new module could be added to dynamically monitor the iBFT ACPI table and control the behavior of iscsi.

LaszloGombos commented 1 year ago

This fix gives a boot improvement of about 4-5secs on non-iSCSI boot systems

@anjalidk, did you mean to attach a code change ? I do not see it.

LaszloGombos commented 1 year ago

Found it - https://github.com/dracutdevs/dracut/pull/1519