1
linux/fs/ext4
Theodore Ts'o 9924a92a8c ext4: pass context information to jbd2__journal_start()
So we can better understand what bits of ext4 are responsible for
long-running jbd2 handles, use jbd2__journal_start() so we can pass
context information for logging purposes.

The recommended way for finding the longer-running handles is:

   T=/sys/kernel/debug/tracing
   EVENT=$T/events/jbd2/jbd2_handle_stats
   echo "interval > 5" > $EVENT/filter
   echo 1 > $EVENT/enable

   ./run-my-fs-benchmark

   cat $T/trace > /tmp/problem-handles

This will list handles that were active for longer than 20ms.  Having
longer-running handles is bad, because a commit started at the wrong
time could stall for those 20+ milliseconds, which could delay an
fsync() or an O_SYNC operation.  Here is an example line from the
trace file describing a handle which lived on for 311 jiffies, or over
1.2 seconds:

postmark-2917  [000] ....   196.435786: jbd2_handle_stats: dev 254,32 
   tid 570 type 2 line_no 2541 interval 311 sync 0 requested_blocks 1
   dirtied_blocks 0

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
2013-02-08 21:59:22 -05:00
..
acl.c ext4: pass context information to jbd2__journal_start() 2013-02-08 21:59:22 -05:00
acl.h
balloc.c ext4: check bh in ext4_read_block_bitmap() 2013-01-12 16:33:25 -05:00
bitmap.c ext4: Checksum the block bitmap properly with bigalloc enabled 2012-10-22 00:34:32 -04:00
block_validity.c
dir.c ext4: release buffer when checksum failed 2013-01-28 21:23:24 -05:00
ext4_extents.h ext4: rationalize ext4_extents.h inclusion 2012-11-28 13:03:30 -05:00
ext4_jbd2.c ext4: pass context information to jbd2__journal_start() 2013-02-08 21:59:22 -05:00
ext4_jbd2.h ext4: pass context information to jbd2__journal_start() 2013-02-08 21:59:22 -05:00
ext4.h ext4: move the jbd2 wrapper functions out of super.c 2013-02-08 13:00:31 -05:00
extents_status.c ext4: add some tracepoints in extent status tree 2012-11-08 21:57:33 -05:00
extents_status.h ext4: add operations on extent status tree 2012-11-08 21:57:20 -05:00
extents.c ext4: pass context information to jbd2__journal_start() 2013-02-08 21:59:22 -05:00
file.c ext4: pass context information to jbd2__journal_start() 2013-02-08 21:59:22 -05:00
fsync.c ext4: fix an incorrect comment about i_mutex 2012-12-25 13:31:52 -05:00
hash.c ext4: reduce one "if" comparison in ext4_dirhash() 2013-02-01 22:33:21 -05:00
ialloc.c ext4: pass context information to jbd2__journal_start() 2013-02-08 21:59:22 -05:00
indirect.c ext4: pass context information to jbd2__journal_start() 2013-02-08 21:59:22 -05:00
inline.c ext4: pass context information to jbd2__journal_start() 2013-02-08 21:59:22 -05:00
inode.c ext4: pass context information to jbd2__journal_start() 2013-02-08 21:59:22 -05:00
ioctl.c ext4: pass context information to jbd2__journal_start() 2013-02-08 21:59:22 -05:00
Kconfig ext4: fix configuration dependencies for ext4 ACLs and security labels 2013-01-06 23:38:44 -05:00
Makefile ext4: Remove CONFIG_EXT4_FS_XATTR 2012-12-10 16:30:43 -05:00
mballoc.c ext4: optimize mballoc for large allocations 2013-02-04 15:08:40 -05:00
mballoc.h
migrate.c ext4: pass context information to jbd2__journal_start() 2013-02-08 21:59:22 -05:00
mmp.c ext4: use unlikely to improve the efficiency of the kernel 2013-01-12 16:28:47 -05:00
move_extent.c ext4: pass context information to jbd2__journal_start() 2013-02-08 21:59:22 -05:00
namei.c ext4: pass context information to jbd2__journal_start() 2013-02-08 21:59:22 -05:00
page-io.c ext4: fix possible use-after-free with AIO 2013-01-29 22:48:17 -05:00
resize.c ext4: pass context information to jbd2__journal_start() 2013-02-08 21:59:22 -05:00
super.c ext4: pass context information to jbd2__journal_start() 2013-02-08 21:59:22 -05:00
symlink.c ext4: Remove CONFIG_EXT4_FS_XATTR 2012-12-10 16:30:43 -05:00
truncate.h
xattr_security.c
xattr_trusted.c
xattr_user.c
xattr.c ext4: pass context information to jbd2__journal_start() 2013-02-08 21:59:22 -05:00
xattr.h ext4: zero out inline data using memset() instead of empty_zero_page 2012-12-11 03:31:49 -05:00