** Description changed: [Impact] - * Xenial's ZFS can deadlock in the memory shrinker path - after removing files with extended attributes (xattr). + * Xenial's ZFS can deadlock in the memory shrinker path + after removing files with extended attributes (xattr). - * Extended attributes are enabled by default, but are - _not_ used by default, which reduces the likelyhood. + * Extended attributes are enabled by default, but are + _not_ used by default, which reduces the likelyhood. - * It's very difficult/rare to reproduce this problem, - due to file/xattr/remove/shrinker/lru order/timing - circumstances required. (weeks for a reporter user) - but a synthetic test-case has been found for tests. + * It's very difficult/rare to reproduce this problem, + due to file/xattr/remove/shrinker/lru order/timing + circumstances required. (weeks for a reporter user) + but a synthetic test-case has been found for tests. [Test Case] - * A synthetic reproducer is available for this LP, - with a few steps to touch/setfattr/rm/drop_caches - plus a kernel module to massage the disposal list. + * A synthetic reproducer is available for this LP, + with a few steps to touch/setfattr/rm/drop_caches + plus a kernel module to massage the disposal list. + (comment #8) - * In the original ZFS module: - the xattr dir inode is not purged immediately on - file removal, but possibly purged _two_ shrinker - invocations later. This allows for other thread - started before file remove to call zfs_zget() on - the xattr child inode and iput() it, so it makes - to the same disposal list as the xattr dir inode. + * In the original ZFS module: + the xattr dir inode is not purged immediately on + file removal, but possibly purged _two_ shrinker + invocations later. This allows for other thread + started before file remove to call zfs_zget() on + the xattr child inode and iput() it, so it makes + to the same disposal list as the xattr dir inode. + (comment #3) - * In the modified ZFS module: - the xattr dir inode is purged immediately on file - removal not possibly later on shrinker invocation, - so the problem window above doesn't exist anymore. + * In the modified ZFS module: + the xattr dir inode is purged immediately on file + removal not possibly later on shrinker invocation, + so the problem window above doesn't exist anymore. + (comment #12) [Regression Potential] - * Low. The patches are confined to extended attributes - in ZFS, specifically node removal/purge, and another - change how an xattr child inode tracks its xattr dir - (parent) inode, so that it can be purged immediately - on removal. + * Low. The patches are confined to extended attributes + in ZFS, specifically node removal/purge, and another + change how an xattr child inode tracks its xattr dir + (parent) inode, so that it can be purged immediately + on removal. - * The ZFS test-suite has been run on original/modified - zfs-dkms package/kernel modules, with no regressions. + * The ZFS test-suite has been run on original/modified + zfs-dkms package/kernel modules, with no regressions. + (comment #11)
** Also affects: linux (Ubuntu) Importance: Undecided Status: New ** Changed in: linux (Ubuntu Eoan) Status: New => Invalid ** Changed in: linux (Ubuntu Disco) Status: New => Invalid ** Changed in: linux (Ubuntu Bionic) Status: New => Invalid ** Changed in: linux (Ubuntu Xenial) Status: New => In Progress ** Changed in: linux (Ubuntu Xenial) Assignee: (unassigned) => Mauricio Faria de Oliveira (mfo) -- 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/1839521 Title: Xenial: ZFS deadlock in shrinker path with xattrs Status in linux package in Ubuntu: Invalid Status in zfs-linux package in Ubuntu: Invalid Status in linux source package in Xenial: In Progress Status in zfs-linux source package in Xenial: In Progress Status in linux source package in Bionic: Invalid Status in zfs-linux source package in Bionic: Invalid Status in linux source package in Disco: Invalid Status in zfs-linux source package in Disco: Invalid Status in linux source package in Eoan: Invalid Status in zfs-linux source package in Eoan: Invalid Bug description: [Impact] * Xenial's ZFS can deadlock in the memory shrinker path after removing files with extended attributes (xattr). * Extended attributes are enabled by default, but are _not_ used by default, which reduces the likelyhood. * It's very difficult/rare to reproduce this problem, due to file/xattr/remove/shrinker/lru order/timing circumstances required. (weeks for a reporter user) but a synthetic test-case has been found for tests. [Test Case] * A synthetic reproducer is available for this LP, with a few steps to touch/setfattr/rm/drop_caches plus a kernel module to massage the disposal list. (comment #8) * In the original ZFS module: the xattr dir inode is not purged immediately on file removal, but possibly purged _two_ shrinker invocations later. This allows for other thread started before file remove to call zfs_zget() on the xattr child inode and iput() it, so it makes to the same disposal list as the xattr dir inode. (comment #3) * In the modified ZFS module: the xattr dir inode is purged immediately on file removal not possibly later on shrinker invocation, so the problem window above doesn't exist anymore. (comment #12) [Regression Potential] * Low. The patches are confined to extended attributes in ZFS, specifically node removal/purge, and another change how an xattr child inode tracks its xattr dir (parent) inode, so that it can be purged immediately on removal. * The ZFS test-suite has been run on original/modified zfs-dkms package/kernel modules, with no regressions. (comment #11) To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1839521/+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