Bart Van Assche
be4d2b4562
loop: Select I/O scheduler 'none' from inside add_disk()
...
commit 2112f5c1330a671fa852051d85cb9eadc05d7eb7 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:53:54 +02:00
..
accessibility
acpi
ACPI: processor: perflib: Avoid updating frequency QoS unnecessarily
2023-08-11 11:53:53 +02:00
amba
android
binder: fix UAF caused by faulty buffer cleanup
2023-06-05 08:17:33 +02:00
ata
ata: pata_ns87415: mark ns87560_tf_read static
2023-08-11 11:53:49 +02:00
atm
treewide: Remove uninitialized_var() usage
2023-06-09 10:29:01 +02:00
auxdisplay
base
x86/speculation: Add Gather Data Sampling mitigation
2023-08-08 19:56:35 +02:00
bcma
block
loop: Select I/O scheduler 'none' from inside add_disk()
2023-08-11 11:53:54 +02:00
bluetooth
Revert "Bluetooth: btsdio: fix use after free bug in btsdio_remove due to unfinished work"
2023-05-17 11:35:45 +02:00
bus
bus: imx-weim: fix branch condition evaluates to a garbage value
2023-04-05 11:16:42 +02:00
cdrom
char
tpm_tis: Explicitly check for error code
2023-08-11 11:53:52 +02:00
clk
clk: keystone: sci-clk: check return value of kasprintf()
2023-07-27 08:37:15 +02:00
clocksource
clocksource/drivers/cadence-ttc: Fix memory leak in ttc_timer_probe
2023-07-27 08:37:05 +02:00
connector
counter
counter: 104-quad-8: Fix race condition between FLAG and CNTR reads
2023-05-17 11:35:31 +02:00
cpufreq
cpufreq: intel_pstate: Drop ACPI _PSS states table patching
2023-08-11 11:53:53 +02:00
cpuidle
crypto
crypto: marvell/cesa - Fix type mismatch warning
2023-07-27 08:37:18 +02:00
dax
dca
devfreq
dio
dma
dmaengine: pl330: rename _start to prevent build error
2023-06-09 10:28:52 +02:00
dma-buf
edac
EDAC/skx: Fix overflows on the DRAM row address mapping arrays
2023-05-17 11:35:35 +02:00
eisa
extcon
extcon: Fix kernel doc of property capability fields to avoid warnings
2023-07-27 08:37:20 +02:00
firewire
treewide: Remove uninitialized_var() usage
2023-06-09 10:29:01 +02:00
firmware
firmware: stratix10-svc: Fix a potential resource leak in svc_create_memory_pool()
2023-07-27 08:37:37 +02:00
fpga
fpga: bridge: fix kernel-doc parameter description
2023-05-17 11:35:46 +02:00
fsi
gnss
gpio
gpio: tps68470: Make tps68470_gpio_output() always set the initial value
2023-08-11 11:53:44 +02:00
gpu
drm/msm: Fix IS_ERR_OR_NULL() vs NULL check in a5xx_submit_in_rb()
2023-08-11 11:53:49 +02:00
greybus
hid
HID: wacom: Use ktime_t rather than int when dealing with timestamps
2023-07-27 08:37:03 +02:00
hsi
hv
Drivers: hv: vmbus: Fix vmbus_wait_for_unload() to scan present CPUs
2023-06-28 10:18:36 +02:00
hwmon
hwmon: (nct7802) Fix for temp6 (PECI1) processed even if PECI1 disabled
2023-08-11 11:53:52 +02:00
hwspinlock
hwtracing
coresight: Fix signedness bug in tmc_etr_buf_insert_barrier_packet()
2023-05-30 12:44:10 +01:00
i2c
i2c: xiic: Don't try to handle more interrupt events after error
2023-07-27 08:37:24 +02:00
i3c
ide
treewide: Remove uninitialized_var() usage
2023-06-09 10:29:01 +02:00
idle
iio
meson saradc: fix clock divider mask length
2023-07-27 08:37:38 +02:00
infiniband
RDMA/mlx4: Make check for invalid flags stricter
2023-08-11 11:53:48 +02:00
input
Input: adxl34x - do not hardcode interrupt trigger type
2023-07-27 08:37:13 +02:00
interconnect
interconnect: fix mem leak when freeing nodes
2023-03-22 13:28:08 +01:00
iommu
iommu/amd: Don't block updates to GATag if guest mode is on
2023-06-09 10:28:52 +02:00
ipack
irqchip
irq-bcm6345-l1: Do not assume a fixed block to cpu mapping
2023-08-11 11:53:52 +02:00
isdn
leds
leds: TI_LMU_COMMON: select REGMAP instead of depending on it
2023-05-17 11:35:53 +02:00
lightnvm
macintosh
macintosh: via-pmu-led: requires ATA to be set
2023-05-17 11:35:50 +02:00
mailbox
mailbox: ti-msgmgr: Fill non-message tx data fields with 0x0
2023-07-27 08:37:23 +02:00
mcb
mcb-pci: Reallocate memory region to avoid memory overlapping
2023-05-30 12:44:04 +01:00
md
dm cache policy smq: ensure IO doesn't prevent cleaner policy progress
2023-08-11 11:53:53 +02:00
media
media: usb: siano: Fix warning due to null work_func_t function pointer
2023-07-27 08:37:20 +02:00
memory
memory: brcmstb_dpfe: fix testing array offset after use
2023-07-27 08:37:14 +02:00
memstick
memstick r592: make memstick_debug_get_tpc_name() static
2023-07-27 08:37:10 +02:00
message
scsi: message: mptlan: Fix use after free bug in mptlan_remove() due to race condition
2023-05-30 12:44:03 +01:00
mfd
mfd: stmpe: Only disable the regulators if they are enabled
2023-07-27 08:37:22 +02:00
misc
misc: pci_endpoint_test: Re-init completion for every test
2023-07-27 08:37:37 +02:00
mmc
mmc: sdhci: fix DMA configure compatibility issue when 64bit DMA mode is used.
2023-07-27 08:37:25 +02:00
mtd
mtd: rawnand: meson: fix unaligned DMA buffers handling
2023-07-27 08:37:34 +02:00
mux
net
virtio-net: fix race between set queues and probe
2023-08-11 11:53:52 +02:00
nfc
nfcsim.c: Fix error checking for debugfs_create_dir
2023-06-28 10:18:41 +02:00
ntb
NTB: ntb_tool: Add check for devm_kcalloc
2023-07-27 08:37:32 +02:00
nubus
nvdimm
nvme
nvme-fcloop: fix "inconsistent {IN-HARDIRQ-W} -> {HARDIRQ-ON-W} usage"
2023-05-17 11:35:43 +02:00
nvmem
of
of: Fix modalias string generation
2023-05-17 11:35:47 +02:00
opp
oprofile
parisc
parport
pci
PCI/ASPM: Avoid link retraining race
2023-08-11 11:53:45 +02:00
pcmcia
perf
phy
phy: hisilicon: Fix an out of bounds check in hisi_inno_phy_probe()
2023-08-11 11:53:47 +02:00
pinctrl
pinctrl: amd: Use amd_pinconf_set() for all config options
2023-07-27 08:37:43 +02:00
platform
platform/x86: msi-laptop: Fix rfkill out-of-sync on MSI Wind U100
2023-08-11 11:53:48 +02:00
pnp
power
power: supply: Fix logic checking if system is running from battery
2023-06-21 15:44:09 +02:00
powercap
powercap: RAPL: Fix CONFIG_IOSF_MBI dependency
2023-07-27 08:37:06 +02:00
pps
ps3
ptp
ptp_qoriq: fix memory leak in probe()
2023-04-05 11:16:43 +02:00
pwm
pwm: meson: fix handling of period/duty if greater than UINT_MAX
2023-08-11 11:53:46 +02:00
rapidio
ras
regulator
regulator: core: Streamline debugfs operations
2023-07-27 08:37:07 +02:00
remoteproc
remoteproc: st: Call of_node_put() on iteration error
2023-05-17 11:36:01 +02:00
reset
rpmsg
rtc
rtc: st-lpc: Release some resources in st_rtc_probe() in case of error
2023-07-27 08:37:22 +02:00
s390
s390/dasd: fix hanging device after quiesce/resume
2023-08-11 11:53:53 +02:00
sbus
scsi
scsi: qla2xxx: Array index may go out of bound
2023-08-11 11:53:46 +02:00
sfi
sh
siox
slimbus
soc
soc/fsl/qe: fix usb.c build errors
2023-07-27 08:37:14 +02:00
soundwire
spi
spi: bcm63xx: fix max prepend length
2023-07-27 08:37:43 +02:00
spmi
spmi: Add a check for remove callback when removing a SPMI driver
2023-05-17 11:35:49 +02:00
ssb
treewide: Remove uninitialized_var() usage
2023-06-09 10:29:01 +02:00
staging
staging: ks7010: potential buffer overflow in ks_wlan_set_encode_ext()
2023-08-11 11:53:52 +02:00
target
scsi: target: iscsi: Prevent login threads from racing between each other
2023-06-28 10:18:40 +02:00
tc
tee
thermal
thermal: intel: BXT_PMIC: select REGMAP instead of depending on it
2023-03-11 16:44:13 +01:00
thunderbolt
thunderbolt: Use const qualifier for ring_interrupt_index
2023-04-05 11:16:39 +02:00
tty
serial: sifive: Fix sifive_serial_console_setup() section
2023-08-11 11:53:50 +02:00
uio
usb
Revert "usb: xhci: tegra: Fix error check"
2023-08-11 11:53:51 +02:00
vfio
vhost
treewide: Remove uninitialized_var() usage
2023-06-09 10:29:01 +02:00
video
fbdev: au1200fb: Fix missing IRQ check in au1200fb_drv_probe
2023-07-27 08:37:44 +02:00
virt
virtio
treewide: Remove uninitialized_var() usage
2023-06-09 10:29:01 +02:00
visorbus
vlynq
vme
w1
w1: fix loop in w1_fini()
2023-07-27 08:37:19 +02:00
watchdog
watchdog: menz069_wdt: fix watchdog initialisation
2023-06-09 10:28:55 +02:00
xen
xen/pvcalls-back: fix double frees with pvcalls_new_active_socket()
2023-05-30 12:44:10 +01:00
zorro
Kconfig
Makefile