mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2025-01-27 18:34:22 +03:00
Hold SCL_VDEV when counting leaves
A config lock should be held while vdev_count_leaves() walks the tree, otherwise the pointers reference may become invalid during the walk. SCL_VDEV is a minimal lock provided for such uses cases. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Tony Hutter <hutter2@llnl.gov> Signed-off-by: Olaf Faaland <faaland1@llnl.gov> Closes #7286
This commit is contained in:
parent
ebed90a598
commit
743253df70
@ -209,7 +209,13 @@ vdev_count_leaves_impl(vdev_t *vd)
|
||||
int
|
||||
vdev_count_leaves(spa_t *spa)
|
||||
{
|
||||
return (vdev_count_leaves_impl(spa->spa_root_vdev));
|
||||
int rc;
|
||||
|
||||
spa_config_enter(spa, SCL_VDEV, FTAG, RW_READER);
|
||||
rc = vdev_count_leaves_impl(spa->spa_root_vdev);
|
||||
spa_config_exit(spa, SCL_VDEV, FTAG);
|
||||
|
||||
return (rc);
|
||||
}
|
||||
|
||||
void
|
||||
|
Loading…
Reference in New Issue
Block a user