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