• Joe Thornber's avatar
    dm bio prison v1: improve concurrent IO performance · e2dd8aca
    Joe Thornber authored
    Split the bio prison into multiple regions, with a separate rbtree and
    associated lock for each region.
    
    To get fast bio prison locking and not damage the performance of
    discards too much the bio-prison now stipulates that discards should
    not cross a BIO_PRISON_MAX_RANGE boundary.
    
    Because the range of a key (block_end - block_begin) must not exceed
    BIO_PRISON_MAX_RANGE: break_up_discard_bio() now ensures the data
    range reflected in PHYSICAL key doesn't exceed BIO_PRISON_MAX_RANGE.
    And splitting the thin target's discards (handled with VIRTUAL key) is
    achieved by updating dm-thin.c to set limits->max_discard_sectors in
    terms of BIO_PRISON_MAX_RANGE _and_ setting the thin and thin-pool
    targets' max_discard_granularity to true.
    Signed-off-by: default avatarJoe Thornber <ejt@redhat.com>
    Signed-off-by: default avatarMike Snitzer <snitzer@kernel.org>
    e2dd8aca
dm-thin.c 113 KB