HomeFreeBSD

Add support for asynchronous zvol minor operations

Description

Add support for asynchronous zvol minor operations

zfsonlinux issue #2217 - zvol minor operations: check snapdev
property before traversing snapshots of a dataset

zfsonlinux issue #3681 - lock order inversion between zvol_open()
and dsl_pool_sync()...zvol_rename_minors()

Create a per-pool zvol taskq for asynchronous zvol tasks.
There are a few key design decisions to be aware of.

  • Each taskq must be single threaded to ensure tasks are always processed in the order in which they were dispatched.
  • There is a taskq per-pool in order to keep the pools independent. This way if one pool is suspended it will not impact another.
  • The preferred location to dispatch a zvol minor task is a sync task. In this context there is easy access to the spa_t and minimal error handling is required because the sync task must succeed.

Support for asynchronous zvol minor operations address issue #3681.

Signed-off-by: Boris Protopopov <boris.protopopov@actifio.com>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #2217
Closes #3678
Closes #3681

Details

Provenance
Boris Protopopov <boris.protopopov@actifio.com>Authored on Mar 22 2014, 9:07 AM
Brian Behlendorf <behlendorf1@llnl.gov>Committed on Mar 10 2016, 5:49 PM
Parents
rGeb0856779f7b: Remove RPM package restriction
Branches
Unknown
Tags
Unknown