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 --- |