diff options
author | Alexander Motin <[email protected]> | 2024-11-10 17:29:25 -0500 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2024-11-15 15:04:11 -0800 |
commit | fd6e8c1d2a5c8d95d509b691b81c66597e354981 (patch) | |
tree | c0e097909e2d2bc381ee2c6ab0ab824c9248ce14 /module/.gitignore | |
parent | 309ce6303fa7e455e9adee0674a29685bdbbcc8d (diff) |
BRT: Rework structures and locks to be per-vdev
While block cloning operation from the beginning was made per-vdev,
before this change most of its data were protected by two pool-
wide locks. It created lots of lock contention in many workload.
This change makes most of block cloning data structures per-vdev,
which allows to lock them separately. The only pool-wide lock now
it spa_brt_lock, protecting array of per-vdev pointers and in most
cases taken as reader. Also this splits per-vdev locks into three
different ones: bv_pending_lock protects the AVL-tree of pending
operations in open context, bv_mos_entries_lock protects BRT ZAP
object from while being prefetched, and bv_lock protects the rest
of per-vdev context during TXG commit process. There should be
no functional difference aside of some optimizations.
Reviewed-by: Brian Behlendorf <[email protected]>
Reviewed-by: Pawel Jakub Dawidek <[email protected]>
Reviewed-by: Brian Atkinson <[email protected]>
Signed-off-by: Alexander Motin <[email protected]>
Sponsored by: iXsystems, Inc.
Closes #16740
Diffstat (limited to 'module/.gitignore')
0 files changed, 0 insertions, 0 deletions