f2fs: introduce check_swap_activate_fast()
authorChao Yu <yuchao0@huawei.com>
Mon, 12 Oct 2020 09:06:05 +0000 (17:06 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Wed, 14 Oct 2020 06:23:34 +0000 (23:23 -0700)
commitaf4b6b8edf6aad73ac385e06196fefa46c23e038
tree937f3c085ded24de145979ebccb368158135f7db
parent6ed29fe1cac9745589b7db8de3b5089e3ff591d0
f2fs: introduce check_swap_activate_fast()

check_swap_activate() will lookup block mapping via bmap() one by one, so
its performance is very bad, this patch introduces check_swap_activate_fast()
to use f2fs_fiemap() to boost this process, since f2fs_fiemap() will lookup
block mappings in batch, therefore, it can improve swapon()'s performance
significantly.

Note that this enhancement only works when page size is equal to f2fs' block
size.

Testcase: (backend device: zram)
- touch file
- pin & fallocate file to 8GB
- mkswap file
- swapon file

Before:
real 0m2.999s
user 0m0.000s
sys 0m2.980s

After:
real 0m0.081s
user 0m0.000s
sys 0m0.064s

Signed-off-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/data.c