• Masato Suzuki's avatar
    f2fs: Fix zoned block device support · 7bb3a371
    Masato Suzuki authored
    The introduction of the multi-device feature partially broke the support
    for zoned block devices. In the function f2fs_scan_devices, sbi->devs
    allocation and initialization is skipped in the case of a single device
    mount. This result in no device information structure being allocated
    for the device. This is fine if the device is a regular device, but in
    the case of a zoned block device, the device zone type array is not
    initialized, which causes the function __f2fs_issue_discard_zone to fail
    as get_blkz_type is unable to determine the zone type of a section.
    
    Fix this by always allocating and initializing the sbi->devs device
    information array even in the case of a single device if that device is
    zoned. For this particular case, make sure to obtain a reference on the
    single device so that the call to blkdev_put() in destroy_device_list
    operates as expected.
    
    Fixes: 3c62be17 ("f2fs: support multiple devices")
    Cc: <stable@vger.kernel.org> # v4.10
    Signed-off-by: default avatarMasato Suzuki <masato.suzuki@wdc.com>
    Acked-by: default avatarDamien Le Moal <damien.lemoal@wdc.com>
    Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
    7bb3a371
super.c 59.7 KB