• Mike Snitzer's avatar
    dm mpath: reinstate bio-based support · 76e33fe4
    Mike Snitzer authored
    Add "multipath-bio" target that offers a bio-based multipath target as
    an alternative to the request-based "multipath" target -- but in a
    following commit "multipath-bio" will immediately be replaced by a new
    "queue_mode" feature for the "multipath" target which will allow
    bio-based mode to be selected.
    
    When DM multipath was originally converted from bio-based to
    request-based the motivation for the change was better dynamic load
    balancing (by leveraging block core's request-based IO schedulers, for
    merging and sorting, _before_ DM multipath would make the decision on
    where to steer the IO -- based on path load and/or availability).
    
    More background is available in this "Request-based Device-mapper
    multipath and Dynamic load balancing" paper:
    https://www.kernel.org/doc/ols/2007/ols2007v2-pages-235-244.pdf
    
    But we've now come full circle where significantly faster storage
    devices no longer need IOs to be made larger to drive optimal IO
    performance.  And even if they do there have been changes to the block
    and filesystem layers that help ensure upper layers are constructing
    larger IOs.  In addition, SCSI's differentiated IO errors will propagate
    through to bio-based IO completion hooks -- so that eliminates another
    historic justiciation for request-based DM multipath.  Lastly, the block
    layer's immutable biovec changes have made bio cloning cheaper than it
    has ever been; whereas request cloning is still relatively expensive
    (both on a CPU usage and memory footprint level).
    
    As such, bio-based DM multipath offers the promise of a more efficient
    IO path for high IOPs devices that are, or will be, emerging.
    Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
    76e33fe4
dm-mpath.c 49.5 KB