dm path selector: remove 'repeat_count' return from .select_path hook
If a path selector has any use for a repeat_count it should be handled locally and not depend on the dm-mpath core to be concerned with it. Signed-off-by: Mike Snitzer <snitzer@redhat.com>
This commit is contained in:
Родитель
9659f81144
Коммит
90a4323ccf
|
@ -318,9 +318,8 @@ static int __choose_path_in_pg(struct multipath *m, struct priority_group *pg,
|
|||
size_t nr_bytes)
|
||||
{
|
||||
struct dm_path *path;
|
||||
unsigned repeat_count;
|
||||
|
||||
path = pg->ps.type->select_path(&pg->ps, &repeat_count, nr_bytes);
|
||||
path = pg->ps.type->select_path(&pg->ps, nr_bytes);
|
||||
if (!path)
|
||||
return -ENXIO;
|
||||
|
||||
|
|
|
@ -50,13 +50,8 @@ struct path_selector_type {
|
|||
/*
|
||||
* Chooses a path for this io, if no paths are available then
|
||||
* NULL will be returned.
|
||||
*
|
||||
* repeat_count is the number of times to use the path before
|
||||
* calling the function again. 0 means don't call it again unless
|
||||
* the path fails.
|
||||
*/
|
||||
struct dm_path *(*select_path) (struct path_selector *ps,
|
||||
unsigned *repeat_count,
|
||||
size_t nr_bytes);
|
||||
|
||||
/*
|
||||
|
|
|
@ -184,8 +184,7 @@ static int ql_reinstate_path(struct path_selector *ps, struct dm_path *path)
|
|||
/*
|
||||
* Select a path having the minimum number of in-flight I/Os
|
||||
*/
|
||||
static struct dm_path *ql_select_path(struct path_selector *ps,
|
||||
unsigned *repeat_count, size_t nr_bytes)
|
||||
static struct dm_path *ql_select_path(struct path_selector *ps, size_t nr_bytes)
|
||||
{
|
||||
struct selector *s = ps->context;
|
||||
struct path_info *pi = NULL, *best = NULL;
|
||||
|
@ -211,8 +210,6 @@ static struct dm_path *ql_select_path(struct path_selector *ps,
|
|||
if (!best)
|
||||
goto out;
|
||||
|
||||
*repeat_count = best->repeat_count;
|
||||
|
||||
ret = best->path;
|
||||
out:
|
||||
spin_unlock_irqrestore(&s->lock, flags);
|
||||
|
|
|
@ -178,8 +178,7 @@ static int rr_reinstate_path(struct path_selector *ps, struct dm_path *p)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static struct dm_path *rr_select_path(struct path_selector *ps,
|
||||
unsigned *repeat_count, size_t nr_bytes)
|
||||
static struct dm_path *rr_select_path(struct path_selector *ps, size_t nr_bytes)
|
||||
{
|
||||
unsigned long flags;
|
||||
struct selector *s = ps->context;
|
||||
|
@ -189,7 +188,6 @@ static struct dm_path *rr_select_path(struct path_selector *ps,
|
|||
if (!list_empty(&s->valid_paths)) {
|
||||
pi = list_entry(s->valid_paths.next, struct path_info, list);
|
||||
list_move_tail(&pi->list, &s->valid_paths);
|
||||
*repeat_count = pi->repeat_count;
|
||||
}
|
||||
spin_unlock_irqrestore(&s->lock, flags);
|
||||
|
||||
|
|
|
@ -271,8 +271,7 @@ static int st_compare_load(struct path_info *pi1, struct path_info *pi2,
|
|||
return pi2->relative_throughput - pi1->relative_throughput;
|
||||
}
|
||||
|
||||
static struct dm_path *st_select_path(struct path_selector *ps,
|
||||
unsigned *repeat_count, size_t nr_bytes)
|
||||
static struct dm_path *st_select_path(struct path_selector *ps, size_t nr_bytes)
|
||||
{
|
||||
struct selector *s = ps->context;
|
||||
struct path_info *pi = NULL, *best = NULL;
|
||||
|
@ -293,8 +292,6 @@ static struct dm_path *st_select_path(struct path_selector *ps,
|
|||
if (!best)
|
||||
goto out;
|
||||
|
||||
*repeat_count = best->repeat_count;
|
||||
|
||||
ret = best->path;
|
||||
out:
|
||||
spin_unlock_irqrestore(&s->lock, flags);
|
||||
|
|
Загрузка…
Ссылка в новой задаче