• Tejun Heo's avatar
    block: improve flush bio completion · 143a87f4
    Tejun Heo authored
    bio's for flush are completed twice - once during the data phase and
    one more time after the whole sequence is complete.  The first
    completion shouldn't notify completion to the issuer.
    
    This was achieved by skipping all bio completion steps in
    req_bio_endio() for the first completion; however, this has two
    drawbacks.
    
    * Error is not recorded in bio and must be tracked somewhere else.
    
    * Partial completion is not supported.
    
    Both don't cause problems for the current users; however, they make
    further improvements difficult.  Change req_bio_endio() such that it
    only skips the actual notification part for the first completion.  bio
    completion is implemented with partial completions on mind anyway so
    this is as simple as moving the REQ_FLUSH_SEQ conditional such that
    only calling of bio_endio() is skipped.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Signed-off-by: default avatarJens Axboe <jaxboe@fusionio.com>
    143a87f4
blk-core.c 69.4 KB