aboutsummaryrefslogtreecommitdiffstats
path: root/fs/f2fs/file.c
diff options
context:
space:
mode:
authorJaegeuk Kim <jaegeuk.kim@samsung.com>2014-03-18 13:29:07 +0900
committerAndreas Blaesius <skate4life@gmx.de>2016-06-05 21:21:22 +0200
commitb386f8272d41ed4e3842dfe0c5ea9ad2a938dd80 (patch)
tree81a803fc9a4d14b0ffcc4061676da64024e47e83 /fs/f2fs/file.c
parent27a0600259e9bd74741713aee4a5b386670ff209 (diff)
downloadkernel_samsung_espresso10-b386f8272d41ed4e3842dfe0c5ea9ad2a938dd80.zip
kernel_samsung_espresso10-b386f8272d41ed4e3842dfe0c5ea9ad2a938dd80.tar.gz
kernel_samsung_espresso10-b386f8272d41ed4e3842dfe0c5ea9ad2a938dd80.tar.bz2
f2fs: call f2fs_wait_on_page_writeback instead of native function
If a page is on writeback, f2fs can face with deadlock due to under writepages. This is caused by merging IOs inside f2fs, so if it comes to detect, let's throw merged IOs, which is implemented by f2fs_wait_on_page_writeback. Signed-off-by: Jaegeuk Kim <jaegeuk.kim@samsung.com>
Diffstat (limited to 'fs/f2fs/file.c')
-rw-r--r--fs/f2fs/file.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c
index 9dc83e3..fb2f968 100644
--- a/fs/f2fs/file.c
+++ b/fs/f2fs/file.c
@@ -80,7 +80,7 @@ static int f2fs_vm_page_mkwrite(struct vm_area_struct *vma,
trace_f2fs_vm_page_mkwrite(page, DATA);
mapped:
/* fill the page */
- wait_on_page_writeback(page);
+ f2fs_wait_on_page_writeback(page, DATA);
out:
return block_page_mkwrite_return(err);
}
@@ -247,7 +247,7 @@ static void truncate_partial_data_page(struct inode *inode, u64 from)
f2fs_put_page(page, 1);
return;
}
- wait_on_page_writeback(page);
+ f2fs_wait_on_page_writeback(page, DATA);
zero_user(page, offset, PAGE_CACHE_SIZE - offset);
set_page_dirty(page);
f2fs_put_page(page, 1);
@@ -423,7 +423,7 @@ static void fill_zero(struct inode *inode, pgoff_t index,
f2fs_unlock_op(sbi);
if (!IS_ERR(page)) {
- wait_on_page_writeback(page);
+ f2fs_wait_on_page_writeback(page, DATA);
zero_user(page, start, len);
set_page_dirty(page);
f2fs_put_page(page, 1);