[dm-devel] [PATCH 1/2] dm-multipath: push back requests instead of queueing

Mike Snitzer snitzer at redhat.com
Thu Jan 30 15:08:22 UTC 2014


On Tue, Jan 21 2014 at  4:07am -0500,
Junichi Nomura <j-nomura at ce.jp.nec.com> 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.




More information about the dm-devel mailing list