• H
    dm mpath: requeue I/O during pg_init · b63349a7
    Hannes Reinecke 提交于
    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: NHannes Reinecke <hare@suse.de>
    [patch header edited for clarity and typos by Mike Snitzer]
    Signed-off-by: NMike Snitzer <snitzer@redhat.com>
    b63349a7
dm-mpath.c 41.8 KB