• Joe Thornber's avatar
    dm thin: fix out of data space handling · 3e1a0699
    Joe Thornber authored
    Ideally a thin pool would never run out of data space; the low water
    mark would trigger userland to extend the pool before we completely run
    out of space.  However, many small random IOs to unprovisioned space can
    consume data space at an alarming rate.  Adjust your low water mark if
    you're frequently seeing "out-of-data-space" mode.
    
    Before this fix, if data space ran out the pool would be put in
    PM_READ_ONLY mode which also aborted the pool's current metadata
    transaction (data loss for any changes in the transaction).  This had a
    side-effect of needlessly compromising data consistency.  And retry of
    queued unserviceable bios, once the data pool was resized, could
    initiate changes to potentially inconsistent pool metadata.
    
    Now when the pool's data space is exhausted transition to a new pool
    mode (PM_OUT_OF_DATA_SPACE) that allows metadata to be changed but data
    may not be allocated.  This allows users to remove thin volumes or
    discard data to recover data space.
    
    The pool is no longer put in PM_READ_ONLY mode in response to the pool
    running out of data space.  And PM_READ_ONLY mode no longer aborts the
    pool's current metadata transaction.  Also, set_pool_mode() will now
    notify userspace when the pool mode is changed.
    Signed-off-by: default avatarJoe Thornber <ejt@redhat.com>
    Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
    3e1a0699
dm-thin.c 80.1 KB