|
Harald Hoyer |
460d2c |
From 480aa9695f8c2e2b30c8f41ae8483140020d23db Mon Sep 17 00:00:00 2001
|
|
Harald Hoyer |
460d2c |
From: Daniel Molkentin <dmolkentin@suse.com>
|
|
Harald Hoyer |
460d2c |
Date: Tue, 4 Aug 2020 10:20:51 +0200
|
|
Harald Hoyer |
460d2c |
Subject: [PATCH] 95resume: Do not resume on iSCSI, FCoE or NBD
|
|
Harald Hoyer |
460d2c |
|
|
Harald Hoyer |
460d2c |
The iSCSI configuration is started after dracut checks for resume,
|
|
Harald Hoyer |
460d2c |
so we run into a timeout here. Additionally it's questionable if
|
|
Harald Hoyer |
460d2c |
resume on iSCSI makes sense (or is even supported on the platform).
|
|
Harald Hoyer |
460d2c |
|
|
Harald Hoyer |
460d2c |
Same holds true for Network Block Devices and FcOE, cover those as well
|
|
Harald Hoyer |
460d2c |
|
|
Harald Hoyer |
460d2c |
References: bsc#999663
|
|
Harald Hoyer |
460d2c |
|
|
Harald Hoyer |
460d2c |
Original-patch-by: Hannes Reinecke <hare@suse.com>
|
|
Harald Hoyer |
460d2c |
Signed-off-by: Daniel Molkentin <daniel.molkentin@suse.com>
|
|
Harald Hoyer |
460d2c |
---
|
|
Harald Hoyer |
460d2c |
dracut-functions.sh | 44 ++++++++++++++++++++++++++++++++++++++
|
|
Harald Hoyer |
460d2c |
modules.d/95iscsi/module-setup.sh | 14 ++----------
|
|
Harald Hoyer |
460d2c |
modules.d/95nbd/module-setup.sh | 4 +---
|
|
Harald Hoyer |
460d2c |
modules.d/95resume/module-setup.sh | 11 +++++++++-
|
|
Harald Hoyer |
460d2c |
4 files changed, 57 insertions(+), 16 deletions(-)
|
|
Harald Hoyer |
460d2c |
|
|
Harald Hoyer |
460d2c |
diff --git a/dracut-functions.sh b/dracut-functions.sh
|
|
Harald Hoyer |
460d2c |
index 07ae88c0..e0ca7574 100755
|
|
Harald Hoyer |
460d2c |
--- a/dracut-functions.sh
|
|
Harald Hoyer |
460d2c |
+++ b/dracut-functions.sh
|
|
Harald Hoyer |
460d2c |
@@ -842,3 +842,47 @@ ip_params_for_remote_addr() {
|
|
Harald Hoyer |
460d2c |
fi
|
|
Harald Hoyer |
460d2c |
|
|
Harald Hoyer |
460d2c |
}
|
|
Harald Hoyer |
460d2c |
+
|
|
Harald Hoyer |
460d2c |
+# block_is_nbd <maj:min>
|
|
Harald Hoyer |
460d2c |
+# Check whether $1 is an nbd device
|
|
Harald Hoyer |
460d2c |
+block_is_nbd() {
|
|
Harald Hoyer |
460d2c |
+ [[ -b /dev/block/$1 && $1 == 43:* ]]
|
|
Harald Hoyer |
460d2c |
+}
|
|
Harald Hoyer |
460d2c |
+
|
|
Harald Hoyer |
460d2c |
+# block_is_iscsi <maj:min>
|
|
Harald Hoyer |
460d2c |
+# Check whether $1 is an nbd device
|
|
Harald Hoyer |
460d2c |
+block_is_iscsi() {
|
|
Harald Hoyer |
460d2c |
+ local _dir
|
|
Harald Hoyer |
460d2c |
+ local _dev=$1
|
|
Harald Hoyer |
460d2c |
+ [[ -L "/sys/dev/block/$_dev" ]] || return
|
|
Harald Hoyer |
460d2c |
+ _dir="$(readlink -f "/sys/dev/block/$_dev")" || return
|
|
Harald Hoyer |
460d2c |
+ until [[ -d "$_dir/sys" || -d "$_dir/iscsi_session" ]]; do
|
|
Harald Hoyer |
460d2c |
+ _dir="$_dir/.."
|
|
Harald Hoyer |
460d2c |
+ done
|
|
Harald Hoyer |
460d2c |
+ [[ -d "$_dir/iscsi_session" ]]
|
|
Harald Hoyer |
460d2c |
+}
|
|
Harald Hoyer |
460d2c |
+
|
|
Harald Hoyer |
460d2c |
+# block_is_fcoe <maj:min>
|
|
Harald Hoyer |
460d2c |
+# Check whether $1 is an FCoE device
|
|
Harald Hoyer |
460d2c |
+# Will not work for HBAs that hide the ethernet aspect
|
|
Harald Hoyer |
460d2c |
+# completely and present a pure FC device
|
|
Harald Hoyer |
460d2c |
+block_is_fcoe() {
|
|
Harald Hoyer |
460d2c |
+ local _dir
|
|
Harald Hoyer |
460d2c |
+ local _dev=$1
|
|
Harald Hoyer |
460d2c |
+ [[ -L "/sys/dev/block/$_dev" ]] || return
|
|
Harald Hoyer |
460d2c |
+ _dir="$(readlink -f "/sys/dev/block/$_dev")"
|
|
Harald Hoyer |
460d2c |
+ until [[ -d "$_dir/sys" ]]; do
|
|
Harald Hoyer |
460d2c |
+ _dir="$_dir/.."
|
|
Harald Hoyer |
460d2c |
+ if [[ -d "$_dir/subsystem" ]]; then
|
|
Harald Hoyer |
460d2c |
+ subsystem=$(basename $(readlink $_dir/subsystem))
|
|
Harald Hoyer |
460d2c |
+ [[ $subsystem == "fcoe" ]] && return 0
|
|
Harald Hoyer |
460d2c |
+ fi
|
|
Harald Hoyer |
460d2c |
+ done
|
|
Harald Hoyer |
460d2c |
+ return 1
|
|
Harald Hoyer |
460d2c |
+}
|
|
Harald Hoyer |
460d2c |
+
|
|
Harald Hoyer |
460d2c |
+# block_is_netdevice <maj:min>
|
|
Harald Hoyer |
460d2c |
+# Check whether $1 is a net device
|
|
Harald Hoyer |
460d2c |
+block_is_netdevice() {
|
|
Harald Hoyer |
460d2c |
+ block_is_nbd "$1" || block_is_iscsi "$1" || block_is_fcoe "$1"
|
|
Harald Hoyer |
460d2c |
+}
|
|
Harald Hoyer |
460d2c |
diff --git a/modules.d/95iscsi/module-setup.sh b/modules.d/95iscsi/module-setup.sh
|
|
Harald Hoyer |
460d2c |
index dfacd797..20922442 100755
|
|
Harald Hoyer |
460d2c |
--- a/modules.d/95iscsi/module-setup.sh
|
|
Harald Hoyer |
460d2c |
+++ b/modules.d/95iscsi/module-setup.sh
|
|
Harald Hoyer |
460d2c |
@@ -9,20 +9,9 @@ check() {
|
|
Harald Hoyer |
460d2c |
# If hostonly was requested, fail the check if we are not actually
|
|
Harald Hoyer |
460d2c |
# booting from root.
|
|
Harald Hoyer |
460d2c |
|
|
Harald Hoyer |
460d2c |
- is_iscsi() {
|
|
Harald Hoyer |
460d2c |
- local _dev=$1
|
|
Harald Hoyer |
460d2c |
-
|
|
Harald Hoyer |
460d2c |
- [[ -L "/sys/dev/block/$_dev" ]] || return
|
|
Harald Hoyer |
460d2c |
- cd "$(readlink -f "/sys/dev/block/$_dev")"
|
|
Harald Hoyer |
460d2c |
- until [[ -d sys || -d iscsi_session ]]; do
|
|
Harald Hoyer |
460d2c |
- cd ..
|
|
Harald Hoyer |
460d2c |
- done
|
|
Harald Hoyer |
460d2c |
- [[ -d iscsi_session ]]
|
|
Harald Hoyer |
460d2c |
- }
|
|
Harald Hoyer |
460d2c |
-
|
|
Harald Hoyer |
460d2c |
[[ $hostonly ]] || [[ $mount_needs ]] && {
|
|
Harald Hoyer |
460d2c |
pushd . >/dev/null
|
|
Harald Hoyer |
460d2c |
- for_each_host_dev_and_slaves is_iscsi
|
|
Harald Hoyer |
460d2c |
+ for_each_host_dev_and_slaves block_is_iscsi
|
|
Harald Hoyer |
460d2c |
local _is_iscsi=$?
|
|
Harald Hoyer |
460d2c |
popd >/dev/null
|
|
Harald Hoyer |
460d2c |
[[ $_is_iscsi == 0 ]] || return 255
|
|
Harald Hoyer |
460d2c |
@@ -223,6 +212,7 @@ install() {
|
|
Harald Hoyer |
460d2c |
inst_hook cmdline 90 "$moddir/parse-iscsiroot.sh"
|
|
Harald Hoyer |
460d2c |
inst_hook cleanup 90 "$moddir/cleanup-iscsi.sh"
|
|
Harald Hoyer |
460d2c |
inst "$moddir/iscsiroot.sh" "/sbin/iscsiroot"
|
|
Harald Hoyer |
460d2c |
+
|
|
Harald Hoyer |
460d2c |
if ! dracut_module_included "systemd"; then
|
|
Harald Hoyer |
460d2c |
inst "$moddir/mount-lun.sh" "/bin/mount-lun.sh"
|
|
Harald Hoyer |
460d2c |
else
|
|
Harald Hoyer |
460d2c |
diff --git a/modules.d/95nbd/module-setup.sh b/modules.d/95nbd/module-setup.sh
|
|
Harald Hoyer |
460d2c |
index 22f6a3bf..9254b49a 100755
|
|
Harald Hoyer |
460d2c |
--- a/modules.d/95nbd/module-setup.sh
|
|
Harald Hoyer |
460d2c |
+++ b/modules.d/95nbd/module-setup.sh
|
|
Harald Hoyer |
460d2c |
@@ -7,11 +7,9 @@ check() {
|
|
Harald Hoyer |
460d2c |
# if an nbd device is not somewhere in the chain of devices root is
|
|
Harald Hoyer |
460d2c |
# mounted on, fail the hostonly check.
|
|
Harald Hoyer |
460d2c |
[[ $hostonly ]] || [[ $mount_needs ]] && {
|
|
Harald Hoyer |
460d2c |
- is_nbd() { [[ -b /dev/block/$1 && $1 == 43:* ]] ;}
|
|
Harald Hoyer |
460d2c |
-
|
|
Harald Hoyer |
460d2c |
_rootdev=$(find_root_block_device)
|
|
Harald Hoyer |
460d2c |
[[ -b /dev/block/$_rootdev ]] || return 1
|
|
Harald Hoyer |
460d2c |
- check_block_and_slaves is_nbd "$_rootdev" || return 255
|
|
Harald Hoyer |
460d2c |
+ check_block_and_slaves block_is_nbd "$_rootdev" || return 255
|
|
Harald Hoyer |
460d2c |
}
|
|
Harald Hoyer |
460d2c |
require_binaries nbd-client || return 1
|
|
Harald Hoyer |
460d2c |
|
|
Harald Hoyer |
460d2c |
diff --git a/modules.d/95resume/module-setup.sh b/modules.d/95resume/module-setup.sh
|
|
Harald Hoyer |
460d2c |
index cb06b567..96c2573e 100755
|
|
Harald Hoyer |
460d2c |
--- a/modules.d/95resume/module-setup.sh
|
|
Harald Hoyer |
460d2c |
+++ b/modules.d/95resume/module-setup.sh
|
|
Harald Hoyer |
460d2c |
@@ -2,9 +2,18 @@
|
|
Harald Hoyer |
460d2c |
|
|
Harald Hoyer |
460d2c |
# called by dracut
|
|
Harald Hoyer |
460d2c |
check() {
|
|
Harald Hoyer |
460d2c |
+ swap_on_netdevice() {
|
|
Harald Hoyer |
460d2c |
+ local _dev
|
|
Harald Hoyer |
460d2c |
+ for _dev in "${swap_devs[@]}"; do
|
|
Harald Hoyer |
460d2c |
+ block_is_netdevice $_dev && return 0
|
|
Harald Hoyer |
460d2c |
+ done
|
|
Harald Hoyer |
460d2c |
+ return 1
|
|
Harald Hoyer |
460d2c |
+ }
|
|
Harald Hoyer |
460d2c |
+
|
|
Harald Hoyer |
460d2c |
# Only support resume if hibernation is currently on
|
|
Harald Hoyer |
460d2c |
+ # and no swap is mounted on a net device
|
|
Harald Hoyer |
460d2c |
[[ $hostonly ]] || [[ $mount_needs ]] && {
|
|
Harald Hoyer |
460d2c |
- [[ "$(cat /sys/power/resume)" == "0:0" ]] && return 255
|
|
Harald Hoyer |
460d2c |
+ swap_on_netdevice || [[ "$(cat /sys/power/resume)" == "0:0" ]] && return 255
|
|
Harald Hoyer |
460d2c |
}
|
|
Harald Hoyer |
460d2c |
|
|
Harald Hoyer |
460d2c |
return 0
|
|
Harald Hoyer |
460d2c |
|