On 5/7/14, 11:46 AM, Steven Hartland wrote:
----- Original Message ----- From: "George Wilson"
<george.wil...@delphix.com>
There are a couple of cases where it can work but I'm going to make
it such that requires you to always return back ZIO_PIPELINE_STOP.
Otherwise it's makes it too easy to introduce a programming error.
For example, vdev_mirror_io_start() could return
ZIO_PIPELINE_CONTINUE but vdev_disk_io_start() shouldn't.
I'll try to have a diff ready soon. I will be interested in your test
results.
I'm going to give this a go but requeuing the request in the task handler
instead of processing it directly sounds like quite a waste.
Whats the objection to continuing directly with the updated zio?
Regards
Steve
It's a safety issue. If you need to change the zio then you effectively
need to execute a new pipeline for that zio. If you don't want to hand
this off to a different taskq then call zio_execute() instead of
zio_interrupt(). For the lower layers it makes sense to call
zio_interrupt() since we typically call the completion routines from the
interrupt taskqs anyways.
- George
_______________________________________________
developer mailing list
developer@open-zfs.org
http://lists.open-zfs.org/mailman/listinfo/developer