------- Comment From [email protected] 2017-07-18 01:04 EDT-------
I believe the following two commits associated with "writeback" code are 
required for fixing this bug,

commit 03e262798884b0a5f948b17433afd80606cb3497
Author: Jan Kara <[email protected]>
Date:   Thu Mar 23 01:36:53 2017 +0100

block: Fix bdi assignment to bdev inode when racing with disk delete

When disk->fops->open() in __blkdev_get() returns -ERESTARTSYS, we
restart the process of opening the block device. However we forget to
switch bdev->bd_bdi back to noop_backing_dev_info and as a result bdev
inode will be pointing to a stale bdi. Fix the problem by setting
bdev->bd_bdi later when __blkdev_get() is already guaranteed to succeed.

commit f759741d9d913eb57784a94b9bca78b376fc26a9
Author: Jan Kara <[email protected]>
Date:   Thu Mar 23 01:37:00 2017 +0100

block: Fix oops in locked_inode_to_wb_and_lock_list()

When block device is closed, we call inode_detach_wb() in __blkdev_put()
which sets inode->i_wb to NULL. That is contrary to expectations that
inode->i_wb stays valid once set during the whole inode's lifetime and
leads to oops in wb_get() in locked_inode_to_wb_and_lock_list() because
inode_to_wb() returned NULL.

The reason why we called inode_detach_wb() is not valid anymore though.
BDI is guaranteed to stay along until we call bdi_put() from
bdev_evict_inode() so we can postpone calling inode_detach_wb() to that
moment.

Also add a warning to catch if someone uses inode_detach_wb() in a
dangerous way.

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

Title:
  Ubuntu 17.04: Guest crashed @writeback_sb_inodes+0x310/0x590

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu-power-systems/+bug/1702998/+subscriptions

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to