On Wed, 12 Apr 2023 19:36:30 +0800
Coiby Xu <coxu(a)redhat.com> wrote:
Relates:
https://bugzilla.redhat.com/show_bug.cgi?id=2151504
Currently, when the network isn't ready, kdump would repeatedly print
the same info,
[ 29.537230] kdump[671]: Bad kdump network destination: 192.123.1.21
[ 30.559418] kdump[679]: Bad kdump network destination: 192.123.1.21
[ 31.580189] kdump[687]: Bad kdump network destination: 192.123.1.21
This is not user-friendly and users may think kdump has got stuck. So
also show much time has waited for the network to be ready,
[ 29.546258] kdump[673]: Waiting for network to be ready (50s / 10min)
...
[ 32.608967] kdump[697]: Waiting for network to be ready (56s / 10min)
Note kdump_get_ip_route no longer prints an error message and it's up to
the caller to determine the log level and print relevant messages. And
kdump_collect_netif_usage aborts when kdump_get_ip_route fails.
Reported-by: Martin Pitt <mpitt(a)redhat.com>
Signed-off-by: Coiby Xu <coxu(a)redhat.com>
Looks good to me
Reviewed-by: Philipp Rudo <prudo(a)redhat.com>
---
dracut-kdump.sh | 2 ++
dracut-module-setup.sh | 7 ++++++-
kdump-lib-initramfs.sh | 1 -
3 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/dracut-kdump.sh b/dracut-kdump.sh
index 872e75ee..74b2b8ae 100755
--- a/dracut-kdump.sh
+++ b/dracut-kdump.sh
@@ -502,6 +502,8 @@ wait_online_network()
if _route=$(kdump_get_ip_route "$1" 2> /dev/null); then
printf "%s" "$_route"
return
+ else
+ dwarn "Waiting for network to be ready (${_loop}s / 10min)"
fi
done
diff --git a/dracut-module-setup.sh b/dracut-module-setup.sh
index c8015cb5..82f2eaa5 100755
--- a/dracut-module-setup.sh
+++ b/dracut-module-setup.sh
@@ -543,7 +543,12 @@ kdump_collect_netif_usage() {
local _destaddr _srcaddr _route _netdev
_destaddr=$(kdump_get_remote_ip "$1")
- _route=$(kdump_get_ip_route "$_destaddr")
+
+ if ! _route=$(kdump_get_ip_route "$_destaddr"); then
+ derror "failed to get remote IP address!"
+ exit 1
+ fi
+
_srcaddr=$(kdump_get_ip_route_field "$_route" "src")
_netdev=$(kdump_get_ip_route_field "$_route" "dev")
diff --git a/kdump-lib-initramfs.sh b/kdump-lib-initramfs.sh
index 4e63aa15..c717a10d 100755
--- a/kdump-lib-initramfs.sh
+++ b/kdump-lib-initramfs.sh
@@ -169,7 +169,6 @@ is_lvm2_thinp_device()
kdump_get_ip_route()
{
if ! _route=$(/sbin/ip -o route get to "$1" 2>&1); then
- derror "Bad kdump network destination: $1"
exit 1
fi
echo "$_route"