diff options
author | Hannes Reinecke <hare@suse.de> | 2013-10-01 09:49:56 (GMT) |
---|---|---|
committer | Mike Snitzer <snitzer@redhat.com> | 2013-11-05 16:20:34 (GMT) |
commit | b63349a7a53d34ffde70cb4feec48ea9e6f5e97b (patch) | |
tree | d0e3b95ed6e2d8dbb219fce7fa8008351b8c1b8b /drivers/md/persistent-data | |
parent | 954a73d5d3073df2231820c718fdd2f18b0fe4c9 (diff) | |
download | linux-b63349a7a53d34ffde70cb4feec48ea9e6f5e97b.tar.xz |
dm mpath: requeue I/O during pg_init
When pg_init is running no I/O can be submitted to the underlying
devices, as the path priority etc might change. When using queue_io for
this, requests will be piling up within multipath as the block I/O
scheduler just sees a _very fast_ device. All of this queued I/O has to
be resubmitted from within multipathing once pg_init is done.
This approach has the problem that it's virtually impossible to
abort I/O when pg_init is running, and we're adding heavy load
to the devices after pg_init since all of the queued I/O needs to be
resubmitted _before_ any requests can be pulled off of the request queue
and normal operation continues.
This patch will requeue the I/O that triggers the pg_init call, and
return 'busy' when pg_init is in progress. With these changes the block
I/O scheduler will stop submitting I/O during pg_init, resulting in a
quicker path switch and less I/O pressure (and memory consumption) after
pg_init.
Signed-off-by: Hannes Reinecke <hare@suse.de>
[patch header edited for clarity and typos by Mike Snitzer]
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Diffstat (limited to 'drivers/md/persistent-data')
0 files changed, 0 insertions, 0 deletions