linux/fs/ext4
Jan Kara cf108bca46 ext4: Invert the locking order of page_lock and transaction start
This changes are needed to support data=ordered mode handling via
inodes.  This enables us to get rid of the journal heads and buffer
heads for data buffers in the ordered mode.  With the changes, during
tranasaction commit we writeout the inode pages using the
writepages()/writepage(). That implies we take page lock during
transaction commit. This can cause a deadlock with the locking order
page_lock -> jbd2_journal_start, since the jbd2_journal_start can wait
for the journal_commit to happen and the journal_commit now needs to
take the page lock. To avoid this dead lock reverse the locking order.

Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Mingming Cao <cmm@us.ibm.com>
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
2008-07-11 19:27:31 -04:00
..
acl.c ext4: fix wrong gfp type under transaction 2008-04-29 22:02:02 -04:00
acl.h [PATCH] ext4: rename ext4 symbols to avoid duplication of ext3 symbols 2006-10-11 11:14:15 -07:00
balloc.c ext4: mballoc avoid use root reserved blocks for non root allocation 2008-07-11 19:27:31 -04:00
bitmap.c ext4: move headers out of include/linux 2008-04-29 18:13:32 -04:00
dir.c ext4: improve some code in rb tree part of dir.c 2008-07-11 19:27:31 -04:00
ext4_extents.h ext4: move headers out of include/linux 2008-04-29 18:13:32 -04:00
ext4_i.h ext4: fix comments to say "ext4" 2008-07-11 19:27:31 -04:00
ext4_jbd2.c ext4: move headers out of include/linux 2008-04-29 18:13:32 -04:00
ext4_jbd2.h ext4: replace __FUNCTION__ occurrences 2008-07-13 21:03:29 -04:00
ext4_sb.h ext4: New inode allocation for FLEX_BG meta-data groups. 2008-07-11 19:27:31 -04:00
ext4.h ext4: Invert the locking order of page_lock and transaction start 2008-07-11 19:27:31 -04:00
extents.c ext4: Invert the locking order of page_lock and transaction start 2008-07-11 19:27:31 -04:00
file.c ext4: Use page_mkwrite vma_operations to get mmap write notification. 2008-07-11 19:27:31 -04:00
fsync.c ext4: call blkdev_issue_flush on fsync 2008-07-11 19:27:31 -04:00
group.h ext4: Rename read_block_bitmap() to ext4_read_block_bitmap() 2008-07-11 19:27:31 -04:00
hash.c ext4: move headers out of include/linux 2008-04-29 18:13:32 -04:00
ialloc.c ext4: New inode allocation for FLEX_BG meta-data groups. 2008-07-11 19:27:31 -04:00
inode.c ext4: Invert the locking order of page_lock and transaction start 2008-07-11 19:27:31 -04:00
ioctl.c ext4: move headers out of include/linux 2008-04-29 18:13:32 -04:00
Makefile ext4: Add multi block allocator for ext4 2008-01-29 00:19:52 -05:00
mballoc.c ext4: fix online resize with mballoc 2008-07-11 19:27:31 -04:00
mballoc.h ext4: Move mballoc headers/structures to a seperate header file mballoc.h 2008-04-29 22:01:31 -04:00
migrate.c ext4: move headers out of include/linux 2008-04-29 18:13:32 -04:00
namei.c ext4: cleanup never-used magic numbers from htree code 2008-07-11 19:27:31 -04:00
namei.h [PATCH] ext4: rename ext4 symbols to avoid duplication of ext3 symbols 2006-10-11 11:14:15 -07:00
resize.c ext4: fix online resize with mballoc 2008-07-11 19:27:31 -04:00
super.c ext4: Set journal pointer to NULL when journal is released 2008-07-11 19:27:31 -04:00
symlink.c ext4: move headers out of include/linux 2008-04-29 18:13:32 -04:00
xattr_security.c ext4: move headers out of include/linux 2008-04-29 18:13:32 -04:00
xattr_trusted.c ext4: remove double definitions of xattr macros 2008-07-11 19:27:31 -04:00
xattr_user.c ext4: remove double definitions of xattr macros 2008-07-11 19:27:31 -04:00
xattr.c ext4: Use inode preallocation with -o noextents 2008-07-11 19:27:31 -04:00
xattr.h ext4: make ext4_xattr_list() static 2008-04-17 10:38:59 -04:00