• Josef Bacik's avatar
    direct-io: do not merge logically non-contiguous requests · c2c6ca41
    Josef Bacik authored
    Btrfs cannot handle having logically non-contiguous requests submitted.  For
    example if you have
    Logical:  [0-4095][HOLE][8192-12287]
    Physical: [0-4095]      [4096-8191]
    Normally the DIO code would put these into the same BIO's.  The problem is we
    need to know exactly what offset is associated with what BIO so we can do our
    checksumming and unlocking properly, so putting them in the same BIO doesn't
    work.  So add another check where we submit the current BIO if the physical
    blocks are not contigous OR the logical blocks are not contiguous.
    Signed-off-by: default avatarJosef Bacik <josef@redhat.com>
    Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>
direct-io.c 35.3 KB