super.c (2dd15654ac0abe587a245a09a7823bbbd588bfb7) | super.c (7c45729a4d6d1c90879e6c5c2df325c2f6db7191) |
---|---|
1/* 2 * fs/f2fs/super.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 --- 606 unchanged lines hidden (view full) --- 615 atomic_dec(&inode->i_count); 616 } 617 return 0; 618 } 619 620 return generic_drop_inode(inode); 621} 622 | 1/* 2 * fs/f2fs/super.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 --- 606 unchanged lines hidden (view full) --- 615 atomic_dec(&inode->i_count); 616 } 617 return 0; 618 } 619 620 return generic_drop_inode(inode); 621} 622 |
623int f2fs_inode_dirtied(struct inode *inode) | 623int f2fs_inode_dirtied(struct inode *inode, bool sync) |
624{ 625 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); | 624{ 625 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); |
626 int ret = 0; |
|
626 627 spin_lock(&sbi->inode_lock[DIRTY_META]); 628 if (is_inode_flag_set(inode, FI_DIRTY_INODE)) { | 627 628 spin_lock(&sbi->inode_lock[DIRTY_META]); 629 if (is_inode_flag_set(inode, FI_DIRTY_INODE)) { |
629 spin_unlock(&sbi->inode_lock[DIRTY_META]); 630 return 1; | 630 ret = 1; 631 } else { 632 set_inode_flag(inode, FI_DIRTY_INODE); 633 stat_inc_dirty_inode(sbi, DIRTY_META); |
631 } | 634 } |
632 633 set_inode_flag(inode, FI_DIRTY_INODE); 634 list_add_tail(&F2FS_I(inode)->gdirty_list, | 635 if (sync && list_empty(&F2FS_I(inode)->gdirty_list)) { 636 list_add_tail(&F2FS_I(inode)->gdirty_list, |
635 &sbi->inode_list[DIRTY_META]); | 637 &sbi->inode_list[DIRTY_META]); |
636 inc_page_count(sbi, F2FS_DIRTY_IMETA); 637 stat_inc_dirty_inode(sbi, DIRTY_META); | 638 inc_page_count(sbi, F2FS_DIRTY_IMETA); 639 } |
638 spin_unlock(&sbi->inode_lock[DIRTY_META]); | 640 spin_unlock(&sbi->inode_lock[DIRTY_META]); |
639 640 return 0; | 641 return ret; |
641} 642 643void f2fs_inode_synced(struct inode *inode) 644{ 645 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); 646 647 spin_lock(&sbi->inode_lock[DIRTY_META]); 648 if (!is_inode_flag_set(inode, FI_DIRTY_INODE)) { 649 spin_unlock(&sbi->inode_lock[DIRTY_META]); 650 return; 651 } | 642} 643 644void f2fs_inode_synced(struct inode *inode) 645{ 646 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); 647 648 spin_lock(&sbi->inode_lock[DIRTY_META]); 649 if (!is_inode_flag_set(inode, FI_DIRTY_INODE)) { 650 spin_unlock(&sbi->inode_lock[DIRTY_META]); 651 return; 652 } |
652 list_del_init(&F2FS_I(inode)->gdirty_list); | 653 if (!list_empty(&F2FS_I(inode)->gdirty_list)) { 654 list_del_init(&F2FS_I(inode)->gdirty_list); 655 dec_page_count(sbi, F2FS_DIRTY_IMETA); 656 } |
653 clear_inode_flag(inode, FI_DIRTY_INODE); 654 clear_inode_flag(inode, FI_AUTO_RECOVER); | 657 clear_inode_flag(inode, FI_DIRTY_INODE); 658 clear_inode_flag(inode, FI_AUTO_RECOVER); |
655 dec_page_count(sbi, F2FS_DIRTY_IMETA); | |
656 stat_dec_dirty_inode(F2FS_I_SB(inode), DIRTY_META); 657 spin_unlock(&sbi->inode_lock[DIRTY_META]); 658} 659 660/* 661 * f2fs_dirty_inode() is called from __mark_inode_dirty() 662 * 663 * We should call set_dirty_inode to write the dirty inode through write_inode. --- 7 unchanged lines hidden (view full) --- 671 return; 672 673 if (flags == I_DIRTY_TIME) 674 return; 675 676 if (is_inode_flag_set(inode, FI_AUTO_RECOVER)) 677 clear_inode_flag(inode, FI_AUTO_RECOVER); 678 | 659 stat_dec_dirty_inode(F2FS_I_SB(inode), DIRTY_META); 660 spin_unlock(&sbi->inode_lock[DIRTY_META]); 661} 662 663/* 664 * f2fs_dirty_inode() is called from __mark_inode_dirty() 665 * 666 * We should call set_dirty_inode to write the dirty inode through write_inode. --- 7 unchanged lines hidden (view full) --- 674 return; 675 676 if (flags == I_DIRTY_TIME) 677 return; 678 679 if (is_inode_flag_set(inode, FI_AUTO_RECOVER)) 680 clear_inode_flag(inode, FI_AUTO_RECOVER); 681 |
679 f2fs_inode_dirtied(inode); | 682 f2fs_inode_dirtied(inode, false); |
680} 681 682static void f2fs_i_callback(struct rcu_head *head) 683{ 684 struct inode *inode = container_of(head, struct inode, i_rcu); 685 kmem_cache_free(f2fs_inode_cachep, F2FS_I(inode)); 686} 687 --- 1358 unchanged lines hidden --- | 683} 684 685static void f2fs_i_callback(struct rcu_head *head) 686{ 687 struct inode *inode = container_of(head, struct inode, i_rcu); 688 kmem_cache_free(f2fs_inode_cachep, F2FS_I(inode)); 689} 690 --- 1358 unchanged lines hidden --- |