linux/fs/jbd2
Brian King 39e3ac2599 jbd2: Fix I/O hang in jbd2_journal_release_jbd_inode
This fixes a hang seen in jbd2_journal_release_jbd_inode
on a lot of Power 6 systems running with ext4. When we get
in the hung state, all I/O to the disk in question gets blocked
where we stay indefinitely. Looking at the task list, I can see
we are stuck in jbd2_journal_release_jbd_inode waiting on a
wake up. I added some debug code to detect this scenario and
dump additional data if we were stuck in jbd2_journal_release_jbd_inode
for longer than 30 minutes. When it hit, I was able to see that
i_flags was 0, suggesting we missed the wake up.

This patch changes i_flags to be an unsigned long, uses bit operators
to access it, and adds barriers around the accesses. Prior to applying
this patch, we were regularly hitting this hang on numerous systems
in our test environment. After applying the patch, the hangs no longer
occur.

Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
2010-10-27 21:25:12 -04:00
..
checkpoint.c remove SWRITE* I/O types 2010-08-18 01:09:01 -04:00
commit.c jbd2: Fix I/O hang in jbd2_journal_release_jbd_inode 2010-10-27 21:25:12 -04:00
journal.c jbd2: Fix I/O hang in jbd2_journal_release_jbd_inode 2010-10-27 21:25:12 -04:00
Kconfig Revert "task_struct: make journal_info conditional" 2009-12-17 13:23:24 -08:00
Makefile [PATCH] jbd2: rename jbd2 symbols to avoid duplication of jbd symbols 2006-10-11 11:14:15 -07:00
recovery.c ext4: remove initialized but not read variables 2010-06-14 13:28:03 -04:00
revoke.c remove SWRITE* I/O types 2010-08-18 01:09:01 -04:00
transaction.c ext4: clean up compiler warning in start_this_handle() 2010-08-09 17:28:38 -04:00