linux/fs/f2fs
Daeho Jeong 9ac1e2d88d f2fs: prevent newly created inode from being dirtied incorrectly
Now, we invoke f2fs_mark_inode_dirty_sync() to make an inode dirty in
advance of creating a new node page for the inode. By this, some inodes
whose node page is not created yet can be linked into the global dirty
list.

If the checkpoint is executed at this moment, the inode will be written
back by writeback_single_inode() and finally update_inode_page() will
fail to detach the inode from the global dirty list because the inode
doesn't have a node page.

The problem is that the inode's state in VFS layer will become clean
after execution of writeback_single_inode() and it's still linked in
the global dirty list of f2fs and this will cause a kernel panic.

So, we will prevent the newly created inode from being dirtied during
the FI_NEW_INODE flag of the inode is set. We will make it dirty
right after the flag is cleared.

Signed-off-by: Daeho Jeong <daeho.jeong@samsung.com>
Signed-off-by: Youngjin Gil <youngjin.gil@samsung.com>
Tested-by: Hobin Woo <hobin.woo@samsung.com>
Reviewed-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
2018-01-18 22:09:12 -08:00
..
acl.c posix_acl: convert posix_acl.a_refcount from atomic_t to refcount_t 2018-01-02 19:27:28 -08:00
acl.h f2fs: remove dead code f2fs_check_acl 2016-09-14 16:52:36 -07:00
checkpoint.c f2fs: inject fault to kzalloc 2018-01-02 19:27:29 -08:00
data.c f2fs: support FIEMAP_FLAG_XATTR 2018-01-18 22:09:11 -08:00
debug.c f2fs: inject fault to kzalloc 2018-01-02 19:27:29 -08:00
dir.c f2fs: recover directory operations by fsync 2018-01-02 19:27:31 -08:00
extent_cache.c f2fs: fix a bug caused by NULL extent tree 2017-05-23 21:07:18 -07:00
f2fs.h f2fs: prevent newly created inode from being dirtied incorrectly 2018-01-18 22:09:12 -08:00
file.c f2fs: fix to caclulate required free section correctly 2018-01-18 22:09:08 -08:00
gc.c Rename superblock flags (MS_xyz -> SB_xyz) 2017-11-27 13:05:09 -08:00
gc.h f2fs: fix potential overflow when adjusting GC cycle 2017-08-15 10:40:14 -07:00
hash.c f2fs: check entire encrypted bigname when finding a dentry 2017-05-04 11:44:35 -04:00
inline.c f2fs: enhance multiple device flush 2017-10-10 12:49:53 -07:00
inode.c f2fs: prevent newly created inode from being dirtied incorrectly 2018-01-18 22:09:12 -08:00
Kconfig f2fs: add mount option to select fault injection ratio 2016-05-07 10:32:22 -07:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
namei.c f2fs: prevent newly created inode from being dirtied incorrectly 2018-01-18 22:09:12 -08:00
node.c f2fs: implement cgroup writeback support 2018-01-16 15:40:01 -08:00
node.h f2fs: limit # of inmemory pages 2017-10-26 10:44:21 +02:00
recovery.c f2fs: remove unused parameter 2018-01-02 19:27:27 -08:00
segment.c f2fs: handle newly created page when revoking inmem pages 2018-01-18 22:09:07 -08:00
segment.h f2fs: return error during fill_super 2018-01-02 19:27:31 -08:00
shrinker.c f2fs: obsolete ALLOC_NID_LIST list 2017-10-10 12:49:53 -07:00
super.c f2fs: add resgid and resuid to reserve root blocks 2018-01-16 15:40:02 -08:00
sysfs.c f2fs: add reserved blocks for root user 2018-01-16 15:39:58 -08:00
trace.c f2fs: fix potential hangtask in f2fs_trace_pid 2018-01-02 19:27:30 -08:00
trace.h f2fs: add sbi and page pointer in f2fs_io_info 2015-05-28 15:41:32 -07:00
xattr.c f2fs: fix missing error number for xattr operation 2018-01-02 19:27:31 -08:00
xattr.h f2fs: guard macro variables with braces 2017-04-10 19:48:10 -07:00