HomeFreeBSD

Avoid vq_lock drop in vdev_queue_aggregate()

Description

Avoid vq_lock drop in vdev_queue_aggregate()

vq_lock is already too congested for two more operations per I/O.
Instead of dropping and reacquiring it inside vdev_queue_aggregate()
delegate the zio_vdev_io_bypass() and zio_execute() calls for parent
I/Os to callers, that drop the lock any way to execute the new I/O.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Mark Maybee <mark.maybee@delphix.com>
Reviewed-by: Brian Atkinson <batkinson@lanl.gov>
Signed-off-by: Alexander Motin <mav@FreeBSD.org>
Closes #12297

Details

Provenance
mavAuthored on Aug 17 2021, 3:47 PM
Tony Hutter <hutter2@llnl.gov>Committed on Sep 14 2021, 9:31 PM
Parents
rG5afc35b69824: Use more atomics in refcounts
Branches
Unknown
Tags
Unknown