]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Don't return ZIO_PIPELINE_CONTINUE from vdev_op_io_start methods
authorsmh <smh@FreeBSD.org>
Fri, 1 Aug 2014 23:16:48 +0000 (23:16 +0000)
committersmh <smh@FreeBSD.org>
Fri, 1 Aug 2014 23:16:48 +0000 (23:16 +0000)
commit07ac26f9f6a290533e27bcccdcce8573b6daa4c1
tree53c5d2d604c080d34a1a59f404114bc0d826979a
parent9d9c9630befaea330c98a1be884688a09efd0547
Don't return ZIO_PIPELINE_CONTINUE from vdev_op_io_start methods

This prevents recursion of vdev_queue_io_done as per r265321 but
using a different method as recommended on the openzfs list.

We now use zio_interrupt(zio) and return ZIO_PIPELINE_STOP instead
of returning ZIO_PIPELINE_CONTINUE from vdev_*_io_start methods.

zio_vdev_io_start now ASSERTS the that vdev_op_io_start returns
ZIO_PIPELINE_STOP to ensure future changes don't reintroduce
ZIO_PIPELINE_CONTINUE returns.

Cleanup flow in vdev_geom_io_start while I'm here.

Also fix some cases not using SET_ERROR(..)

MFC after: 2 weeks
X-MFC-With: r265321
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_disk.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_file.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_mirror.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_missing.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_queue.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_raidz.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c