During module load we could deadlock because the zvol_init() callpath took the spa_namespace_lock before the zvol_state_lock. The rest of the zvol code takes the locks in the opposite order. In particular, I observed the following deadlock cause by the lock inversion. I've fixed the ording by creating an unlocked version of zvol_create_minor and zvol_remove_minor. This allows me to take the zvol_state_lock before the spa_namespace_lock in zvol_cr_minors_common and simply call the unlocked version. |
||
---|---|---|
.. | ||
avl | ||
nvpair | ||
unicode | ||
zcommon | ||
zfs | ||
.gitignore | ||
Makefile.in |