diff options
| author | Christian Brauner <brauner@kernel.org> | 2026-10-21 13:48:10 +0200 |
|---|---|---|
| committer | Christian Brauner <brauner@kernel.org> | 2026-10-22 18:50:18 +0200 |
| commit | f8504630bd9b8f735479594deaaeef3850285efc (patch) | |
| tree | 0a50ec683feffc3cd903c5c066ed7dc50dab1866 /tools/lib/python/kdoc/python_version.py | |
| parent | 62400ce406f66b1154dfbd0d60a7e3baa374e105 (diff) | |
| parent | c84de57efe88c9c513cfbc3746361502db0978e2 (diff) | |
Merge patch series "super: convert to a plain hashtable"
Christian Brauner <brauner@kernel.org> says:
Convert the rhltable to a plain hashtable under a spinlock. The walks
keep their place with a cursor entry in the chain. A claim is unhashed
the moment it's dropped and a walk that finds a superblock that isn't
born yet waits for it to be born or to die and looks again. Since
hashing can't fail anymore the entry for the superblock's own s_dev is
embedded in struct super_block and the preallocation in alloc_super()
goes away. This all simplifies things quite a lot.
It also fixes a btrfs bug where fs_bdev_freeze() ended up freezing a
btrfs filesystem through a stale member that open_ctree() had already
released while the freeze was waiting for SB_BORN. The resume doesn't
find a holder for that device anymore so the filesystem stays frozen
for good.
The selftest freezes a device that several erofs superblocks share.
That's the one case where a device legitimately carries claims from more
than one superblock and it checks that a suspend freezes each of them
exactly once and that mounts coming and going under a suspended device
leave nothing frozen behind.
I modeled the table in TLA+ and checked the real list code with CBMC.
Both agree with the design.
* patches from https://patch.msgid.link/20261012-work-super-dev_hash-v1-0-305cf71cd334@kernel.org:
super: convert to plain hashtable
selftests/filesystems: add a test for freezing a shared block device
Link: https://patch.msgid.link/20261012-work-super-dev_hash-v1-0-305cf71cd334@kernel.org
Signed-off-by: Christian Brauner (Amutable) <brauner@kernel.org>
Diffstat (limited to 'tools/lib/python/kdoc/python_version.py')
0 files changed, 0 insertions, 0 deletions
