• Tejun Heo's avatar
    block: clear req->errors on bio completion only for fs requests · 6f41469c
    Tejun Heo authored
    Impact: subtle behavior change
    
    For fs requests, rq is only carrier of bios and rq error status as a
    whole doesn't mean much.  This is the reason why rq->errors is being
    cleared on each partial completion of a request as on each partial
    completion the error status is transferred to the respective bios.
    
    For pc requests, rq->errors is used to carry error status to the
    issuer and thus __end_that_request_first() doesn't clear it on such
    cases.
    
    The condition was fine till now as only fs and pc requests have used
    bio and thus the bio completion path.  However, future changes will
    unify data accesses to bio and all non fs users care about rq error
    status.  Clear rq->errors on bio completion only for fs requests.
    
    In general, the implicit clearing is a bit too subtle especially as
    the meaning of rq->errors is completely dependent on low level
    drivers.  Unifying / cleaning up rq->errors usage and letting llds
    manage it would be better.  TODO comment added.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Acked-by: default avatarJens Axboe <axboe@kernel.dk>
    6f41469c
blk-core.c 58.3 KB