f2fs: check zone type before sending async reset zone command
authorShin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Fri, 4 Aug 2023 09:15:56 +0000 (18:15 +0900)
committerJaegeuk Kim <jaegeuk@kernel.org>
Mon, 14 Aug 2023 20:41:09 +0000 (13:41 -0700)
commit3cb88bc15937990177df1f7eac6f22ebbed19312
tree1dd7242a542a86f5ab00440577b386b21961751a
parent025b3602b5fa216fb87bbfa4bff8bb378fe589a0
f2fs: check zone type before sending async reset zone command

The commit 25f9080576b9 ("f2fs: add async reset zone command support")
introduced "async reset zone commands" by calling
__submit_zone_reset_cmd() in async discard operations. However,
__submit_zone_reset_cmd() is called regardless of zone type of discard
target zone. When devices have conventional zones, zone reset commands
are sent to the conventional zones and cause I/O errors.

Avoid the I/O errors by checking that the discard target zone type is
sequential write required. If not, handle the discard operation in same
manner as non-zoned, regular block devices. For that purpose, add a new
helper function f2fs_bdev_index() which gets index of the zone reset
target device.

Fixes: 25f9080576b9 ("f2fs: add async reset zone command support")
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Reviewed-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/f2fs.h
fs/f2fs/segment.c