diff options
Diffstat (limited to 'skip-the-broken-sd-in-initqueue.patch')
-rw-r--r-- | skip-the-broken-sd-in-initqueue.patch | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/skip-the-broken-sd-in-initqueue.patch b/skip-the-broken-sd-in-initqueue.patch new file mode 100644 index 0000000..fa18e88 --- /dev/null +++ b/skip-the-broken-sd-in-initqueue.patch @@ -0,0 +1,48 @@ +From 816a7dbff7128b4b87ea8d6abd2caf564f8f3502 Mon Sep 17 00:00:00 2001 +From: gaoyi <gaoyi15@huawei.com> +Date: Fri, 18 Oct 2019 10:42:55 -0400 +Subject: [PATCH] skip the broken sd in initqueue + +--- + .../98dracut-systemd/dracut-initqueue.sh | 25 +++++++++++++++++++ + 1 file changed, 25 insertions(+) + +diff --git a/modules.d/98dracut-systemd/dracut-initqueue.sh b/modules.d/98dracut-systemd/dracut-initqueue.sh +index 3ddc236..c7d7888 100755 +--- a/modules.d/98dracut-systemd/dracut-initqueue.sh ++++ b/modules.d/98dracut-systemd/dracut-initqueue.sh +@@ -16,6 +16,31 @@ RDRETRY=${RDRETRY:-180} + RDRETRY=$((RDRETRY * 2)) + export RDRETRY + ++if getarg 'skipbadscsi' -d 'skipbadscsi'; then ++ sd_dir=/sys/block ++ while [ "`ls $sd_dir/`" = "" ] ++ do ++ sleep 1 ++ done ++ ++ dev_num=0 ++ for _sd_device in `ls $sd_dir/` ++ do ++ blkid /dev/$_sd_device >/dev/null 2>&1 & ++ ((dev_num++)) ++ done ++ ++ sleep $dev_num ++ ++ for _sd_device in `ps -eo cmd,stat | grep -Po "(?<=blkid /dev/).*(?=D)"` ++ do ++ echo offline > $sd_dir/$_sd_device/device/state ++ echo "Dev $_sd_device maybe broken, set it offline" > /dev/kmsg ++ done ++ ++ udevadm settle --timeout=30 ++fi ++ + main_loop=0 + export main_loop + +-- +2.19.1 + |