linux/drivers/md/bcache
Coly Li 6e916a7eb1 bcache: store disk name in struct cache and struct cached_dev
Current code uses bdevname() or bio_devname() to reference gendisk
disk name when bcache needs to display the disk names in kernel message.
It was safe before bcache device failure handling patch set merged in,
because when devices are failed, there was deadlock to prevent bcache
printing error messages with gendisk disk name. But after the failure
handling patch set merged, the deadlock is fixed, so it is possible
that the gendisk structure bdev->hd_disk is released when bdevname() is
called to reference bdev->bd_disk->disk_name[]. This is why I receive
bug report of NULL pointers deference panic.

This patch stores gendisk disk name in a buffer inside struct cache and
struct cached_dev, then print out the offline device name won't reference
bdev->hd_disk anymore. And this patch also avoids extra function calls
of bdevname() and bio_devnmae().

Changelog:
v3, add Reviewed-by from Hannes.
v2, call bdevname() earlier in register_bdev()
v1, first version with segguestion from Junhui Tang.

Fixes: c7b7bd0740 ("bcache: add io_disable to struct cached_dev")
Fixes: 5138ac6748 ("bcache: fix misleading error message in bch_count_io_errors()")
Signed-off-by: Coly Li <colyli@suse.de>
Reviewed-by: Hannes Reinecke <hare@suse.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2018-05-03 08:35:08 -06:00
..
alloc.c bcache: add CACHE_SET_IO_DISABLE to struct cache_set flags 2018-03-18 20:15:20 -06:00
bcache.h bcache: store disk name in struct cache and struct cached_dev 2018-05-03 08:35:08 -06:00
bset.c bcache: Suppress more warnings about set-but-not-used variables 2018-03-18 20:15:20 -06:00
bset.h bcache: Add __printf annotation to __bch_check_keys() 2018-03-18 20:15:20 -06:00
btree.c bcache: Fix kernel-doc warnings 2018-03-18 20:15:20 -06:00
btree.h Merge branch 'for-4.15/block' of git://git.kernel.dk/linux-block 2017-11-14 15:32:19 -08:00
closure.c bcache: Fix kernel-doc warnings 2018-03-18 20:15:20 -06:00
closure.h bcache: move closure debug file into debug directory 2018-03-18 20:15:20 -06:00
debug.c bcache: store disk name in struct cache and struct cached_dev 2018-05-03 08:35:08 -06:00
debug.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
extents.c bcache: Remove an unused variable 2018-03-18 20:15:20 -06:00
extents.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
io.c bcache: store disk name in struct cache and struct cached_dev 2018-05-03 08:35:08 -06:00
journal.c bcache: Reduce the number of sparse complaints about lock imbalances 2018-03-18 20:15:20 -06:00
journal.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
Kconfig bcache: Kill dead cgroup code 2014-03-18 12:22:35 -07:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
movinggc.c block: move bio_alloc_pages() to bcache 2018-01-06 09:18:00 -07:00
request.c bcache: store disk name in struct cache and struct cached_dev 2018-05-03 08:35:08 -06:00
request.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
stats.c md: Convert timers to use timer_setup() 2017-11-14 20:11:57 -07:00
stats.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
super.c bcache: store disk name in struct cache and struct cached_dev 2018-05-03 08:35:08 -06:00
sysfs.c bcache: add io_disable to struct cached_dev 2018-03-18 20:15:20 -06:00
sysfs.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
trace.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
util.c bcache: Fix kernel-doc warnings 2018-03-18 20:15:20 -06:00
util.h bcache: add CACHE_SET_IO_DISABLE to struct cache_set flags 2018-03-18 20:15:20 -06:00
writeback.c bcache: add backing_request_endio() for bi_end_io 2018-03-18 20:15:20 -06:00
writeback.h bcache: Fix indentation 2018-03-18 20:15:20 -06:00