• C
    block, dm: don't copy bios for request clones · 5f1b670d
    Christoph Hellwig 提交于
    Currently dm-multipath has to clone the bios for every request sent
    to the lower devices, which wastes cpu cycles and ties down memory.
    
    This patch instead adds a new REQ_CLONE flag that instructs req_bio_endio
    to not complete bios attached to a request, which we set on clone
    requests similar to bios in a flush sequence.  With this change I/O
    errors on a path failure only get propagated to dm-multipath, which
    can then either resubmit the I/O or complete the bios on the original
    request.
    
    I've done some basic testing of this on a Linux target with ALUA support,
    and it survives path failures during I/O nicely.
    Signed-off-by: NChristoph Hellwig <hch@lst.de>
    Signed-off-by: NMike Snitzer <snitzer@redhat.com>
    Signed-off-by: NJens Axboe <axboe@fb.com>
    5f1b670d
dm.c 81.9 KB