gc.c (5222595d093ebe80329d38d255d14316257afb3e) | gc.c (bae0ee7a767ceeea6d8e170da3f228fbc7480331) |
---|---|
1// SPDX-License-Identifier: GPL-2.0 2/* 3 * fs/f2fs/gc.c 4 * 5 * Copyright (c) 2012 Samsung Electronics Co., Ltd. 6 * http://www.samsung.com/ 7 */ 8#include <linux/fs.h> --- 665 unchanged lines hidden (view full) --- 674 /* read page */ 675 fio.page = page; 676 fio.new_blkaddr = fio.old_blkaddr = dn.data_blkaddr; 677 678 /* 679 * don't cache encrypted data into meta inode until previous dirty 680 * data were writebacked to avoid racing between GC and flush. 681 */ | 1// SPDX-License-Identifier: GPL-2.0 2/* 3 * fs/f2fs/gc.c 4 * 5 * Copyright (c) 2012 Samsung Electronics Co., Ltd. 6 * http://www.samsung.com/ 7 */ 8#include <linux/fs.h> --- 665 unchanged lines hidden (view full) --- 674 /* read page */ 675 fio.page = page; 676 fio.new_blkaddr = fio.old_blkaddr = dn.data_blkaddr; 677 678 /* 679 * don't cache encrypted data into meta inode until previous dirty 680 * data were writebacked to avoid racing between GC and flush. 681 */ |
682 f2fs_wait_on_page_writeback(page, DATA, true); | 682 f2fs_wait_on_page_writeback(page, DATA, true, true); |
683 684 f2fs_wait_on_block_writeback(inode, dn.data_blkaddr); 685 686 fio.encrypted_page = f2fs_pagecache_get_page(META_MAPPING(sbi), 687 dn.data_blkaddr, 688 FGP_LOCK | FGP_CREAT, GFP_NOFS); 689 if (!fio.encrypted_page) { 690 err = -ENOMEM; --- 72 unchanged lines hidden (view full) --- 763 err = -ENOENT; 764 goto put_out; 765 } 766 767 /* 768 * don't cache encrypted data into meta inode until previous dirty 769 * data were writebacked to avoid racing between GC and flush. 770 */ | 683 684 f2fs_wait_on_block_writeback(inode, dn.data_blkaddr); 685 686 fio.encrypted_page = f2fs_pagecache_get_page(META_MAPPING(sbi), 687 dn.data_blkaddr, 688 FGP_LOCK | FGP_CREAT, GFP_NOFS); 689 if (!fio.encrypted_page) { 690 err = -ENOMEM; --- 72 unchanged lines hidden (view full) --- 763 err = -ENOENT; 764 goto put_out; 765 } 766 767 /* 768 * don't cache encrypted data into meta inode until previous dirty 769 * data were writebacked to avoid racing between GC and flush. 770 */ |
771 f2fs_wait_on_page_writeback(page, DATA, true); | 771 f2fs_wait_on_page_writeback(page, DATA, true, true); |
772 773 f2fs_wait_on_block_writeback(inode, dn.data_blkaddr); 774 775 err = f2fs_get_node_info(fio.sbi, dn.nid, &ni); 776 if (err) 777 goto put_out; 778 779 set_summary(&sum, dn.nid, dn.ofs_in_node, ni.version); --- 44 unchanged lines hidden (view full) --- 824 goto put_page_out; 825 } 826 if (unlikely(!PageUptodate(fio.encrypted_page))) { 827 err = -EIO; 828 goto put_page_out; 829 } 830 831write_page: | 772 773 f2fs_wait_on_block_writeback(inode, dn.data_blkaddr); 774 775 err = f2fs_get_node_info(fio.sbi, dn.nid, &ni); 776 if (err) 777 goto put_out; 778 779 set_summary(&sum, dn.nid, dn.ofs_in_node, ni.version); --- 44 unchanged lines hidden (view full) --- 824 goto put_page_out; 825 } 826 if (unlikely(!PageUptodate(fio.encrypted_page))) { 827 err = -EIO; 828 goto put_page_out; 829 } 830 831write_page: |
832 f2fs_wait_on_page_writeback(fio.encrypted_page, DATA, true); | 832 f2fs_wait_on_page_writeback(fio.encrypted_page, DATA, true, true); |
833 set_page_dirty(fio.encrypted_page); 834 if (clear_page_dirty_for_io(fio.encrypted_page)) 835 dec_page_count(fio.sbi, F2FS_DIRTY_META); 836 837 set_page_writeback(fio.encrypted_page); 838 ClearPageError(page); 839 840 /* allocate block address */ | 833 set_page_dirty(fio.encrypted_page); 834 if (clear_page_dirty_for_io(fio.encrypted_page)) 835 dec_page_count(fio.sbi, F2FS_DIRTY_META); 836 837 set_page_writeback(fio.encrypted_page); 838 ClearPageError(page); 839 840 /* allocate block address */ |
841 f2fs_wait_on_page_writeback(dn.node_page, NODE, true); | 841 f2fs_wait_on_page_writeback(dn.node_page, NODE, true, true); |
842 843 fio.op = REQ_OP_WRITE; 844 fio.op_flags = REQ_SYNC; 845 fio.new_blkaddr = newaddr; 846 f2fs_submit_page_write(&fio); 847 if (fio.retry) { 848 err = -EAGAIN; 849 if (PageWriteback(fio.encrypted_page)) --- 69 unchanged lines hidden (view full) --- 919 .page = page, 920 .encrypted_page = NULL, 921 .need_lock = LOCK_REQ, 922 .io_type = FS_GC_DATA_IO, 923 }; 924 bool is_dirty = PageDirty(page); 925 926retry: | 842 843 fio.op = REQ_OP_WRITE; 844 fio.op_flags = REQ_SYNC; 845 fio.new_blkaddr = newaddr; 846 f2fs_submit_page_write(&fio); 847 if (fio.retry) { 848 err = -EAGAIN; 849 if (PageWriteback(fio.encrypted_page)) --- 69 unchanged lines hidden (view full) --- 919 .page = page, 920 .encrypted_page = NULL, 921 .need_lock = LOCK_REQ, 922 .io_type = FS_GC_DATA_IO, 923 }; 924 bool is_dirty = PageDirty(page); 925 926retry: |
927 f2fs_wait_on_page_writeback(page, DATA, true); | 927 f2fs_wait_on_page_writeback(page, DATA, true, true); |
928 929 set_page_dirty(page); 930 if (clear_page_dirty_for_io(page)) { 931 inode_dec_dirty_pages(inode); 932 f2fs_remove_dirty_inode(inode); 933 } 934 935 set_cold_data(page); --- 417 unchanged lines hidden --- | 928 929 set_page_dirty(page); 930 if (clear_page_dirty_for_io(page)) { 931 inode_dec_dirty_pages(inode); 932 f2fs_remove_dirty_inode(inode); 933 } 934 935 set_cold_data(page); --- 417 unchanged lines hidden --- |