kernel-hacking-2024-linux-s.../fs/f2fs
Chao Yu 0f3311a8c2 f2fs: fix to update dirty page count correctly
Once we failed to merge inline data into inode page during flushing inline
inode, we will skip invoking inode_dec_dirty_pages, which makes dirty page
count incorrect, result in panic in ->evict_inode, Fix it.

------------[ cut here ]------------
kernel BUG at /home/yuchao/git/devf2fs/inode.c:336!
invalid opcode: 0000 [#1] PREEMPT SMP
CPU: 3 PID: 10004 Comm: umount Tainted: G           O    4.6.0-rc5+ #17
Hardware name: innotek GmbH VirtualBox/VirtualBox, BIOS VirtualBox 12/01/2006
task: f0c33000 ti: c5212000 task.ti: c5212000
EIP: 0060:[<f89aacb5>] EFLAGS: 00010202 CPU: 3
EIP is at f2fs_evict_inode+0x85/0x490 [f2fs]
EAX: 00000001 EBX: c4529ea0 ECX: 00000001 EDX: 00000000
ESI: c0131000 EDI: f89dd0a0 EBP: c5213e9c ESP: c5213e78
 DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
CR0: 80050033 CR2: b75878c0 CR3: 1a36a700 CR4: 000406f0
Stack:
 c4529ea0 c4529ef4 c5213e8c c176d45c c4529ef4 00000000 c4529ea0 c4529fac
 f89dd0a0 c5213eb0 c1204a68 c5213ed8 c452a2b4 c6680930 c5213ec0 c1204b64
 c6680d44 c6680620 c5213eec c120588d ee84b000 ee84b5c0 c5214000 ee84b5e0
Call Trace:
 [<c176d45c>] ? _raw_spin_unlock+0x2c/0x50
 [<c1204a68>] evict+0xa8/0x170
 [<c1204b64>] dispose_list+0x34/0x50
 [<c120588d>] evict_inodes+0x10d/0x130
 [<c11ea941>] generic_shutdown_super+0x41/0xe0
 [<c1185190>] ? unregister_shrinker+0x40/0x50
 [<c1185190>] ? unregister_shrinker+0x40/0x50
 [<c11eac52>] kill_block_super+0x22/0x70
 [<f89af23e>] kill_f2fs_super+0x1e/0x20 [f2fs]
 [<c11eae1d>] deactivate_locked_super+0x3d/0x70
 [<c11eb383>] deactivate_super+0x43/0x60
 [<c1208ec9>] cleanup_mnt+0x39/0x80
 [<c1208f50>] __cleanup_mnt+0x10/0x20
 [<c107d091>] task_work_run+0x71/0x90
 [<c105725a>] exit_to_usermode_loop+0x72/0x9e
 [<c1001c7c>] do_fast_syscall_32+0x19c/0x1c0
 [<c176dd48>] sysenter_past_esp+0x45/0x74
EIP: [<f89aacb5>] f2fs_evict_inode+0x85/0x490 [f2fs] SS:ESP 0068:c5213e78
---[ end trace d30536330b7fdc58 ]---

Signed-off-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
2016-05-20 14:55:41 -07:00
..
acl.c f2fs: introduce f2fs_kmalloc to wrap kmalloc 2016-05-07 10:32:20 -07:00
acl.h
checkpoint.c f2fs: flush pending bios right away when error occurs 2016-05-20 11:46:15 -07:00
data.c f2fs: flush pending bios right away when error occurs 2016-05-20 11:46:15 -07:00
debug.c f2fs: use percpu_counter for page counters 2016-05-18 13:57:27 -07:00
dir.c f2fs: revisit error handling flows 2016-05-07 10:32:25 -07:00
extent_cache.c f2fs: reuse get_extent_info 2016-05-07 10:32:29 -07:00
f2fs.h f2fs: flush pending bios right away when error occurs 2016-05-20 11:46:15 -07:00
file.c f2fs: flush pending bios right away when error occurs 2016-05-20 11:46:15 -07:00
gc.c f2fs: introduce f2fs_kmalloc to wrap kmalloc 2016-05-07 10:32:20 -07:00
gc.h f2fs: detect idle time depending on user behavior 2016-01-11 15:56:37 -08:00
hash.c
inline.c f2fs: fix incorrect error path handling in f2fs_move_rehashed_dirents 2016-05-16 15:32:01 -07:00
inode.c f2fs: flush pending bios right away when error occurs 2016-05-20 11:46:15 -07:00
Kconfig f2fs: add mount option to select fault injection ratio 2016-05-07 10:32:22 -07:00
Makefile fs crypto: move per-file encryption from f2fs tree to fs/crypto 2016-03-17 21:19:33 -07:00
namei.c Merge tag 'f2fs-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs 2016-04-04 13:00:39 -07:00
node.c f2fs: fix to update dirty page count correctly 2016-05-20 14:55:41 -07:00
node.h f2fs: use wait_for_stable_page to avoid contention 2016-02-22 16:07:23 -08:00
recovery.c f2fs: avoid ENOSPC fault in the recovery process 2016-05-20 11:43:04 -07:00
segment.c f2fs: fix to clear page private flag 2016-05-03 11:20:06 -07:00
segment.h f2fs: shrink size of struct seg_entry 2016-05-07 10:32:29 -07:00
shrinker.c f2fs: speed up shrinking extent tree entries 2015-12-30 10:13:00 -08:00
super.c f2fs: make exit_f2fs_fs more clear 2016-05-18 13:57:31 -07:00
trace.c f2fs: trace old block address for CoWed page 2016-02-22 21:40:02 -08:00
trace.h
xattr.c f2fs: remove unneeded memset when updating xattr 2016-05-07 10:32:28 -07:00
xattr.h f2fs: add missing argument to f2fs_setxattr stub 2016-03-17 21:19:47 -07:00