On Tue, Jan 21 2014 at 4:07am -0500, Junichi Nomura <j-nomura@xxxxxxxxxxxxx> wrote: > 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. I think this is a good suggestion. Best to split it up. -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel