Thanks Hajo, I was working the fix last night with a detection of the
two different lookup_bdev calls and been regression testing during the
night for Zesty, Yakkety and Xenial. I've got my fix already prepared...

So the way this kind of fix works with Ubuntu is as follows:

1. Change goes into zfsutils-linux
2. Sync the delta into the kernel package

I've put the zfsutils updates in ppa:

https://launchpad.net/~colin-king/+archive/ubuntu/zfs-lp-1636517
sudo add-apt-repository ppa:colin-king/zfs-lp-1636517
sudo apt-get update && sudo apt-get upgrade

And the fix in some test kernels:

http://kernel.ubuntu.com/~cking/zfs-lp-163651

These have been tested against our internal zfs regression tests and
pass.

@Fabian can you test these and if they are OK I'll SRU these. Thanks!

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1636517

Title:
  zfs: importing zpool with vdev on zvol hangs kernel

Status in linux package in Ubuntu:
  Triaged
Status in zfs-linux package in Ubuntu:
  New

Bug description:
  [SRU Request][Xenial][Yakkety]

  if a zvol of an existing, already imported zpool is a vdev of another
  zpool, a call to "zpool import" will everything zfs related. the stack
  trace is as follows:

  [<ffffffffc038d374>] taskq_wait+0x74/0xe0 [spl]
  [<ffffffffc038d42b>] taskq_destroy+0x4b/0x100 [spl]
  [<ffffffffc04a4afd>] vdev_open_children+0x12d/0x180 [zfs]
  [<ffffffffc04ae6cc>] vdev_root_open+0x3c/0xc0 [zfs]
  [<ffffffffc04a45f5>] vdev_open+0xf5/0x4d0 [zfs]
  [<ffffffffc048f11e>] spa_load+0x39e/0x1c60 [zfs]
  [<ffffffffc049170d>] spa_tryimport+0xad/0x450 [zfs]
  [<ffffffffc04c42d4>] zfs_ioc_pool_tryimport+0x64/0xa0 [zfs]
  [<ffffffffc04c770b>] zfsdev_ioctl+0x44b/0x4e0 [zfs]
  [<ffffffff8122124f>] do_vfs_ioctl+0x29f/0x490
  [<ffffffff812214b9>] SyS_ioctl+0x79/0x90
  [<ffffffff818318b2>] entry_SYSCALL_64_fastpath+0x16/0x71
  [<ffffffffffffffff>] 0xffffffffffffffff

  [Fix]
  Zesty: 
https://launchpadlibrarian.net/290907232/zfs-linux_0.6.5.8-0ubuntu4_0.6.5.8-0ubuntu5.diff.gz

  Yakkety, likewise
  Xenial, likewise

  [Regression Potential]

  Minimal. This just touched one line in the zfs module
  module/zfs/zvol.cand a shim wrapper in include/linux/blkdev_compat.h

  Tested and passes with the ubuntu kernel team autotest client zfs
  regression tests.

  
  =================================================================

  I traced this back to 193fb6a2c94fab8eb8ce70a5da4d21c7d4023bee (erged
  in 4.4.0-6.21), which added a second parameter to lookup_bdev without
  patching the zfs module (which needs to special case the vdev-on-zvol
  case, and uses this exact method only in this special casing code
  path).

  attached you can find the output of "zfs send -R" ing such a zvol
  ("brokenvol.raw"), running "zfs receive POOL/TARGET < FILE" followed
  by "zpool import" should reproduce the hang.

  ProblemType: Bug
  DistroRelease: Ubuntu 16.04
  Package: linux-image-4.4.0-45-generic 4.4.0-45.66
  ProcVersionSignature: Ubuntu 4.4.0-45.66-generic 4.4.21
  Uname: Linux 4.4.0-45-generic x86_64
  NonfreeKernelModules: zfs zunicode zcommon znvpair zavl
  AlsaDevices:
   total 0
   crw-rw---- 1 root audio 116,  1 Oct 25 15:46 seq
   crw-rw---- 1 root audio 116, 33 Oct 25 15:46 timer
  AplayDevices: Error: [Errno 2] No such file or directory: 'aplay'
  ApportVersion: 2.20.1-0ubuntu2.1
  Architecture: amd64
  ArecordDevices: Error: [Errno 2] No such file or directory: 'arecord'
  AudioDevicesInUse: Error: command ['fuser', '-v', '/dev/snd/seq', 
'/dev/snd/timer'] failed with exit code 1:
  Date: Tue Oct 25 15:49:51 2016
  HibernationDevice: RESUME=/dev/mapper/xenial--vg-swap_1
  InstallationDate: Installed on 2016-10-25 (0 days ago)
  InstallationMedia: Ubuntu-Server 16.04.1 LTS "Xenial Xerus" - Release amd64 
(20160719)
  IwConfig: Error: [Errno 2] No such file or directory: 'iwconfig'
  Lsusb: Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
  MachineType: QEMU Standard PC (i440FX + PIIX, 1996)
  PciMultimedia:

  ProcFB: 0 qxldrmfb
  ProcKernelCmdLine: BOOT_IMAGE=/vmlinuz-4.4.0-45-generic 
root=/dev/mapper/hostname--vg-root ro
  RelatedPackageVersions:
   linux-restricted-modules-4.4.0-45-generic N/A
   linux-backports-modules-4.4.0-45-generic  N/A
   linux-firmware                            1.157.4
  RfKill: Error: [Errno 2] No such file or directory: 'rfkill'
  SourcePackage: linux
  UpgradeStatus: No upgrade log present (probably fresh install)
  dmi.bios.date: 04/01/2014
  dmi.bios.vendor: SeaBIOS
  dmi.bios.version: rel-1.9.3-0-ge2fc41e-prebuilt.qemu-project.org
  dmi.chassis.type: 1
  dmi.chassis.vendor: QEMU
  dmi.chassis.version: pc-i440fx-2.7
  dmi.modalias: 
dmi:bvnSeaBIOS:bvrrel-1.9.3-0-ge2fc41e-prebuilt.qemu-project.org:bd04/01/2014:svnQEMU:pnStandardPC(i440FX+PIIX,1996):pvrpc-i440fx-2.7:cvnQEMU:ct1:cvrpc-i440fx-2.7:
  dmi.product.name: Standard PC (i440FX + PIIX, 1996)
  dmi.product.version: pc-i440fx-2.7
  dmi.sys.vendor: QEMU

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1636517/+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