v1 of these changes [1] was a one line change to bdev_get_queue() to prevent a shutdown crash when del_gendisk() races the final __blkdev_put(). While it is known at del_gendisk() time that the queue is still alive, Jan Kara points to other paths [2] that are racing __blkdev_put() where the assumption that ->bd_queue, or inode->i_wb is valid does not hold. Fix that broken assumption, make it the case that if you have a live block_device, or block_device-inode that the corresponding queue and inode-write-back data is still valid. These changes survive a run of the libnvdimm unit test suite which puts some stress on the block_device shutdown path. --- Changes since v1 [1]: * Introduce "block: fix lifetime of request_queue / backing_dev_info relative to bdev" to keep the queue allocated and the inode attached for writeback until ->destroy_inode() time. * Rework the comments in "block: fix blk_get_backing_dev_info() crash, use bdev->bd_queue" to reflect the assumptions about the liveness of ->bd_queue. [1]: http://marc.info/?l=linux-block&m=148366637105761&w=2 [2]: http://www.spinics.net/lists/linux-fsdevel/msg105153.html --- Dan Williams (2): block: fix lifetime of request_queue / backing_dev_info relative to bdev block: fix blk_get_backing_dev_info() crash, use bdev->bd_queue block/blk-core.c | 7 ++++--- fs/block_dev.c | 25 +++++++++++++++---------- include/linux/blkdev.h | 6 +++++- include/linux/fs.h | 1 + 4 files changed, 25 insertions(+), 14 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html