file.c (a66c7b2fcfbc9ef4e972f6bc2b63d72d00f23122) file.c (6bacf52fb58aeb3e89d9a62970b85a5570aa8ace)
1/*
2 * fs/f2fs/file.c
3 *
4 * Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 * http://www.samsung.com/
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as

--- 36 unchanged lines hidden (view full) ---

45 set_new_dnode(&dn, inode, NULL, NULL, 0);
46 err = f2fs_reserve_block(&dn, page->index);
47 f2fs_unlock_op(sbi);
48 if (err)
49 goto out;
50
51 file_update_time(vma->vm_file);
52 lock_page(page);
1/*
2 * fs/f2fs/file.c
3 *
4 * Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 * http://www.samsung.com/
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as

--- 36 unchanged lines hidden (view full) ---

45 set_new_dnode(&dn, inode, NULL, NULL, 0);
46 err = f2fs_reserve_block(&dn, page->index);
47 f2fs_unlock_op(sbi);
48 if (err)
49 goto out;
50
51 file_update_time(vma->vm_file);
52 lock_page(page);
53 if (page->mapping != inode->i_mapping ||
53 if (unlikely(page->mapping != inode->i_mapping ||
54 page_offset(page) > i_size_read(inode) ||
54 page_offset(page) > i_size_read(inode) ||
55 !PageUptodate(page)) {
55 !PageUptodate(page))) {
56 unlock_page(page);
57 err = -EFAULT;
58 goto out;
59 }
60
61 /*
62 * check to see if the page is mapped already (no holes)
63 */

--- 51 unchanged lines hidden (view full) ---

115 int ret = 0;
116 bool need_cp = false;
117 struct writeback_control wbc = {
118 .sync_mode = WB_SYNC_ALL,
119 .nr_to_write = LONG_MAX,
120 .for_reclaim = 0,
121 };
122
56 unlock_page(page);
57 err = -EFAULT;
58 goto out;
59 }
60
61 /*
62 * check to see if the page is mapped already (no holes)
63 */

--- 51 unchanged lines hidden (view full) ---

115 int ret = 0;
116 bool need_cp = false;
117 struct writeback_control wbc = {
118 .sync_mode = WB_SYNC_ALL,
119 .nr_to_write = LONG_MAX,
120 .for_reclaim = 0,
121 };
122
123 if (f2fs_readonly(inode->i_sb))
123 if (unlikely(f2fs_readonly(inode->i_sb)))
124 return 0;
125
126 trace_f2fs_sync_file_enter(inode);
127 ret = filemap_write_and_wait_range(inode->i_mapping, start, end);
128 if (ret) {
129 trace_f2fs_sync_file_exit(inode, need_cp, datasync, ret);
130 return ret;
131 }

--- 104 unchanged lines hidden (view full) ---

236 if (!offset)
237 return;
238
239 page = find_data_page(inode, from >> PAGE_CACHE_SHIFT, false);
240 if (IS_ERR(page))
241 return;
242
243 lock_page(page);
124 return 0;
125
126 trace_f2fs_sync_file_enter(inode);
127 ret = filemap_write_and_wait_range(inode->i_mapping, start, end);
128 if (ret) {
129 trace_f2fs_sync_file_exit(inode, need_cp, datasync, ret);
130 return ret;
131 }

--- 104 unchanged lines hidden (view full) ---

236 if (!offset)
237 return;
238
239 page = find_data_page(inode, from >> PAGE_CACHE_SHIFT, false);
240 if (IS_ERR(page))
241 return;
242
243 lock_page(page);
244 if (page->mapping != inode->i_mapping) {
244 if (unlikely(page->mapping != inode->i_mapping)) {
245 f2fs_put_page(page, 1);
246 return;
247 }
248 wait_on_page_writeback(page);
249 zero_user(page, offset, PAGE_CACHE_SIZE - offset);
250 set_page_dirty(page);
251 f2fs_put_page(page, 1);
252}

--- 258 unchanged lines hidden (view full) ---

511
512 f2fs_lock_op(sbi);
513 set_new_dnode(&dn, inode, NULL, NULL, 0);
514 ret = f2fs_reserve_block(&dn, index);
515 f2fs_unlock_op(sbi);
516 if (ret)
517 break;
518
245 f2fs_put_page(page, 1);
246 return;
247 }
248 wait_on_page_writeback(page);
249 zero_user(page, offset, PAGE_CACHE_SIZE - offset);
250 set_page_dirty(page);
251 f2fs_put_page(page, 1);
252}

--- 258 unchanged lines hidden (view full) ---

511
512 f2fs_lock_op(sbi);
513 set_new_dnode(&dn, inode, NULL, NULL, 0);
514 ret = f2fs_reserve_block(&dn, index);
515 f2fs_unlock_op(sbi);
516 if (ret)
517 break;
518
519
520 if (pg_start == pg_end)
521 new_size = offset + len;
522 else if (index == pg_start && off_start)
523 new_size = (index + 1) << PAGE_CACHE_SHIFT;
524 else if (index == pg_end)
525 new_size = (index << PAGE_CACHE_SHIFT) + off_end;
526 else
527 new_size += PAGE_CACHE_SIZE;

--- 140 unchanged lines hidden ---
519 if (pg_start == pg_end)
520 new_size = offset + len;
521 else if (index == pg_start && off_start)
522 new_size = (index + 1) << PAGE_CACHE_SHIFT;
523 else if (index == pg_end)
524 new_size = (index << PAGE_CACHE_SHIFT) + off_end;
525 else
526 new_size += PAGE_CACHE_SIZE;

--- 140 unchanged lines hidden ---