Home
last modified time | relevance | path

Searched hist:"49086 aa35d987b78dbc3c9ec94814fe338e07164" (Results 1 – 2 of 2) sorted by relevance

/freebsd/sys/contrib/openzfs/include/sys/
H A Ddsl_scan.hdiff 49086aa35d987b78dbc3c9ec94814fe338e07164 Thu May 23 18:20:37 CEST 2024 Alexander Motin <mav@FreeBSD.org> Fix scn_queue races on very old pools

Code for pools before version 11 uses dmu_objset_find_dp() to scan
for children datasets/clones. It calls enqueue_clones_cb() and
enqueue_cb() callbacks in parallel from multiple taskq threads.
It ends up bad for scan_ds_queue_insert(), corrupting scn_queue
AVL-tree. Fix it by introducing a mutex to protect those two
scan_ds_queue_insert() calls. All other calls are done from the
sync thread and so serialized.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Brian Atkinson <batkinson@lanl.gov>
Signed-off-by: Alexander Motin <mav@FreeBSD.org>
Sponsored by: iXsystems, Inc.
Closes #16162
PR: 278414
/freebsd/sys/contrib/openzfs/module/zfs/
H A Ddsl_scan.cdiff 49086aa35d987b78dbc3c9ec94814fe338e07164 Thu May 23 18:20:37 CEST 2024 Alexander Motin <mav@FreeBSD.org> Fix scn_queue races on very old pools

Code for pools before version 11 uses dmu_objset_find_dp() to scan
for children datasets/clones. It calls enqueue_clones_cb() and
enqueue_cb() callbacks in parallel from multiple taskq threads.
It ends up bad for scan_ds_queue_insert(), corrupting scn_queue
AVL-tree. Fix it by introducing a mutex to protect those two
scan_ds_queue_insert() calls. All other calls are done from the
sync thread and so serialized.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Brian Atkinson <batkinson@lanl.gov>
Signed-off-by: Alexander Motin <mav@FreeBSD.org>
Sponsored by: iXsystems, Inc.
Closes #16162
PR: 278414