]> git.baikalelectronics.ru Git - kernel.git/commit
f2fs: avoid race between zero_range and background GC
authorChao Yu <yuchao0@huawei.com>
Sun, 5 Aug 2018 15:02:22 +0000 (23:02 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Mon, 13 Aug 2018 17:48:17 +0000 (10:48 -0700)
commitf78e50c05d81bd7ffa4e9d3144c66cd8298eefc8
tree9d5f827b0c96b80858080012618f1d634c1f3e1e
parent8a592095a65293adfed5a95cd1944dd7dc1b1bfd
f2fs: avoid race between zero_range and background GC

Thread A Background GC
- f2fs_zero_range
 - truncate_pagecache_range
- gc_data_segment
 - get_read_data_page
  - move_data_page
   - set_page_dirty
   - set_cold_data
 - f2fs_do_zero_range
  - dn->data_blkaddr = NEW_ADDR;
  - f2fs_set_data_blkaddr

Actually, we don't need to set dirty & checked flag on the page, since
all valid data in the page should be zeroed by zero_range().

Use i_gc_rwsem[WRITE] to avoid such race condition.

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