ext4: Add debugging markers that can be used by systemtap
This debugging markers are designed to debug problems such as the random filesystem latency problems reported by Arjan. Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
This commit is contained in:
		
							parent
							
								
									23f8b79eae
								
							
						
					
					
						commit
						ede86cc473
					
				| @ -28,6 +28,7 @@ | ||||
| #include <linux/writeback.h> | ||||
| #include <linux/jbd2.h> | ||||
| #include <linux/blkdev.h> | ||||
| #include <linux/marker.h> | ||||
| #include "ext4.h" | ||||
| #include "ext4_jbd2.h" | ||||
| 
 | ||||
| @ -51,6 +52,10 @@ int ext4_sync_file(struct file *file, struct dentry *dentry, int datasync) | ||||
| 
 | ||||
| 	J_ASSERT(ext4_journal_current_handle() == NULL); | ||||
| 
 | ||||
| 	trace_mark(ext4_sync_file, "dev %s datasync %d ino %ld parent %ld", | ||||
| 		   inode->i_sb->s_id, datasync, inode->i_ino, | ||||
| 		   dentry->d_parent->d_inode->i_ino); | ||||
| 
 | ||||
| 	/*
 | ||||
| 	 * data=writeback: | ||||
| 	 *  The caller's filemap_fdatawrite()/wait will sync the data. | ||||
|  | ||||
| @ -35,6 +35,7 @@ | ||||
| #include <linux/quotaops.h> | ||||
| #include <linux/seq_file.h> | ||||
| #include <linux/proc_fs.h> | ||||
| #include <linux/marker.h> | ||||
| #include <linux/log2.h> | ||||
| #include <linux/crc16.h> | ||||
| #include <asm/uaccess.h> | ||||
| @ -2951,6 +2952,7 @@ static int ext4_sync_fs(struct super_block *sb, int wait) | ||||
| { | ||||
| 	tid_t target; | ||||
| 
 | ||||
| 	trace_mark(ext4_sync_fs, "dev %s wait %d", sb->s_id, wait); | ||||
| 	sb->s_dirt = 0; | ||||
| 	if (jbd2_journal_start_commit(EXT4_SB(sb)->s_journal, &target)) { | ||||
| 		if (wait) | ||||
|  | ||||
| @ -20,6 +20,7 @@ | ||||
| #include <linux/time.h> | ||||
| #include <linux/fs.h> | ||||
| #include <linux/jbd2.h> | ||||
| #include <linux/marker.h> | ||||
| #include <linux/errno.h> | ||||
| #include <linux/slab.h> | ||||
| 
 | ||||
| @ -328,6 +329,8 @@ int jbd2_log_do_checkpoint(journal_t *journal) | ||||
| 	 * journal straight away. | ||||
| 	 */ | ||||
| 	result = jbd2_cleanup_journal_tail(journal); | ||||
| 	trace_mark(jbd2_checkpoint, "dev %s need_checkpoint %d", | ||||
| 		   journal->j_devname, result); | ||||
| 	jbd_debug(1, "cleanup_journal_tail returned %d\n", result); | ||||
| 	if (result <= 0) | ||||
| 		return result; | ||||
|  | ||||
| @ -16,6 +16,7 @@ | ||||
| #include <linux/time.h> | ||||
| #include <linux/fs.h> | ||||
| #include <linux/jbd2.h> | ||||
| #include <linux/marker.h> | ||||
| #include <linux/errno.h> | ||||
| #include <linux/slab.h> | ||||
| #include <linux/mm.h> | ||||
| @ -368,6 +369,8 @@ void jbd2_journal_commit_transaction(journal_t *journal) | ||||
| 	commit_transaction = journal->j_running_transaction; | ||||
| 	J_ASSERT(commit_transaction->t_state == T_RUNNING); | ||||
| 
 | ||||
| 	trace_mark(jbd2_start_commit, "dev %s transaction %d", | ||||
| 		   journal->j_devname, commit_transaction->t_tid); | ||||
| 	jbd_debug(1, "JBD: starting commit of transaction %d\n", | ||||
| 			commit_transaction->t_tid); | ||||
| 
 | ||||
| @ -985,6 +988,9 @@ restart_loop: | ||||
| 	} | ||||
| 	spin_unlock(&journal->j_list_lock); | ||||
| 
 | ||||
| 	trace_mark(jbd2_end_commit, "dev %s transaction %d head %d", | ||||
| 		   journal->j_devname, commit_transaction->t_tid, | ||||
| 		   journal->j_tail_sequence); | ||||
| 	jbd_debug(1, "JBD: commit %d complete, head %d\n", | ||||
| 		  journal->j_commit_sequence, journal->j_tail_sequence); | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user