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