diff options
author | Mike Snitzer <snitzer@redhat.com> | 2016-02-10 19:58:45 +0300 |
---|---|---|
committer | Mike Snitzer <snitzer@redhat.com> | 2016-02-23 06:34:40 +0300 |
commit | 21136f89d76dc10d31d294f2bb79c585a039bad6 (patch) | |
tree | 6d1fe59d7561962f7f661d2cdd0e1e1d9a617347 /drivers/md/dm-mpath.c | |
parent | 7943bd6dd3e71b9e3679bcd254206d86083e1df2 (diff) | |
download | linux-21136f89d76dc10d31d294f2bb79c585a039bad6.tar.xz |
dm mpath: remove repeat_count support from multipath core
Preparation for making __multipath_map() avoid taking the m->lock
spinlock -- in favor of using RCU locking.
repeat_count was primarily for bio-based DM multipath's benefit. There
is really no need for it anymore now that DM multipath is request-based.
As such, repeat_count > 1 is no longer honored and a warning is
displayed if the user attempts to use a value > 1. This is a temporary
change for the round-robin path-selector (as a later commit will restore
its support for repeat_count > 1).
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Diffstat (limited to 'drivers/md/dm-mpath.c')
-rw-r--r-- | drivers/md/dm-mpath.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/drivers/md/dm-mpath.c b/drivers/md/dm-mpath.c index cfe55910699d..0c32b2b7856c 100644 --- a/drivers/md/dm-mpath.c +++ b/drivers/md/dm-mpath.c @@ -83,7 +83,6 @@ struct multipath { struct pgpath *current_pgpath; struct priority_group *current_pg; struct priority_group *next_pg; /* Switch to this PG if set */ - unsigned repeat_count; /* I/Os left before calling PS again */ unsigned queue_io:1; /* Must we queue all I/O? */ unsigned queue_if_no_path:1; /* Queue I/O if last path fails? */ @@ -319,8 +318,9 @@ 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, &m->repeat_count, nr_bytes); + path = pg->ps.type->select_path(&pg->ps, &repeat_count, nr_bytes); if (!path) return -ENXIO; @@ -412,8 +412,7 @@ static int __multipath_map(struct dm_target *ti, struct request *clone, spin_lock_irq(&m->lock); /* Do we need to select a new pgpath? */ - if (!m->current_pgpath || - (!m->queue_io && (m->repeat_count && --m->repeat_count == 0))) + if (!m->current_pgpath || !m->queue_io) __choose_pgpath(m, nr_bytes); pgpath = m->current_pgpath; |