Linux kernel source tree
Go to file
Yu Kuai 42e6c6ce03 lib/sbitmap: convert shallow_depth from one word to the whole sbitmap
Currently elevators will record internal 'async_depth' to throttle
asynchronous requests, and they both calculate shallow_dpeth based on
sb->shift, with the respect that sb->shift is the available tags in one
word.

However, sb->shift is not the availbale tags in the last word, see
__map_depth:

if (index == sb->map_nr - 1)
  return sb->depth - (index << sb->shift);

For consequence, if the last word is used, more tags can be get than
expected, for example, assume nr_requests=256 and there are four words,
in the worst case if user set nr_requests=32, then the first word is
the last word, and still use bits per word, which is 64, to calculate
async_depth is wrong.

One the ohter hand, due to cgroup qos, bfq can allow only one request
to be allocated, and set shallow_dpeth=1 will still allow the number
of words request to be allocated.

Fix this problems by using shallow_depth to the whole sbitmap instead
of per word, also change kyber, mq-deadline and bfq to follow this,
a new helper __map_depth_with_shallow() is introduced to calculate
available bits in each word.

Signed-off-by: Yu Kuai <yukuai3@huawei.com>
Link: https://lore.kernel.org/r/20250807032413.1469456-2-yukuai1@huaweicloud.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2025-08-07 06:30:17 -06:00
Documentation platform-drivers-x86 for v6.17-1 2025-07-28 23:21:28 -07:00
LICENSES LICENSES: add CC0-1.0 license text 2025-05-21 14:54:17 +02:00
arch platform-drivers-x86 for v6.17-1 2025-07-28 23:21:28 -07:00
block lib/sbitmap: convert shallow_depth from one word to the whole sbitmap 2025-08-07 06:30:17 -06:00
certs
crypto Crypto library updates for 6.17 2025-07-28 17:58:52 -07:00
drivers nvmet: exit debugfs after discovery subsystem exits 2025-08-07 06:27:58 -06:00
fs fscrypt updates for 6.17 2025-07-28 18:07:38 -07:00
include lib/sbitmap: convert shallow_depth from one word to the whole sbitmap 2025-08-07 06:30:17 -06:00
init for-6.17/io_uring-20250728 2025-07-28 16:30:12 -07:00
io_uring for-6.17/io_uring-20250728 2025-07-28 16:30:12 -07:00
ipc vfs-6.17-rc1.mmap_prepare 2025-07-28 13:43:25 -07:00
kernel Power management updates for 6.17-rc1 2025-07-28 20:13:36 -07:00
lib lib/sbitmap: convert shallow_depth from one word to the whole sbitmap 2025-08-07 06:30:17 -06:00
mm ACPI updates for 6.17-rc1 2025-07-28 20:44:42 -07:00
net Crypto library updates for 6.17 2025-07-28 17:58:52 -07:00
rust regulator: Updates for v6.17 2025-07-28 22:52:02 -07:00
samples Landlock update for v6.17-rc1 2025-07-28 19:21:32 -07:00
scripts Crypto library tests for 6.17 2025-07-28 18:02:58 -07:00
security Landlock update for v6.17-rc1 2025-07-28 19:21:32 -07:00
sound ASoC: Updates for v6.17 2025-07-24 14:47:49 +02:00
tools Power management updates for 6.17-rc1 2025-07-28 20:13:36 -07:00
usr usr/include: openrisc: don't HDRTEST bpf_perf_event.h 2025-05-12 15:03:17 +09:00
virt KVM: Allow CPU to reschedule while setting per-page memory attributes 2025-06-24 12:20:17 -07:00
.clang-format Linux 6.15-rc5 2025-05-06 16:39:25 +10:00
.clippy.toml rust: clean Rust 1.88.0's warning about `clippy::disallowed_macros` configuration 2025-05-07 00:11:47 +02:00
.cocciconfig
.editorconfig
.get_maintainer.ignore
.gitattributes
.gitignore .gitignore: ignore Python compiled bytecode 2025-04-24 10:12:46 -06:00
.mailmap 11 hotfixes. 9 are cc:stable and the remainder address post-6.15 issues 2025-07-24 19:13:30 -07:00
.pylintrc docs: add a .pylintrc file with sys path for docs scripts 2025-04-09 12:10:33 -06:00
.rustfmt.toml
COPYING
CREDITS mm: update MAINTAINERS entry for HMM 2025-07-19 19:26:16 -07:00
Kbuild
Kconfig
MAINTAINERS platform-drivers-x86 for v6.17-1 2025-07-28 23:21:28 -07:00
Makefile hardening updates for v6.17-rc1 2025-07-28 17:16:12 -07:00
README

README

Linux kernel
============

There are several guides for kernel developers and users. These guides can
be rendered in a number of formats, like HTML and PDF. Please read
Documentation/admin-guide/README.rst first.

In order to build the documentation, use ``make htmldocs`` or
``make pdfdocs``.  The formatted documentation can also be read online at:

    https://www.kernel.org/doc/html/latest/

There are various text files in the Documentation/ subdirectory,
several of them using the reStructuredText markup notation.

Please read the Documentation/process/changes.rst file, as it contains the
requirements for building and running the kernel, and information about
the problems which may result by upgrading your kernel.