Thank you for taking the time to report this bug and helping to make Ubuntu 
better. Please execute the following command only once, as it will 
automatically gather debugging information, in a terminal:
apport-collect 1905160

When reporting bugs in the future please use apport by using 'ubuntu-
bug' and the name of the package affected. You can learn more about this
functionality at https://wiki.ubuntu.com/ReportingBugs.

-- 
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

Reply via email to