[PATCH v2 00/26] Enable lock context analysis

Bart Van Assche
2026-03-25T21:45:33Z

Hi Jens,

During the most recent merge window the following patch series has been merged:
[PATCH v5 00/36] Compiler-Based Context- and Locking-Analysis
(https://lore.kernel.org/lkml/20251219154418.3592607-1-elver@google.com/). That
patch series drops support for verifying lock context annotations with sparse
and introduces support for verifying lock context annotations with Clang. The
support in Clang for lock context annotation and verification is better than
that in sparse. As an example, __cond_acquires() and __guarded_by() are
supported by Clang but not by sparse. Hence this patch series that enables lock
context analysis for the block layer core and all block drivers.

Please consider this patch series for the next merge window.

Thanks,

Bart.

Changes compared to v1:
- Rebased this patch series on top of Jens' for-next branch.
- Included two patches that split blkg_conf_prep() and blkg_conf_exit().
- Modified how patches are split. Split the block layer core patch into
multiple patches and moved the CONTEXT_ANALYSIS := y assignments into the
block driver patches.
- Made the new source code comments easier to comprehend.
- Introduced macros in the mq-deadline and Kyber I/O schedulers to make the
__acquires() expressions easier to read.
- Removed the changes from this series that are not block layer changes.

Bart Van Assche (26):
block: Annotate the queue limits functions
block: Annotate the block device functions
block/cgroup: Split blkg_conf_prep()
block/cgroup: Split blkg_conf_exit()
block/cgroup: Modify the blkg_conf_open_bdev_frozen() calling
convention
block/crypto: Annotate the crypto functions
block/blk-iocost: Add lock context annotations
block/blk-mq-debugfs: Improve lock context annotations
block/blk-zoned: Add lock context annotations
block/ioctl: Add lock context annotations
block/Kyber: Make the lock context annotations compatible with Clang
block/mq-deadline: Make the lock context annotations compatible with
Clang
block: Enable lock context analysis
aoe: Add a lock context annotation
drbd: Balance RCU calls in drbd_adm_dump_devices()
drbd: Make the lock context annotations compatible with Clang
loop: Add lock context annotations
mtip32: Enable lock context analysis
nbd: Enable lock context analysis
null_blk: Enable lock context analysis
rbd: Enable lock context analysis
ublk: Enable lock context analysis
xen-blkback: Enable lock context analysis
zram: Enable lock context analysis
rnbd: Enable lock context analysis
block: Enable lock context analysis for all block drivers

block/Makefile | 2 +
block/bdev.c | 10 +++-
block/bfq-cgroup.c | 11 +++-
block/blk-cgroup.c | 82 +++++++++++++---------------
block/blk-cgroup.h | 19 +++++--
block/blk-crypto-profile.c | 2 +
block/blk-iocost.c | 77 ++++++++++++++------------
block/blk-iolatency.c | 19 ++++---
block/blk-mq-debugfs.c | 12 ++--
block/blk-throttle.c | 34 +++++++-----
block/blk-zoned.c | 1 +
block/blk.h | 4 ++
block/ioctl.c | 1 +
block/kyber-iosched.c | 7 ++-
block/mq-deadline.c | 12 ++--
drivers/block/Makefile | 2 +
drivers/block/aoe/Makefile | 2 +
drivers/block/aoe/aoecmd.c | 1 +
drivers/block/drbd/Makefile | 3 +
drivers/block/drbd/drbd_bitmap.c | 26 ++++++---
drivers/block/drbd/drbd_int.h | 88 ++++++++++++++++++------------
drivers/block/drbd/drbd_main.c | 40 ++++++++++----
drivers/block/drbd/drbd_nl.c | 13 +++--
drivers/block/drbd/drbd_receiver.c | 31 ++++++++---
drivers/block/drbd/drbd_req.c | 3 +
drivers/block/drbd/drbd_state.c | 2 +
drivers/block/drbd/drbd_state.h | 4 --
drivers/block/drbd/drbd_worker.c | 6 +-
drivers/block/loop.c | 4 ++
drivers/block/mtip32xx/Makefile | 2 +
drivers/block/nbd.c | 3 +
drivers/block/null_blk/Makefile | 2 +
drivers/block/null_blk/main.c | 7 ++-
drivers/block/null_blk/zoned.c | 2 +
drivers/block/rbd.c | 8 +++
drivers/block/rnbd/Makefile | 2 +
drivers/block/ublk_drv.c | 4 ++
drivers/block/xen-blkback/Makefile | 3 +
drivers/block/zram/Makefile | 2 +
drivers/block/zram/zcomp.c | 3 +-
drivers/block/zram/zcomp.h | 6 +-
drivers/block/zram/zram_drv.c | 1 +
include/linux/blkdev.h | 9 ++-
43 files changed, 369 insertions(+), 203 deletions(-)