On 01/21/14 00:49, Hannes Reinecke wrote: > On 01/20/2014 12:57 PM, Junichi Nomura wrote: >> On 01/17/14 19:42, Hannes Reinecke wrote: >>> @@ -1256,7 +1188,8 @@ static void pg_init_done(void *data, int errors) >>> m->queue_io = 0; >>> >>> m->pg_init_delay_retry = delay_retry; >>> - queue_work(kmultipathd, &m->process_queued_ios); >>> + if (!m->queue_io) >>> + dm_table_run_queue(m->ti->table); >>> >>> /* >>> * Wake up any thread waiting to suspend. >> >> Does pg_init retry still work with this change? >> >> I suspect it doesn't. When a retry is requested in pg_init_done(), >> m->queue_io is still 0 and somebody has to kick pg_init. >> >> Instead of replacing "process_queued_ios" work completely, >> how about keeping it around and just replacing dispatch_queued_ios() by >> dm_table_run_queue()? >> > I'd rather prefer to schedule the activate_path() workqueue item > directly; no need to involve yet another workqueue here. I would prefer it, too. I thought it would make review easier if you could split this patch in 2; one for removing the internal queue, the other for optimizing process_queued_ios work. > And we already know which path to activate. > > But yeah, it looks as if we need to reschedule activate_path() here. -- Jun'ichi Nomura, NEC Corporation -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel