• Mike Snitzer's avatar
    dm: use op specific max_sectors when splitting abnormal io · be04c14a
    Mike Snitzer authored
    Split abnormal IO in terms of the corresponding operation specific
    max_sectors (max_discard_sectors, max_secure_erase_sectors or
    max_write_zeroes_sectors).
    
    This fixes a significant dm-thinp discard performance regression that
    was introduced with commit e2dd8aca ("dm bio prison v1: improve
    concurrent IO performance"). Relative to discard: max_discard_sectors
    is used instead of max_sectors; which fixes excessive discard splitting
    (e.g. max_sectors=128K vs max_discard_sectors=64M).
    
    Tested by discarding an 1 Petabyte dm-thin device:
    lvcreate -V 1125899906842624B -T test/pool -n thin
    time blkdiscard /dev/test/thin
    
    Before this fix (splitting discards every 128K): ~116m
     After this fix (splitting discards every 64M) : 0m33.460s
    Reported-by: default avatarZorro Lang <zlang@redhat.com>
    Fixes: 06961c48 ("dm: split discards further if target sets max_discard_granularity")
    Requires: 13f6facf ("dm: allow targets to require splitting WRITE_ZEROES and SECURE_ERASE")
    Fixes: e2dd8aca ("dm bio prison v1: improve concurrent IO performance")
    Signed-off-by: default avatarMike Snitzer <snitzer@kernel.org>
    be04c14a
dm.c 79.2 KB