diff options
| author | Chao Yu <yuchao0@huawei.com> | 2018-09-27 18:33:18 +0800 |
|---|---|---|
| committer | Jaegeuk Kim <jaegeuk@kernel.org> | 2018-10-27 11:57:55 -0700 |
| commit | a84324083292e3c923fad16668f5039f4d4af5c4 (patch) | |
| tree | 29a83ca92cc7d1b2bb74cdb559e5d809124f1364 /tools/perf/scripts/python/export-to-postgresql.py | |
| parent | dbb428fbbb59fae08b01fc14d98d320d448877e0 (diff) | |
f2fs: refactor ->page_mkwrite() flow
Thread A Thread B
- f2fs_vm_page_mkwrite
- f2fs_setattr
- down_write(i_mmap_sem)
- truncate_setsize
- f2fs_truncate
- up_write(i_mmap_sem)
- f2fs_reserve_block
reserve NEW_ADDR
- skip dirty page due to truncation
1. we don't need to rserve new block address for a truncated page.
2. dn.data_blkaddr is used out of node page lock coverage.
Refactor ->page_mkwrite() flow to fix above issues:
- use __do_map_lock() to avoid racing checkpoint()
- lock data page in prior to dnode page
- cover f2fs_reserve_block with i_mmap_sem lock
- wait page writeback before zeroing page
Signed-off-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Diffstat (limited to 'tools/perf/scripts/python/export-to-postgresql.py')
0 files changed, 0 insertions, 0 deletions
