Verification done for zfs-linux on xenial-proposed.

The inodes for file, xattr dir, and xattr child are all evicted at file
removal time, not making it to any disposal list after file removal.

So the window/scenario for the problem to occur is not present anymore.

Log
---

$ echo 'deb http://archive.ubuntu.com/ubuntu xenial-proposed main restricted 
universe' | sudo tee /etc/apt/sources.list.d/xenial-proposed-universe.list
$ sudo apt-get update

$ apt-cache madison zfs-dkms | grep proposed
  zfs-dkms | 0.6.5.6-0ubuntu28 | http://archive.ubuntu.com/ubuntu 
xenial-proposed/universe amd64 Packages

$ sudo apt-get install -y spl-dkms zfs-dkms

$ modinfo zfs | head
filename:       /lib/modules/4.4.0-157-generic/updates/dkms/zfs.ko
version:        0.6.5.6-0ubuntu28
...

$ sudo ./zfs-mount.sh

$ echo 2 | sudo tee /proc/sys/vm/drop_caches 
2

$ sudo ./zfs-kprobes.sh

$ touch /zfs/file
           <...>-26587 [001] d...  1196.781161: p_zfs_mknode_0: 
(zfs_mknode+0x0/0xe00 [zfs]) flag=0x0 dzp=0xffff88004ccfc000
           <...>-26587 [001] d...  1196.781306: p_zfs_znode_alloc_0: 
(zfs_znode_alloc+0x0/0x520 [zfs]) obj=0xa
           <...>-26587 [001] d...  1196.781336: r_zfs_znode_alloc_0: 
(zfs_mknode+0x8a3/0xe00 [zfs] <- zfs_znode_alloc) zpp=0xffff88004cd04cc0

$ setfattr -n user.debug -v 1 /zfs/file
        setfattr-26588 [000] d...  1199.095554: p_zfs_mknode_0: 
(zfs_mknode+0x0/0xe00 [zfs]) flag=0x2 dzp=0xffff88004cd04cc0
        setfattr-26588 [000] d...  1199.095937: p_zfs_znode_alloc_0: 
(zfs_znode_alloc+0x0/0x520 [zfs]) obj=0xb
        setfattr-26588 [000] d...  1199.096145: r_zfs_znode_alloc_0: 
(zfs_mknode+0x8a3/0xe00 [zfs] <- zfs_znode_alloc) zpp=0xffff88004c567740
        setfattr-26588 [000] d...  1199.096539: p_zfs_zget_0: 
(zfs_zget+0x0/0x230 [zfs]) zsb=0xffff88004d1c8000 obj=0xa
        setfattr-26588 [000] d...  1199.096779: r_zfs_zget_0: 
(zfs_zaccess+0x12b/0x220 [zfs] <- zfs_zget)
        setfattr-26588 [000] d...  1199.097139: p_zfs_zget_0: 
(zfs_zget+0x0/0x230 [zfs]) zsb=0xffff88004d1c8000 obj=0xa
        setfattr-26588 [000] d...  1199.097352: r_zfs_zget_0: 
(zfs_zaccess+0x12b/0x220 [zfs] <- zfs_zget)
        setfattr-26588 [000] d...  1199.097661: p_zfs_zget_0: 
(zfs_zget+0x0/0x230 [zfs]) zsb=0xffff88004d1c8000 obj=0xa
        setfattr-26588 [000] d...  1199.097892: r_zfs_zget_0: 
(zfs_zaccess+0x12b/0x220 [zfs] <- zfs_zget)
        setfattr-26588 [000] d...  1199.098217: p_zfs_mknode_0: 
(zfs_mknode+0x0/0xe00 [zfs]) flag=0x0 dzp=0xffff88004c567740
        setfattr-26588 [000] d...  1199.098449: p_zfs_znode_alloc_0: 
(zfs_znode_alloc+0x0/0x520 [zfs]) obj=0xc
        setfattr-26588 [000] d...  1199.098652: r_zfs_znode_alloc_0: 
(zfs_mknode+0x8a3/0xe00 [zfs] <- zfs_znode_alloc) zpp=0xffff88004c567300

$ rm /zfs/file 
           <...>-26589 [001] d...  1201.376695: p_zfs_zget_0: 
(zfs_zget+0x0/0x230 [zfs]) zsb=0xffff88004d1c8000 obj=0xa
           <...>-26589 [001] d...  1201.376749: r_zfs_zget_0: 
(zfs_dirent_lock+0x56c/0x6c0 [zfs] <- zfs_zget)
              rm-26589 [001] d...  1201.376772: p_zfs_zget_0: 
(zfs_zget+0x0/0x230 [zfs]) zsb=0xffff88004d1c8000 obj=0xb
              rm-26589 [001] d...  1201.376778: r_zfs_zget_0: 
(zfs_remove+0x22b/0x4c0 [zfs] <- zfs_zget)
              rm-26589 [001] d...  1201.376904: p_zpl_evict_inode_0: 
(zpl_evict_inode+0x0/0x60 [zfs]) inode=0xffff88004cd04ed0
              rm-26589 [001] d...  1201.376922: p_zfs_inactive_0: 
(zfs_inactive+0x0/0x270 [zfs]) inode=0xffff88004cd04ed0
              rm-26589 [001] d...  1201.376923: p_zfs_zinactive_0: 
(zfs_zinactive+0x0/0xe0 [zfs]) znode=0xffff88004cd04cc0 obj=0xa
              rm-26589 [001] d...  1201.376927: p_zfs_rmnode_0: 
(zfs_rmnode+0x0/0x360 [zfs]) znode=0xffff88004cd04cc0
              rm-26589 [001] d...  1201.376942: p_zfs_zget_0: 
(zfs_zget+0x0/0x230 [zfs]) zsb=0xffff88004d1c8000 obj=0xb
              rm-26589 [001] d...  1201.376999: r_zfs_zget_0: 
(zfs_rmnode+0x25b/0x360 [zfs] <- zfs_zget)
              rm-26589 [001] d...  1201.377043: p_zfs_iput_async_0: 
(zfs_iput_async+0x0/0x60 [zfs]) inode=0xffff88004c567950 obj=0x0
          z_iput-26241 [001] d...  1201.377065: p_zpl_evict_inode_0: 
(zpl_evict_inode+0x0/0x60 [zfs]) inode=0xffff88004c567950
          z_iput-26241 [001] d...  1201.377067: p_zfs_inactive_0: 
(zfs_inactive+0x0/0x270 [zfs]) inode=0xffff88004c567950
          z_iput-26241 [001] d...  1201.377067: p_zfs_zinactive_0: 
(zfs_zinactive+0x0/0xe0 [zfs]) znode=0xffff88004c567740 obj=0xb
          z_iput-26241 [001] d...  1201.377070: p_zfs_rmnode_0: 
(zfs_rmnode+0x0/0x360 [zfs]) znode=0xffff88004c567740
          z_iput-26241 [001] d...  1201.377072: p_zfs_purgedir_0: 
(zfs_purgedir+0x0/0x230 [zfs]) znode=0xffff88004c567740
          z_iput-26241 [001] d...  1201.377079: p_zfs_zget_0: 
(zfs_zget+0x0/0x230 [zfs]) zsb=0xffff88004d1c8000 obj=0xc
          z_iput-26241 [001] d...  1201.377085: r_zfs_zget_0: 
(zfs_purgedir+0xb4/0x230 [zfs] <- zfs_zget)
          z_iput-26241 [001] d...  1201.377117: p_zfs_iput_async_0: 
(zfs_iput_async+0x0/0x60 [zfs]) inode=0xffff88004c567510 obj=0x0
          z_iput-26241 [001] d...  1201.377123: r_zfs_purgedir_0: 
(zfs_rmnode+0x272/0x360 [zfs] <- zfs_purgedir)
          z_iput-26241 [001] d...  1201.377160: p_zpl_evict_inode_0: 
(zpl_evict_inode+0x0/0x60 [zfs]) inode=0xffff88004c567510
          z_iput-26241 [001] d...  1201.377161: p_zfs_inactive_0: 
(zfs_inactive+0x0/0x270 [zfs]) inode=0xffff88004c567510
          z_iput-26241 [001] d...  1201.377162: p_zfs_zinactive_0: 
(zfs_zinactive+0x0/0xe0 [zfs]) znode=0xffff88004c567300 obj=0xc
          z_iput-26241 [001] d...  1201.377164: p_zfs_rmnode_0: 
(zfs_rmnode+0x0/0x360 [zfs]) znode=0xffff88004c567300

$ echo 2 | sudo tee /proc/sys/vm/drop_caches 
2
           <...>-26592 [001] d...  1204.543205: p_dispose_list_0: 
(dispose_list+0x0/0x50)
             tee-26592 [001] dN..  1204.543357: p_dispose_list_0: 
(dispose_list+0x0/0x50)
             tee-26592 [001] d...  1204.543652: p_dispose_list_0: 
(dispose_list+0x0/0x50)
             tee-26592 [001] d...  1204.543799: p_dispose_list_0: 
(dispose_list+0x0/0x50)
             tee-26592 [001] d...  1204.544250: p_dispose_list_0: 
(dispose_list+0x0/0x50)
             tee-26592 [001] d...  1204.544429: p_dispose_list_0: 
(dispose_list+0x0/0x50)


** Tags added: verification-done-xenial

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1839521

Title:
  Xenial: ZFS deadlock in shrinker path with xattrs

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1839521/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to