On 02/27/14 16:30, Hannes Reinecke wrote: > @@ -1214,9 +1189,11 @@ static void pg_init_done(void *data, int errors) > > if (!m->pg_init_required) > m->queue_io = 0; > - > - m->pg_init_delay_retry = delay_retry; > - queue_work(kmultipathd, &m->process_queued_ios); > + else if (m->current_pg) { > + m->pg_init_delay_retry = delay_retry; > + if (__pg_init_all_paths(m)) > + goto out; > + } As I commented before: https://www.redhat.com/archives/dm-devel/2014-February/msg00013.html I think the code here should clear queue_io like this when retry was requested but wasn't done: if (m->pg_init_required) { m->pg_init_delay_retry = delay_retry; if (__pg_init_all_paths(m)) goto out; } m->queue_io = 0; Otherwise, if __pg_init_all_paths() returns 0, m->queue_io will remain as "1" and nobody will clear it. -- Jun'ichi Nomura, NEC Corporation -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel