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