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

Reply via email to