diff options
author | Jaegeuk Kim <jaegeuk@kernel.org> | 2014-09-02 18:52:58 -0400 |
---|---|---|
committer | Jaegeuk Kim <jaegeuk@kernel.org> | 2014-09-09 16:15:02 -0400 |
commit | 9850cf4a8908886370b1f15aacf83d291f098c72 (patch) | |
tree | 2ee332a189922cefd47e26ce335cab7ad21e96b2 /fs/f2fs/f2fs.h | |
parent | 2ae4c673e3cbd69bc2decf6d7f5961f3c7b9b38b (diff) |
f2fs: need fsck.f2fs when f2fs_bug_on is triggered
If any f2fs_bug_on is triggered, fsck.f2fs is needed.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Diffstat (limited to 'fs/f2fs/f2fs.h')
-rw-r--r-- | fs/f2fs/f2fs.h | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h index 210c62df08c3..b389ced9090b 100644 --- a/fs/f2fs/f2fs.h +++ b/fs/f2fs/f2fs.h | |||
@@ -21,10 +21,16 @@ | |||
21 | #include <linux/sched.h> | 21 | #include <linux/sched.h> |
22 | 22 | ||
23 | #ifdef CONFIG_F2FS_CHECK_FS | 23 | #ifdef CONFIG_F2FS_CHECK_FS |
24 | #define f2fs_bug_on(condition) BUG_ON(condition) | 24 | #define f2fs_bug_on(sbi, condition) BUG_ON(condition) |
25 | #define f2fs_down_write(x, y) down_write_nest_lock(x, y) | 25 | #define f2fs_down_write(x, y) down_write_nest_lock(x, y) |
26 | #else | 26 | #else |
27 | #define f2fs_bug_on(condition) WARN_ON(condition) | 27 | #define f2fs_bug_on(sbi, condition) \ |
28 | do { \ | ||
29 | if (unlikely(condition)) { \ | ||
30 | WARN_ON(1); \ | ||
31 | sbi->need_fsck = true; \ | ||
32 | } \ | ||
33 | } while (0) | ||
28 | #define f2fs_down_write(x, y) down_write(x) | 34 | #define f2fs_down_write(x, y) down_write(x) |
29 | #endif | 35 | #endif |
30 | 36 | ||
@@ -719,8 +725,8 @@ static inline void dec_valid_block_count(struct f2fs_sb_info *sbi, | |||
719 | blkcnt_t count) | 725 | blkcnt_t count) |
720 | { | 726 | { |
721 | spin_lock(&sbi->stat_lock); | 727 | spin_lock(&sbi->stat_lock); |
722 | f2fs_bug_on(sbi->total_valid_block_count < (block_t) count); | 728 | f2fs_bug_on(sbi, sbi->total_valid_block_count < (block_t) count); |
723 | f2fs_bug_on(inode->i_blocks < count); | 729 | f2fs_bug_on(sbi, inode->i_blocks < count); |
724 | inode->i_blocks -= count; | 730 | inode->i_blocks -= count; |
725 | sbi->total_valid_block_count -= (block_t)count; | 731 | sbi->total_valid_block_count -= (block_t)count; |
726 | spin_unlock(&sbi->stat_lock); | 732 | spin_unlock(&sbi->stat_lock); |
@@ -864,9 +870,9 @@ static inline void dec_valid_node_count(struct f2fs_sb_info *sbi, | |||
864 | { | 870 | { |
865 | spin_lock(&sbi->stat_lock); | 871 | spin_lock(&sbi->stat_lock); |
866 | 872 | ||
867 | f2fs_bug_on(!sbi->total_valid_block_count); | 873 | f2fs_bug_on(sbi, !sbi->total_valid_block_count); |
868 | f2fs_bug_on(!sbi->total_valid_node_count); | 874 | f2fs_bug_on(sbi, !sbi->total_valid_node_count); |
869 | f2fs_bug_on(!inode->i_blocks); | 875 | f2fs_bug_on(sbi, !inode->i_blocks); |
870 | 876 | ||
871 | inode->i_blocks--; | 877 | inode->i_blocks--; |
872 | sbi->total_valid_node_count--; | 878 | sbi->total_valid_node_count--; |
@@ -883,7 +889,7 @@ static inline unsigned int valid_node_count(struct f2fs_sb_info *sbi) | |||
883 | static inline void inc_valid_inode_count(struct f2fs_sb_info *sbi) | 889 | static inline void inc_valid_inode_count(struct f2fs_sb_info *sbi) |
884 | { | 890 | { |
885 | spin_lock(&sbi->stat_lock); | 891 | spin_lock(&sbi->stat_lock); |
886 | f2fs_bug_on(sbi->total_valid_inode_count == sbi->total_node_count); | 892 | f2fs_bug_on(sbi, sbi->total_valid_inode_count == sbi->total_node_count); |
887 | sbi->total_valid_inode_count++; | 893 | sbi->total_valid_inode_count++; |
888 | spin_unlock(&sbi->stat_lock); | 894 | spin_unlock(&sbi->stat_lock); |
889 | } | 895 | } |
@@ -891,7 +897,7 @@ static inline void inc_valid_inode_count(struct f2fs_sb_info *sbi) | |||
891 | static inline void dec_valid_inode_count(struct f2fs_sb_info *sbi) | 897 | static inline void dec_valid_inode_count(struct f2fs_sb_info *sbi) |
892 | { | 898 | { |
893 | spin_lock(&sbi->stat_lock); | 899 | spin_lock(&sbi->stat_lock); |
894 | f2fs_bug_on(!sbi->total_valid_inode_count); | 900 | f2fs_bug_on(sbi, !sbi->total_valid_inode_count); |
895 | sbi->total_valid_inode_count--; | 901 | sbi->total_valid_inode_count--; |
896 | spin_unlock(&sbi->stat_lock); | 902 | spin_unlock(&sbi->stat_lock); |
897 | } | 903 | } |
@@ -907,7 +913,7 @@ static inline void f2fs_put_page(struct page *page, int unlock) | |||
907 | return; | 913 | return; |
908 | 914 | ||
909 | if (unlock) { | 915 | if (unlock) { |
910 | f2fs_bug_on(!PageLocked(page)); | 916 | f2fs_bug_on(F2FS_P_SB(page), !PageLocked(page)); |
911 | unlock_page(page); | 917 | unlock_page(page); |
912 | } | 918 | } |
913 | page_cache_release(page); | 919 | page_cache_release(page); |