• Mike Snitzer's avatar
    dm thin: fix regression in advertised discard limits · 0fcb04d5
    Mike Snitzer authored
    When establishing a thin device's discard limits we cannot rely on the
    underlying thin-pool device's discard capabilities (which are inherited
    from the thin-pool's underlying data device) given that DM thin devices
    must provide discard support even when the thin-pool's underlying data
    device doesn't support discards.
    
    Users were exposed to this thin device discard limits regression if
    their thin-pool's underlying data device does _not_ support discards.
    This regression caused all upper-layers that called the
    blkdev_issue_discard() interface to not be able to issue discards to
    thin devices (because discard_granularity was 0).  This regression
    wasn't caught earlier because the device-mapper-test-suite's extensive
    'thin-provisioning' discard tests are only ever performed against
    thin-pool's with data devices that support discards.
    
    Fix is to have thin_io_hints() test the pool's 'discard_enabled' feature
    rather than inferring whether or not a thin device's discard support
    should be enabled by looking at the thin-pool's discard_granularity.
    
    Fixes: 21607670 ("dm thin: disable discard support for thin devices if pool's is disabled")
    Reported-by: default avatarMike Gerber <mike@sprachgewalt.de>
    Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
    Cc: stable@vger.kernel.org # 4.1+
    0fcb04d5
dm-thin.c 107 KB