mirror_zfs/include
Alexander Motin af5dbed319
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
2024-05-09 07:32:59 -07:00
..
os vdev_disk: disable flushes if device does not support it 2024-05-02 15:18:35 -07:00
sys Fix scn_queue races on very old pools 2024-05-09 07:32:59 -07:00
.gitignore
cityhash.h
libnvpair.h
libuutil_common.h
libuutil_impl.h
libuutil.h
libzdb.h
libzfs_core.h
libzfs.h Add ashift validation when adding devices to a pool 2024-03-29 13:15:56 -06:00
libzfsbootenv.h
libzutil.h Parallel pool import 2024-04-22 09:42:38 -07:00
Makefile.am ddt: split internal DDT API into separate header 2024-02-15 11:45:15 -08:00
thread_pool.h
zfeature_common.h
zfs_comutil.h
zfs_deleg.h
zfs_fletcher.h
zfs_namecheck.h
zfs_prop.h