]> git.proxmox.com Git - mirror_ubuntu-eoan-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)
commitc7079853c859c910b9d047a37891b4aafb8f8dd7
tree9d5f827b0c96b80858080012618f1d634c1f3e1e
parent91291e9998d208370eb8156c760691b873bd7522
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