===================================================================
@@ -361,6 +361,9 @@ static int map_io(struct multipath *m, s
mpio->pgpath = pgpath;
+ if (r == DM_MAPIO_REMAPPED && pgpath->pg->ps.type->start_io)
+ pgpath->pg->ps.type->start_io(&pgpath->pg->ps, &pgpath->path);
+
spin_unlock_irqrestore(&m->lock, flags);
return r;
===================================================================
@@ -75,6 +75,7 @@ struct path_selector_type {
int (*status) (struct path_selector *ps, struct dm_path *path,
status_type_t type, char *result, unsigned int maxlen);
+ int (*start_io) (struct path_selector *ps, struct dm_path *path);
int (*end_io) (struct path_selector *ps, struct dm_path *path);
};