aboutsummaryrefslogtreecommitdiffstats
path: root/module/.gitignore
diff options
context:
space:
mode:
authorAlexander Motin <[email protected]>2024-11-10 17:29:25 -0500
committerBrian Behlendorf <[email protected]>2024-11-15 15:04:11 -0800
commitfd6e8c1d2a5c8d95d509b691b81c66597e354981 (patch)
treec0e097909e2d2bc381ee2c6ab0ab824c9248ce14 /module/.gitignore
parent309ce6303fa7e455e9adee0674a29685bdbbcc8d (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