diff options
author | mav <mav@FreeBSD.org> | 2016-10-28 18:18:53 +0000 |
---|---|---|
committer | mav <mav@FreeBSD.org> | 2016-10-28 18:18:53 +0000 |
commit | c8c4c6244daef57c7b854dfe5de8a10d8675634b (patch) | |
tree | a8e6cb6833101513ffe3bbb9ecea29fca0736409 /contrib/libc++/src/ios.cpp | |
parent | c60f65ebc02c81225657a336afc72d7d08f4fe36 (diff) | |
download | FreeBSD-src-c8c4c6244daef57c7b854dfe5de8a10d8675634b.zip FreeBSD-src-c8c4c6244daef57c7b854dfe5de8a10d8675634b.tar.gz |
MFC r294329 (by asomers): Disallow zvol-backed ZFS pools
Using zvols as backing devices for ZFS pools is fraught with panics and
deadlocks. For example, attempting to online a missing device in the
presence of a zvol can cause a panic when vdev_geom tastes the zvol. Better
to completely disable vdev_geom from ever opening a zvol. The solution
relies on setting a thread-local variable during vdev_geom_open, and
returning EOPNOTSUPP during zvol_open if that thread-local variable is set.
Remove the check for MUTEX_HELD(&zfsdev_state_lock) in zvol_open. Its intent
was to prevent a recursive mutex acquisition panic. However, the new check
for the thread-local variable also fixes that problem.
Also, fix a panic in vdev_geom_taste_orphan. For an unknown reason, this
function was set to panic. But it can occur that a device disappears during
tasting, and it causes no problems to ignore this departure.
Diffstat (limited to 'contrib/libc++/src/ios.cpp')
0 files changed, 0 insertions, 0 deletions