On 02/04/14 05:28, Mike Snitzer wrote: > From: Hannes Reinecke <hare@xxxxxxx> > > When pg_init is running we shouldn't be calling the same > routine twice; we need to wait for the first pg_init to > complete. > > Signed-off-by: Hannes Reinecke <hare@xxxxxxx> > Signed-off-by: Mike Snitzer <snitzer@xxxxxxxxxx> > --- > drivers/md/dm-mpath.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/drivers/md/dm-mpath.c b/drivers/md/dm-mpath.c > index 6eb9dc9..304ee5c 100644 > --- a/drivers/md/dm-mpath.c > +++ b/drivers/md/dm-mpath.c > @@ -261,6 +261,9 @@ static void __pg_init_all_paths(struct multipath *m) > struct pgpath *pgpath; > unsigned long pg_init_delay = 0; > > + if (m->pg_init_in_progress || m->pg_init_disabled) > + return; > + > m->pg_init_count++; > m->pg_init_required = 0; > if (m->pg_init_delay_retry) > @@ -501,8 +504,7 @@ static void process_queued_ios(struct work_struct *work) > (!pgpath && !m->queue_if_no_path)) > must_queue = 0; > > - if (m->pg_init_required && !m->pg_init_in_progress && pgpath && > - !m->pg_init_disabled) > + if (pgpath && m->pg_init_required) > __pg_init_all_paths(m); > > spin_unlock_irqrestore(&m->lock, flags); > I think the patch is ok but the description seems not matching what it does. This patch moves condition checks as a preparation of following patches and has no effect on behaviour. process_queued_ios() is the only caller of __pg_init_all_paths() and 2 condition checks are moved from outside to inside without side effects. Reviewed-by: Jun'ichi Nomura <j-nomura@xxxxxxxxxxxxx> -- Jun'ichi Nomura, NEC Corporation -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel