block: Introduce a BPF-based I/O scheduler#791
Conversation
|
Upstream branch: 66edb90 |
25a041f to
6f75bd1
Compare
|
Upstream branch: 6d35786 |
aa37cc3 to
a62c717
Compare
6f75bd1 to
1f0d33a
Compare
|
Upstream branch: 6d35786 |
a62c717 to
dbd90f6
Compare
1f0d33a to
b1870f6
Compare
|
Upstream branch: aa54b1d |
dbd90f6 to
76f4569
Compare
b1870f6 to
ca57796
Compare
|
Upstream branch: 70eda68 |
76f4569 to
96e6889
Compare
ca57796 to
c1feb59
Compare
|
Upstream branch: 8bc67e4 |
96e6889 to
35d9de4
Compare
c1feb59 to
ea833a1
Compare
|
Upstream branch: 6779b50 |
35d9de4 to
c5923f9
Compare
ea833a1 to
7af85d1
Compare
Introduce the KF_SPIN_LOCK kfunc metadata flag in BTF so kfuncs may be explicitly marked as safe to call while holding bpf_spin_lock. Allow kfuncs defined in kernel modules to be marked with KF_SPIN_LOCK. Signed-off-by: Kaitao Cheng <chengkaitao@kylinos.cn>
|
Upstream branch: 79bd2dd |
Introduce IOSCHED_UFQ, a blk-mq elevator ("ufq: User-programmable
Flexible Queueing") whose policy is supplied by an eBPF program via
struct_ops (insert, dispatch, merge, finish, etc.).
When no eBPF program is attached, the UFQ I/O scheduler uses a simple,
per-ctx queueing policy (similar to none). After an eBPF program is
attached, the user-defined scheduling policy replaces UFQ’s built-in
queueing policy, while per-ctx queues remain available as a fallback
mechanism.
Signed-off-by: Kaitao Cheng <chengkaitao@kylinos.cn>
Add ufq_iosched as a simple example for the UFQ block I/O scheduler, In the ufq_simple example, we implement the eBPF struct_ops hooks the kernel exposes so we can exercise and validate the behavior and stability of the kernel UFQ scheduling framework. The Makefile and directory layout are modeled after sched_ext. This mirrors the sched_ext examples pattern so developers can experiment with user-defined queueing policies on top of IOSCHED_UFQ. Signed-off-by: Kaitao Cheng <chengkaitao@kylinos.cn>
c5923f9 to
d59e805
Compare
Pull request for series with
subject: block: Introduce a BPF-based I/O scheduler
version: 2
url: https://patchwork.kernel.org/project/linux-block/list/?series=1088877