zfs pool import hangs on [tx->tx_sync_done_cv]

Steven Hartland killing at multiplay.co.uk
Mon Oct 13 08:06:12 UTC 2014


----- Original Message ----- 
From: "K. Macy" <kmacy at freebsd.org>
 
> A recent quick read of the code would lead me to believe that zio_wait not
> returning there means that the zio never reached the zio_done stage. Parent
> zios seem to yield in a couple of stages in the pipeline if they have
> incomplete children. They determine this by calling zio_wait_for_children
> with zio child types and their corresponding wait type. In so doing they
> set the io_stall to the count of the number of waiters of the first
> non-zero check. This parent I/O will be resumed by the last child zio of
> that type and wait state in zio_notify_parent. I'm sure you know all this -
> but I wrote it to preface asking for the following fields of the zio being
> waited on in dsl_pool_sync_mos: io_stall (i.e, which field in io_children
> is pointed to) *io_stall,  io_children[*][*], io_child_list (at a first
> glance just the addresses). The other alternative is that it reexecuting
>has gotten in to a bad place in the state machine so io_reexecute.

Yer I would have got the zio details but typically its "optimised out" by the
compiler, so will need some effort to track that down unfortunately :(

    Regards
    Steve


More information about the freebsd-stable mailing list