linux/fs/f2fs
Jaegeuk Kim 5f72739583 f2fs: fix deadlock during inline_data conversion
A deadlock can be occurred:
Thread 1]                             Thread 2]
 - f2fs_write_data_pages              - f2fs_write_begin
   - lock_page(page #0)
                                        - grab_cache_page(page #X)
                                        - get_node_page(inode_page)
                                        - grab_cache_page(page #0)
                                          : to convert inline_data
   - f2fs_write_data_page
     - f2fs_write_inline_data
       - get_node_page(inode_page)

In this case, trying to lock inode_page and page #0 causes deadlock.
In order to avoid this, this patch adds a rule for this locking policy,
which is that page #0 should be locked followed by inode_page lock.

Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
2014-11-25 12:08:30 -08:00
..
acl.c f2fs: remove the redundant function cond_clear_inode_flag 2014-11-03 16:07:36 -08:00
acl.h f2fs: avoid deadlock on init_inode_metadata 2014-11-03 16:07:33 -08:00
checkpoint.c f2fs: write SSA pages under memory pressure 2014-11-19 22:49:33 -08:00
data.c f2fs: fix deadlock during inline_data conversion 2014-11-25 12:08:30 -08:00
debug.c f2fs: introduce struct inode_management to wrap inner fields 2014-11-19 22:49:32 -08:00
dir.c f2fs: introduce f2fs_dentry_kunmap to clean up 2014-11-23 21:51:53 -08:00
f2fs.h f2fs: introduce f2fs_dentry_kunmap to clean up 2014-11-23 21:51:53 -08:00
file.c f2fs: convert inline_data when i_size becomes large 2014-11-11 14:16:12 -08:00
gc.c f2fs: avoid unable to restart gc thread in remount 2014-11-19 22:49:30 -08:00
gc.h f2fs: fix typo 2014-08-19 10:01:33 -07:00
hash.c f2fs: fix wrong casting for dentry name 2014-08-29 00:26:50 -07:00
inline.c f2fs: call flush_dcache_page when the page was updated 2014-11-23 21:48:31 -08:00
inode.c f2fs: revisit inline_data to avoid data races and potential bugs 2014-11-04 17:34:11 -08:00
Kconfig f2fs: fix typo 2014-08-19 10:01:33 -07:00
Makefile f2fs: key functions to handle inline data 2013-12-26 20:40:09 +09:00
namei.c f2fs: introduce f2fs_dentry_kunmap to clean up 2014-11-23 21:51:53 -08:00
node.c f2fs: fix typos for the word "destroy" in jump labels 2014-11-25 12:08:22 -08:00
node.h f2fs: control the memory footprint used by ino entries 2014-11-06 15:24:46 -08:00
recovery.c f2fs: introduce f2fs_dentry_kunmap to clean up 2014-11-23 21:51:53 -08:00
segment.c f2fs: fix livelock calling f2fs_iget during f2fs_evict_inode 2014-11-23 21:51:57 -08:00
segment.h f2fs: do not skip any writes under memory pressure 2014-11-10 06:51:38 -08:00
super.c f2fs: remove unneeded check code with option in f2fs_remount 2014-11-19 22:49:31 -08:00
xattr.c f2fs: avoid deadlock on init_inode_metadata 2014-11-03 16:07:33 -08:00
xattr.h f2fs: avoid deadlock on init_inode_metadata 2014-11-03 16:07:33 -08:00