Avoid vq_lock drop in vdev_queue_aggregate()
commit7f9d9e6f39fdcbd048b5f9991186da2e14d8139c
authorAlexander Motin <mav@FreeBSD.org>
Tue, 17 Aug 2021 15:47:00 +0000 (17 11:47 -0400)
committerGitHub <noreply@github.com>
Tue, 17 Aug 2021 15:47:00 +0000 (17 09:47 -0600)
tree0de300152915f1e9b782e23b054a234f327a35e8
parente829a865bf6482a0d62913f528e516ce3b759d7b
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>
Sponsored-By: iXsystems, Inc.
Closes #12297
module/zfs/vdev_queue.c