linux/drivers/block
Pavel Tatashin 6cc8e74308 loop: scale loop device by introducing per device lock
Currently, loop device has only one global lock: loop_ctl_mutex.

This becomes hot in scenarios where many loop devices are used.

Scale it by introducing per-device lock: lo_mutex that protects
modifications of all fields in struct loop_device.

Keep loop_ctl_mutex to protect global data: loop_index_idr, loop_lookup,
loop_add.

The new lock ordering requirement is that loop_ctl_mutex must be taken
before lo_mutex.

Signed-off-by: Pavel Tatashin <pasha.tatashin@soleen.com>
Reviewed-by: Tyler Hicks <tyhicks@linux.microsoft.com>
Reviewed-by: Petr Vorel <pvorel@suse.cz>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2021-01-26 13:08:54 -07:00
..
aoe aoe: don't call set_capacity from irq context 2020-11-16 08:34:14 -07:00
drbd block: store a block_device pointer in struct bio 2021-01-24 18:17:20 -07:00
mtip32xx block: remove unnecessary argument from blk_execute_rq 2021-01-24 21:52:39 -07:00
null_blk block: store a block_device pointer in struct bio 2021-01-24 18:17:20 -07:00
paride block: remove unnecessary argument from blk_execute_rq 2021-01-24 21:52:39 -07:00
rnbd block/rnbd-clt: avoid module unload race with close confirmation 2021-01-08 08:19:18 -07:00
rsxx block: store a block_device pointer in struct bio 2021-01-24 18:17:20 -07:00
xen-blkback for-5.11/block-2020-12-14 2020-12-16 12:57:51 -08:00
zram block: store a block_device pointer in struct bio 2021-01-24 18:17:20 -07:00
amiflop.c amiflop: use separate gendisks for Amiga vs MS-DOS mode 2020-11-16 08:14:30 -07:00
ataflop.c ataflop: use a separate gendisk for each media format 2020-11-16 08:14:31 -07:00
brd.c block: store a block_device pointer in struct bio 2021-01-24 18:17:20 -07:00
cryptoloop.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 30 2019-05-24 17:27:10 +02:00
floppy.c floppy: use a separate gendisk for each media format 2020-11-16 08:14:30 -07:00
Kconfig block: rsxx: select CONFIG_CRC32 2021-01-03 14:54:43 -07:00
loop.c loop: scale loop device by introducing per device lock 2021-01-26 13:08:54 -07:00
loop.h loop: scale loop device by introducing per device lock 2021-01-26 13:08:54 -07:00
Makefile null_blk: Move driver into its own directory 2020-12-07 17:36:04 -07:00
nbd.c nbd: Respect max_part for all partition scans 2020-12-17 07:54:51 -07:00
pktcdvd.c block: remove unnecessary argument from blk_execute_rq 2021-01-24 21:52:39 -07:00
ps3disk.c powerpc/ps3: make system bus's remove and shutdown callbacks return void 2020-12-04 01:01:22 +11:00
ps3vram.c block: store a block_device pointer in struct bio 2021-01-24 18:17:20 -07:00
rbd_types.h libceph, rbd: replace zero-length array with flexible-array 2020-06-01 13:22:53 +02:00
rbd.c rbd: remove the ->set_read_only method 2021-01-24 18:15:57 -07:00
skd_main.c skd_main: remove unused including <linux/version.h> 2020-10-17 08:11:14 -06:00
skd_s1120.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 497 2019-06-19 17:09:53 +02:00
sunvdc.c compat_ioctl: block: handle cdrom compat ioctl in non-cdrom drivers 2020-01-03 09:33:15 +01:00
swim3.c swim3: use bdev_check_media_changed 2020-09-10 09:32:31 -06:00
swim_asm.S treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
swim.c swim: don't call blk_register_region 2020-11-16 08:14:30 -07:00
sx8.c block: remove unnecessary argument from blk_execute_rq_nowait 2021-01-24 21:52:39 -07:00
umem.c block: store a block_device pointer in struct bio 2021-01-24 18:17:20 -07:00
umem.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 348 2019-06-05 17:37:08 +02:00
virtio_blk.c block: remove unnecessary argument from blk_execute_rq 2021-01-24 21:52:39 -07:00
xen-blkfront.c xen: branch for v5.11-rc1b 2020-12-19 12:56:23 -08:00
xsysace.c xsysace: use platform_get_resource() and platform_get_irq_optional() 2020-10-29 08:22:33 -06:00
z2ram.c z2ram: use separate gendisk for the different modes 2020-11-16 08:14:31 -07:00