data.c (fb7d70db305a1446864227abf711b756568f8242) | data.c (4354994f097d068a894aa1a0860da54571df3582) |
---|---|
1// SPDX-License-Identifier: GPL-2.0 2/* 3 * fs/f2fs/data.c 4 * 5 * Copyright (c) 2012 Samsung Electronics Co., Ltd. 6 * http://www.samsung.com/ 7 */ 8#include <linux/fs.h> --- 523 unchanged lines hidden (view full) --- 532 io->last_block_in_bio = fio->new_blkaddr; 533 f2fs_trace_ios(fio, 0); 534 535 trace_f2fs_submit_page_write(fio->page, fio); 536skip: 537 if (fio->in_list) 538 goto next; 539out: | 1// SPDX-License-Identifier: GPL-2.0 2/* 3 * fs/f2fs/data.c 4 * 5 * Copyright (c) 2012 Samsung Electronics Co., Ltd. 6 * http://www.samsung.com/ 7 */ 8#include <linux/fs.h> --- 523 unchanged lines hidden (view full) --- 532 io->last_block_in_bio = fio->new_blkaddr; 533 f2fs_trace_ios(fio, 0); 534 535 trace_f2fs_submit_page_write(fio->page, fio); 536skip: 537 if (fio->in_list) 538 goto next; 539out: |
540 if (is_sbi_flag_set(sbi, SBI_IS_SHUTDOWN)) | 540 if (is_sbi_flag_set(sbi, SBI_IS_SHUTDOWN) || 541 f2fs_is_checkpoint_ready(sbi)) |
541 __submit_merged_bio(io); 542 up_write(&io->io_rwsem); 543} 544 545static struct bio *f2fs_grab_read_bio(struct inode *inode, block_t blkaddr, 546 unsigned nr_pages, unsigned op_flag) 547{ 548 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); --- 1149 unchanged lines hidden (view full) --- 1698 !f2fs_encrypted_inode(inode)) 1699 return true; 1700 1701 /* this is only set during fdatasync */ 1702 if (policy & (0x1 << F2FS_IPU_FSYNC) && 1703 is_inode_flag_set(inode, FI_NEED_IPU)) 1704 return true; 1705 | 542 __submit_merged_bio(io); 543 up_write(&io->io_rwsem); 544} 545 546static struct bio *f2fs_grab_read_bio(struct inode *inode, block_t blkaddr, 547 unsigned nr_pages, unsigned op_flag) 548{ 549 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); --- 1149 unchanged lines hidden (view full) --- 1699 !f2fs_encrypted_inode(inode)) 1700 return true; 1701 1702 /* this is only set during fdatasync */ 1703 if (policy & (0x1 << F2FS_IPU_FSYNC) && 1704 is_inode_flag_set(inode, FI_NEED_IPU)) 1705 return true; 1706 |
1707 if (unlikely(fio && is_sbi_flag_set(sbi, SBI_CP_DISABLED) && 1708 !f2fs_is_checkpointed_data(sbi, fio->old_blkaddr))) 1709 return true; 1710 |
|
1706 return false; 1707} 1708 1709bool f2fs_should_update_inplace(struct inode *inode, struct f2fs_io_info *fio) 1710{ 1711 if (f2fs_is_pinned_file(inode)) 1712 return true; 1713 --- 14 unchanged lines hidden (view full) --- 1728 return true; 1729 if (f2fs_is_atomic_file(inode)) 1730 return true; 1731 if (fio) { 1732 if (is_cold_data(fio->page)) 1733 return true; 1734 if (IS_ATOMIC_WRITTEN_PAGE(fio->page)) 1735 return true; | 1711 return false; 1712} 1713 1714bool f2fs_should_update_inplace(struct inode *inode, struct f2fs_io_info *fio) 1715{ 1716 if (f2fs_is_pinned_file(inode)) 1717 return true; 1718 --- 14 unchanged lines hidden (view full) --- 1733 return true; 1734 if (f2fs_is_atomic_file(inode)) 1735 return true; 1736 if (fio) { 1737 if (is_cold_data(fio->page)) 1738 return true; 1739 if (IS_ATOMIC_WRITTEN_PAGE(fio->page)) 1740 return true; |
1741 if (unlikely(is_sbi_flag_set(sbi, SBI_CP_DISABLED) && 1742 f2fs_is_checkpointed_data(sbi, fio->old_blkaddr))) 1743 return true; |
|
1736 } 1737 return false; 1738} 1739 1740static inline bool need_inplace_update(struct f2fs_io_info *fio) 1741{ 1742 struct inode *inode = fio->page->mapping->host; 1743 --- 604 unchanged lines hidden (view full) --- 2348 struct page *page = NULL; 2349 pgoff_t index = ((unsigned long long) pos) >> PAGE_SHIFT; 2350 bool need_balance = false, drop_atomic = false; 2351 block_t blkaddr = NULL_ADDR; 2352 int err = 0; 2353 2354 trace_f2fs_write_begin(inode, pos, len, flags); 2355 | 1744 } 1745 return false; 1746} 1747 1748static inline bool need_inplace_update(struct f2fs_io_info *fio) 1749{ 1750 struct inode *inode = fio->page->mapping->host; 1751 --- 604 unchanged lines hidden (view full) --- 2356 struct page *page = NULL; 2357 pgoff_t index = ((unsigned long long) pos) >> PAGE_SHIFT; 2358 bool need_balance = false, drop_atomic = false; 2359 block_t blkaddr = NULL_ADDR; 2360 int err = 0; 2361 2362 trace_f2fs_write_begin(inode, pos, len, flags); 2363 |
2364 err = f2fs_is_checkpoint_ready(sbi); 2365 if (err) 2366 goto fail; 2367 |
|
2356 if ((f2fs_is_atomic_file(inode) && 2357 !f2fs_available_free_memory(sbi, INMEM_PAGES)) || 2358 is_inode_flag_set(inode, FI_ATOMIC_REVOKE_REQUEST)) { 2359 err = -ENOMEM; 2360 drop_atomic = true; 2361 goto fail; 2362 } 2363 --- 405 unchanged lines hidden --- | 2368 if ((f2fs_is_atomic_file(inode) && 2369 !f2fs_available_free_memory(sbi, INMEM_PAGES)) || 2370 is_inode_flag_set(inode, FI_ATOMIC_REVOKE_REQUEST)) { 2371 err = -ENOMEM; 2372 drop_atomic = true; 2373 goto fail; 2374 } 2375 --- 405 unchanged lines hidden --- |