** Attachment added: "debug output with Q&D fix" https://bugs.launchpad.net/ubuntu/+source/zfs-linux/+bug/1905160/+attachment/5436799/+files/xxxlong-patched.out
-- You received this bug notification because you are a member of Kernel Packages, which is subscribed to zfs-linux in Ubuntu. https://bugs.launchpad.net/bugs/1905160 Title: zfs-initramfs: zfs import rpool fails - too early Status in zfs-linux package in Ubuntu: New Bug description: /usr/share/initramfs-tools/scripts/zfs::import_pool() tries to import the root pool (in my case named rpool) before the related devices are available, i.e. scsi scan has been finished. I use the following Q&D workaround to fix it: --- /usr/share/initramfs-tools/scripts/zfs.orig 2020-08-18 11:10:41.000000000 +0200 +++ /usr/share/initramfs-tools/scripts/zfs 2020-11-22 09:03:10.199997698 +0100 @@ -217,12 +217,21 @@ import_pool() { local pool="$1" - local dirs dir + local dirs dir T=30 # Verify that the pool isn't already imported # Make as sure as we can to not require '-f' to import. "${ZPOOL}" get name,guid -o value -H 2>/dev/null | grep -Fxq "$pool" && return 0 + # Make sure, that at least rpool devices are available. Otherwise + # zfs import may fail for "no" reason. + while [ ! -e /dev/chassis/SYS/DOM0p2 ]; do + sleep 1 + let T-=1 + [ $T -lt 0 ] && break + done + /bin/udevadm settle + # For backwards compatibility, make sure that ZPOOL_IMPORT_PATH is set # to something we can use later with the real import(s). We want to # make sure we find all by* dirs, BUT by-vdev should be first (if it ### /dev/chassis/SYS/DOM0p2 is one dev of the rpool 3-way mirror [the others are /dev/chassis/SYS/DOM1p2 and /dev/nvme0n1p2]. DOM* are SM SuperDOMs sitting on */ata[56]/* bus, but get handled s scsi devices as well. Unfortunately things like 'udevadm settle' or 'udevadm settle --exit-if-exists=/dev/chassis/SYS/DOM0p2' or 'udevadm trigger --verbose --type=devices --subsystem-match=scsi_disk' did not fix the problem. Not sure whether there is a way to say, wait until scsi subsystem [scan] has been finished. To get a better idea I'll attach 2 files: xxxlong-fail.out shows the debug output when booting the vanilla focal, xxxlong-patched.out shows the debug output with the patch above applied. BTW: Because it takes Ubuntu ~ 29 min to boot when the 2nd pool with 44 disks is ZoL formatted, I disabled the OPROM usage of related SAS- HBA in the UEFI-BIOS (so that the disks cannot be seen) which brings it back to ~ 1:45 min until the kernel actually starts. I guess, therefore Linux needs a little bit more time to initialize it and that's why 'zfs import ...' starts too early. However, a system boot time of 30+ min is unacceptable and thus letting the BIOS initialize the HBA is not an option. I guess that's a linux efi bootloader problem: Solaris did not have any problems on this machine, even with HBA-OPROM enabled ... To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/zfs-linux/+bug/1905160/+subscriptions -- Mailing list: https://launchpad.net/~kernel-packages Post to : kernel-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~kernel-packages More help : https://help.launchpad.net/ListHelp