diff options
author | Theodore Ts'o <tytso@mit.edu> | 2010-07-27 11:56:03 -0400 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2010-07-27 11:56:03 -0400 |
commit | 1c13d5c0872870cca3e612aa045d492ead9ab004 (patch) | |
tree | 6e3dd0d3f49ff56dda9fc6cd72c233759bc24e09 /fs/ext4/ext4_jbd2.c | |
parent | c398eda0e43a791be0fca6f197a1e2bbb9f16070 (diff) | |
download | op-kernel-dev-1c13d5c0872870cca3e612aa045d492ead9ab004.zip op-kernel-dev-1c13d5c0872870cca3e612aa045d492ead9ab004.tar.gz |
ext4: Save error information to the superblock for analysis
Save number of file system errors, and the time function name, line
number, block number, and inode number of the first and most recent
errors reported on the file system in the superblock.
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Diffstat (limited to 'fs/ext4/ext4_jbd2.c')
-rw-r--r-- | fs/ext4/ext4_jbd2.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/fs/ext4/ext4_jbd2.c b/fs/ext4/ext4_jbd2.c index 23425cd..6e272ef 100644 --- a/fs/ext4/ext4_jbd2.c +++ b/fs/ext4/ext4_jbd2.c @@ -134,6 +134,11 @@ int __ext4_handle_dirty_metadata(const char *where, unsigned int line, if (inode && inode_needs_sync(inode)) { sync_dirty_buffer(bh); if (buffer_req(bh) && !buffer_uptodate(bh)) { + struct ext4_super_block *es; + + es = EXT4_SB(inode->i_sb)->s_es; + es->s_last_error_block = + cpu_to_le64(bh->b_blocknr); ext4_error_inode(inode, where, line, bh->b_blocknr, "IO error syncing itable block"); |