Fix ZIO reordering done by vdev_queue_io causing panics when zio_vdev_io_start
authorsmh <smh@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Mon, 28 Apr 2014 09:00:00 +0000 (09:00 +0000)
committersmh <smh@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Mon, 28 Apr 2014 09:00:00 +0000 (09:00 +0000)
commit55f7388f94dc8301095cd6417b3744d1bc74f01a
treedabf2ad120847ea26c3a0fc79f5ad885046709ba
parent0a466dd4a3fdee27e24cf9d51b35aaec605cb7ee
Fix ZIO reordering done by vdev_queue_io causing panics when zio_vdev_io_start
returns ZIO_PIPELINE_CONTINUE from vdev_op_io_start to zio_execute resulting
in the wrong ZIO continuing its pipeline.

This is a serious issue which could cause data loss / corruption but appears
to be limited to error handling such as when vdev_readable(vd) returns false.

MFC after: 2 days

git-svn-id: svn://svn.freebsd.org/base/head@265046 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c