linux-stable/drivers/block
Bart Van Assche 3b11177e3e loop: Select I/O scheduler 'none' from inside add_disk()
commit 2112f5c133 upstream.

We noticed that the user interface of Android devices becomes very slow
under memory pressure. This is because Android uses the zram driver on top
of the loop driver for swapping, because under memory pressure the swap
code alternates reads and writes quickly, because mq-deadline is the
default scheduler for loop devices and because mq-deadline delays writes by
five seconds for such a workload with default settings. Fix this by making
the kernel select I/O scheduler 'none' from inside add_disk() for loop
devices. This default can be overridden at any time from user space,
e.g. via a udev rule. This approach has an advantage compared to changing
the I/O scheduler from userspace from 'mq-deadline' into 'none', namely
that synchronize_rcu() does not get called.

This patch changes the default I/O scheduler for loop devices from
'mq-deadline' into 'none'.

Additionally, this patch reduces the Android boot time on my test setup
with 0.5 seconds compared to configuring the loop I/O scheduler from user
space.

Cc: Christoph Hellwig <hch@lst.de>
Cc: Ming Lei <ming.lei@redhat.com>
Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Cc: Martijn Coenen <maco@android.com>
Cc: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Link: https://lore.kernel.org/r/20210805174200.3250718-3-bvanassche@acm.org
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-08-11 11:45:36 +02:00
..
aoe aoe: register default groups with device_add_disk() 2021-03-11 14:05:00 +01:00
drbd treewide: Remove uninitialized_var() usage 2023-08-11 11:45:01 +02:00
mtip32xx block: genhd: add 'groups' argument to device_add_disk 2021-03-11 14:04:59 +01:00
paride
rsxx block: rsxx: fix error return code of rsxx_pci_probe() 2021-03-17 16:43:51 +01:00
xen-blkback xen-blkback: don't leak persistent grants from xen_blkbk_map() 2021-03-30 14:37:03 +02:00
zram zram: off by one in read_block_state() 2021-11-26 11:36:16 +01:00
amiflop.c amiflop: clean up on errors during setup 2019-12-01 09:16:25 +01:00
ataflop.c ataflop: fix error handling during setup 2018-11-13 11:08:20 -08:00
brd.c brd: check and limit max_part par 2020-02-24 08:34:53 +01:00
cryptoloop.c cryptoloop: add a deprecation warning 2021-09-22 11:47:46 +02:00
DAC960.c
DAC960.h
floppy.c floppy: use a statically allocated error counter 2022-05-25 09:10:36 +02:00
Kconfig floppy: disable FDRAWCMD by default 2022-05-01 17:00:34 +02:00
loop.c loop: Select I/O scheduler 'none' from inside add_disk() 2023-08-11 11:45:36 +02:00
loop.h block/loop: Use global lock for ioctl() operation. 2019-01-22 21:40:36 +01:00
Makefile
nbd.c nbd: Add the maximum limit of allocated index in nbd_dev_add 2023-08-11 11:45:24 +02:00
null_blk.h
null_blk_main.c null_blk: fix ida error handling in null_add_dev() 2022-08-25 11:15:19 +02:00
null_blk_zoned.c drivers/block/null_blk/main: Fix a double free in null_init. 2021-05-22 10:59:34 +02:00
pktcdvd.c pktcdvd: remove warning on attempting to register non-passthrough dev 2019-10-07 18:57:15 +02:00
ps3disk.c block: genhd: add 'groups' argument to device_add_disk 2021-03-11 14:04:59 +01:00
ps3vram.c block: genhd: add 'groups' argument to device_add_disk 2021-03-11 14:04:59 +01:00
rbd.c rbd: avoid use-after-free in do_rbd_add() when rbd_dev_create() fails 2023-03-11 16:31:53 +01:00
rbd_types.h
skd_main.c block: genhd: add 'groups' argument to device_add_disk 2021-03-11 14:04:59 +01:00
skd_s1120.h
sunvdc.c block: sunvdc: add check for mdesc_grab() returning NULL 2023-03-22 13:27:09 +01:00
swim.c swim: fix cleanup on setup error 2018-11-13 11:08:20 -08:00
swim3.c block/swim3: Fix -EBUSY error when re-opening device after unmount 2019-02-12 19:47:18 +01:00
swim_asm.S
sx8.c
umem.c
umem.h
virtio_blk.c virtio-blk: Use blk_validate_block_size() to validate block size 2022-04-15 14:14:37 +02:00
xen-blkfront.c xen/blkfront: Only check REQ_FUA for writes 2023-06-21 15:39:57 +02:00
xsysace.c xsysace: Fix error handling in ace_setup 2019-05-08 07:21:51 +02:00
z2ram.c