2024-10-31 20:03:00 +00:00
|
|
|
From 150e428c0e8d40257a983c2f82be5e8e0f30920f Mon Sep 17 00:00:00 2001
|
2024-07-22 17:47:47 +00:00
|
|
|
From: Philipp Rudo <prudo@redhat.com>
|
|
|
|
Date: Thu, 25 Jul 2024 12:47:00 +0200
|
2024-10-31 20:03:00 +00:00
|
|
|
Subject: [PATCH 13/32] fix(dracut-init.sh): add module to mods_to_load before
|
2024-07-22 17:47:47 +00:00
|
|
|
checking dependencies
|
|
|
|
|
|
|
|
When implementing erofs support for 99squash we end up with three
|
|
|
|
modules 99squash, 95squash-squashfs and 95squash-erofs. Where 99squash
|
|
|
|
contains the common code for filesystem images and
|
|
|
|
95squash-{squashfs,erofs} the special handing depending on the
|
|
|
|
filesystem used. This leads to a dependency cycle as we want to allow
|
|
|
|
users both to choose 99squash, when the exact filesystem doesn't matter,
|
|
|
|
as well as 95squash-{squashfs,erofs} when a specific filesystem is
|
|
|
|
required.
|
|
|
|
|
|
|
|
But when 99squash is added as a dependency calling
|
|
|
|
dracut_module_included fails in its depends() function. This lead to
|
|
|
|
cases where both handlers, 95squash-squashfs and 95squash-erofs, were
|
|
|
|
added to the initrd.
|
|
|
|
|
|
|
|
Reason for the failure is that a module only is marked to be loaded
|
|
|
|
after all it's dependencies have been checked as well. Thus a child
|
|
|
|
module cannot detect which parent module wants it to be included. Fix
|
|
|
|
this by marking modules to be loaded before checking its dependencies in
|
|
|
|
check_module. Do the same change in check_mount for consistency.
|
|
|
|
|
|
|
|
Signed-off-by: Philipp Rudo <prudo@redhat.com>
|
|
|
|
|
|
|
|
(cherry picked from commit 634b4a5c6fbe595eb240cd529d669d21eadd510c)
|
|
|
|
|
|
|
|
Related: RHEL-43460
|
|
|
|
---
|
|
|
|
dracut-init.sh | 12 ++++++------
|
|
|
|
1 file changed, 6 insertions(+), 6 deletions(-)
|
|
|
|
|
|
|
|
diff --git a/dracut-init.sh b/dracut-init.sh
|
2024-10-31 20:03:00 +00:00
|
|
|
index 8e943493..746362d1 100755
|
2024-07-22 17:47:47 +00:00
|
|
|
--- a/dracut-init.sh
|
|
|
|
+++ b/dracut-init.sh
|
2024-10-31 20:03:00 +00:00
|
|
|
@@ -924,6 +924,9 @@ check_mount() {
|
2024-07-22 17:47:47 +00:00
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
+ [[ " $mods_to_load " == *\ $_mod\ * ]] \
|
|
|
|
+ || mods_to_load+=" $_mod "
|
|
|
|
+
|
|
|
|
for _moddep in $(module_depends "$_mod" "$_moddir"); do
|
|
|
|
# handle deps as if they were manually added
|
|
|
|
[[ " $dracutmodules " == *\ $_mod\ * ]] \
|
2024-10-31 20:03:00 +00:00
|
|
|
@@ -942,9 +945,6 @@ check_mount() {
|
2024-07-22 17:47:47 +00:00
|
|
|
fi
|
|
|
|
done
|
|
|
|
|
|
|
|
- [[ " $mods_to_load " == *\ $_mod\ * ]] \
|
|
|
|
- || mods_to_load+=" $_mod "
|
|
|
|
-
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
2024-10-31 20:03:00 +00:00
|
|
|
@@ -999,6 +999,9 @@ check_module() {
|
2024-07-22 17:47:47 +00:00
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
+ [[ " $mods_to_load " == *\ $_mod\ * ]] \
|
|
|
|
+ || mods_to_load+=" $_mod "
|
|
|
|
+
|
|
|
|
for _moddep in $(module_depends "$_mod" "$_moddir"); do
|
|
|
|
# handle deps as if they were manually added
|
|
|
|
[[ " $dracutmodules " == *\ $_mod\ * ]] \
|
2024-10-31 20:03:00 +00:00
|
|
|
@@ -1017,9 +1020,6 @@ check_module() {
|
2024-07-22 17:47:47 +00:00
|
|
|
fi
|
|
|
|
done
|
|
|
|
|
|
|
|
- [[ " $mods_to_load " == *\ $_mod\ * ]] \
|
|
|
|
- || mods_to_load+=" $_mod "
|
|
|
|
-
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
--
|
|
|
|
2.42.0
|
|
|
|
|