• Mike Snitzer's avatar
    dm thin: stay in out-of-data-space mode once no_space_timeout expires · bcc696fa
    Mike Snitzer authored
    This fixes an issue where running out of data space would cause the
    thin-pool's metadata to become read-only.  There was no reason to make
    metadata read-only -- calling set_pool_mode() with PM_READ_ONLY was a
    misguided way to error all queued and future write IOs.  We can
    accomplish the same by degrading from PM_OUT_OF_DATA_SPACE to
    PM_OUT_OF_DATA_SPACE with error_if_no_space enabled.
    
    Otherwise, the use of PM_READ_ONLY could cause a race where commit() was
    started before the PM_READ_ONLY transition but dm_pool_commit_metadata()
    would go on to fail because the block manager had transitioned to
    read-only.  The return of -EPERM from dm_pool_commit_metadata(), due to
    attempting to commit while in read-only mode, caused the thin-pool to
    set 'needs_check' because a metadata_operation_failed().  This needless
    cascade of failures makes life for users more difficult than needed.
    Reported-by: default avatarVivek Goyal <vgoyal@redhat.com>
    Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
    bcc696fa
dm-thin.c 110 KB