f2fs: fix to wait all node page writeback
authorChao Yu <yuchao0@huawei.com>
Fri, 14 Feb 2020 09:45:12 +0000 (17:45 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Thu, 27 Feb 2020 18:16:44 +0000 (10:16 -0800)
commitdc5a941223edd803f476a153abd950cc3a83c3e1
tree4be9d96004af447e65f2a96bd044c77ebcca9f38
parentb19e8c68470385dd2c5440876591fddb02c8c402
f2fs: fix to wait all node page writeback

There is a race condition that we may miss to wait for all node pages
writeback, fix it.

- fsync() - shrink
 - f2fs_do_sync_file
 - __write_node_page
  - set_page_writeback(page#0)
  : remove DIRTY/TOWRITE flag
  - f2fs_fsync_node_pages
  : won't find page #0 as TOWRITE flag was removeD
  - f2fs_wait_on_node_pages_writeback
  : wont' wait page #0 writeback as it was not in fsync_node_list list.
   - f2fs_add_fsync_node_entry

Fixes: 50fa53eccf9f ("f2fs: fix to avoid broken of dnode block list")
Signed-off-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/node.c