ext4: don't print scary messages for allocation failures post-abort
I often get emails containing the "This should not happen!!" message, conveniently trimmed to remove things like: sd 0:0:0:0: [sda] Unhandled error code sd 0:0:0:0: [sda] Result: hostbyte=DID_OK driverbyte=DRIVER_TIMEOUT sd 0:0:0:0: [sda] CDB: Write(10): 2a 00 03 13 c9 70 00 00 28 00 end_request: I/O error, dev sda, sector 51628400 Aborting journal on device dm-0-8. EXT4-fs error (device dm-0): ext4_journal_start_sb: Detected aborted journal EXT4-fs (dm-0): Remounting filesystem read-only I don't think there is any value to the verbosity if the reason is due to a filesystem abort; it just obfuscates the root cause. Signed-off-by: Eric Sandeen <sandeen@redhat.com> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
This commit is contained in:
parent
d889dc8382
commit
e3570639c8
|
@ -2228,6 +2228,8 @@ static int mpage_da_map_blocks(struct mpage_da_data *mpd)
|
||||||
|
|
||||||
blks = ext4_map_blocks(handle, mpd->inode, &map, get_blocks_flags);
|
blks = ext4_map_blocks(handle, mpd->inode, &map, get_blocks_flags);
|
||||||
if (blks < 0) {
|
if (blks < 0) {
|
||||||
|
struct super_block *sb = mpd->inode->i_sb;
|
||||||
|
|
||||||
err = blks;
|
err = blks;
|
||||||
/*
|
/*
|
||||||
* If get block returns with error we simply
|
* If get block returns with error we simply
|
||||||
|
@ -2238,7 +2240,7 @@ static int mpage_da_map_blocks(struct mpage_da_data *mpd)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (err == -ENOSPC &&
|
if (err == -ENOSPC &&
|
||||||
ext4_count_free_blocks(mpd->inode->i_sb)) {
|
ext4_count_free_blocks(sb)) {
|
||||||
mpd->retval = err;
|
mpd->retval = err;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -2250,16 +2252,17 @@ static int mpage_da_map_blocks(struct mpage_da_data *mpd)
|
||||||
* writepage and writepages will again try to write
|
* writepage and writepages will again try to write
|
||||||
* the same.
|
* the same.
|
||||||
*/
|
*/
|
||||||
ext4_msg(mpd->inode->i_sb, KERN_CRIT,
|
if (!(EXT4_SB(sb)->s_mount_flags & EXT4_MF_FS_ABORTED)) {
|
||||||
"delayed block allocation failed for inode %lu at "
|
ext4_msg(sb, KERN_CRIT,
|
||||||
"logical offset %llu with max blocks %zd with "
|
"delayed block allocation failed for inode %lu "
|
||||||
"error %d", mpd->inode->i_ino,
|
"at logical offset %llu with max blocks %zd "
|
||||||
(unsigned long long) next,
|
"with error %d", mpd->inode->i_ino,
|
||||||
mpd->b_size >> mpd->inode->i_blkbits, err);
|
(unsigned long long) next,
|
||||||
printk(KERN_CRIT "This should not happen!! "
|
mpd->b_size >> mpd->inode->i_blkbits, err);
|
||||||
"Data will be lost\n");
|
ext4_msg(sb, KERN_CRIT,
|
||||||
if (err == -ENOSPC) {
|
"This should not happen!! Data will be lost\n");
|
||||||
ext4_print_free_blocks(mpd->inode);
|
if (err == -ENOSPC)
|
||||||
|
ext4_print_free_blocks(mpd->inode);
|
||||||
}
|
}
|
||||||
/* invalidate all the pages */
|
/* invalidate all the pages */
|
||||||
ext4_da_block_invalidatepages(mpd, next,
|
ext4_da_block_invalidatepages(mpd, next,
|
||||||
|
|
|
@ -3884,6 +3884,9 @@ static void ext4_mb_show_ac(struct ext4_allocation_context *ac)
|
||||||
struct super_block *sb = ac->ac_sb;
|
struct super_block *sb = ac->ac_sb;
|
||||||
ext4_group_t ngroups, i;
|
ext4_group_t ngroups, i;
|
||||||
|
|
||||||
|
if (EXT4_SB(sb)->s_mount_flags & EXT4_MF_FS_ABORTED)
|
||||||
|
return;
|
||||||
|
|
||||||
printk(KERN_ERR "EXT4-fs: Can't allocate:"
|
printk(KERN_ERR "EXT4-fs: Can't allocate:"
|
||||||
" Allocation context details:\n");
|
" Allocation context details:\n");
|
||||||
printk(KERN_ERR "EXT4-fs: status %d flags %d\n",
|
printk(KERN_ERR "EXT4-fs: status %d flags %d\n",
|
||||||
|
|
Loading…
Reference in New Issue