aboutsummaryrefslogtreecommitdiff
path: root/fs/f2fs/f2fs.h
diff options
context:
space:
mode:
authorGravatar Jaegeuk Kim <jaegeuk@kernel.org> 2017-07-24 19:46:29 -0700
committerGravatar Jaegeuk Kim <jaegeuk@kernel.org> 2017-07-28 17:49:01 -0700
commit7a10f0177e117e9935ee9e5c595fcf3c57215de5 (patch)
tree5b8f062a85ac3d175d0686323fc4c051ce484a17 /fs/f2fs/f2fs.h
parentf2fs: give a try to do atomic write in -ENOMEM case (diff)
downloadlinux-7a10f0177e117e9935ee9e5c595fcf3c57215de5.tar.gz
linux-7a10f0177e117e9935ee9e5c595fcf3c57215de5.tar.bz2
linux-7a10f0177e117e9935ee9e5c595fcf3c57215de5.zip
f2fs: don't give partially written atomic data from process crash
This patch resolves the below scenario. == Process 1 == == Process 2 == open(w) open(rw) begin write(new_#1) process_crash f_op->flush locks_remove_posix f_op>release read (new_#1) In order to avoid corrupted database caused by new_#1, we must do roll-back at process_crash time. In order to check that, this patch keeps task which triggers transaction begin, and does roll-back in f_op->flush before removing file locks. Reviewed-by: Chao Yu <yuchao0@huawei.com> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Diffstat (limited to 'fs/f2fs/f2fs.h')
-rw-r--r--fs/f2fs/f2fs.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
index 70777a889e12..859ff4265c34 100644
--- a/fs/f2fs/f2fs.h
+++ b/fs/f2fs/f2fs.h
@@ -536,6 +536,7 @@ struct f2fs_inode_info {
struct list_head dirty_list; /* dirty list for dirs and files */
struct list_head gdirty_list; /* linked in global dirty list */
struct list_head inmem_pages; /* inmemory pages managed by f2fs */
+ struct task_struct *inmem_task; /* store inmemory task */
struct mutex inmem_lock; /* lock for inmemory pages */
struct extent_tree *extent_tree; /* cached extent_tree entry */
struct rw_semaphore dio_rwsem[2];/* avoid racing between dio and gc */