• L
    dm-thin: Resume failed in FAIL mode · 9c550a15
    Luo Meng 提交于
    hulk inclusion
    category: bugfix
    bugzilla: https://gitee.com/openeuler/kernel/issues/I5P05D
    CVE: NA
    
    --------------------------------
    
    When thinpool is suspended and sets fail_io, resume will report error
    as below:
    device-mapper: resume ioctl on vg-thinpool  failed: Invalid argument
    
    Thinpool also can't be removed if bio is in deferred list.
    
    This can be easily reproduced using:
    
      echo "offline" > /sys/block/sda/device/state
      dd if=/dev/zero of=/dev/mapper/thin bs=4K count=1
      dmsetup suspend /dev/mapper/pool
      mkfs.ext4 /dev/mapper/thin
      dmsetup resume /dev/mapper/pool
    
    The root cause is maybe_resize_data_dev() will check fail_io and return
    error before called dm_resume.
    
    Fix this by adding FAIL mode check at the end of  pool_preresume().
    
    Fixes: da105ed5 (dm thin metadata: introduce dm_pool_abort_metadata)
    Signed-off-by: NLuo Meng <luomeng12@huawei.com>
    Reviewed-by: NHou Tao <houtao1@huawei.com>
    Signed-off-by: NZheng Zengkai <zhengzengkai@huawei.com>
    9c550a15
dm-thin.c 112.5 KB