• Tejun Heo's avatar
    block: don't merge requests of different failfast settings · ab0fd1de
    Tejun Heo authored
    Block layer used to merge requests and bios with different failfast
    settings.  This caused regular IOs to fail prematurely when they were
    merged into failfast requests for readahead.
    
    Niel Lambrechts could trigger the problem semi-reliably on ext4 when
    resuming from STR.  ext4 uses readahead when reading inodes and
    combined with the deterministic extra SATA PHY exception cycle during
    resume on the specific configuration, non-readahead inode read would
    fail causing ext4 errors.  Please read the following thread for
    details.
    
      http://lkml.org/lkml/2009/5/23/21
    
    This patch makes block layer reject merging if the failfast settings
    don't match.  This is correct but likely to lower IO performance by
    preventing regular IOs from mingling into surrounding readahead
    requests.  Changes to allow such mixed merges and handle errors
    correctly will be added later.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Reported-by: default avatarNiel Lambrechts <niel.lambrechts@gmail.com>
    Cc: Theodore Tso <tytso@mit.edu>
    Signed-off-by: default avatarJens Axboe <axboe@carl.(none)>
    ab0fd1de
blk-merge.c 9.76 KB