summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Wilcox2014-04-07 16:54:20 +0200
committerTheodore Ts'o2014-04-07 16:54:20 +0200
commit9503c67c93ed0b95ba62d12d1fd09da6245dbdd6 (patch)
treedb9fa13988627ad20696cd57228e359bc75f2936
parentext4: initialize multi-block allocator before checking block descriptors (diff)
downloadkernel-qcow2-linux-9503c67c93ed0b95ba62d12d1fd09da6245dbdd6.tar.gz
kernel-qcow2-linux-9503c67c93ed0b95ba62d12d1fd09da6245dbdd6.tar.xz
kernel-qcow2-linux-9503c67c93ed0b95ba62d12d1fd09da6245dbdd6.zip
ext4: note the error in ext4_end_bio()
ext4_end_bio() currently throws away the error that it receives. Chances are this is part of a spate of errors, one of which will end up getting the error returned to userspace somehow, but we shouldn't take that risk. Also print out the errno to aid in debug. Signed-off-by: Matthew Wilcox <matthew.r.wilcox@intel.com> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu> Reviewed-by: Jan Kara <jack@suse.cz> Cc: stable@vger.kernel.org
-rw-r--r--fs/ext4/page-io.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/fs/ext4/page-io.c b/fs/ext4/page-io.c
index ab95508e3d40..c18d95b50540 100644
--- a/fs/ext4/page-io.c
+++ b/fs/ext4/page-io.c
@@ -308,13 +308,14 @@ static void ext4_end_bio(struct bio *bio, int error)
if (error) {
struct inode *inode = io_end->inode;
- ext4_warning(inode->i_sb, "I/O error writing to inode %lu "
+ ext4_warning(inode->i_sb, "I/O error %d writing to inode %lu "
"(offset %llu size %ld starting block %llu)",
- inode->i_ino,
+ error, inode->i_ino,
(unsigned long long) io_end->offset,
(long) io_end->size,
(unsigned long long)
bi_sector >> (inode->i_blkbits - 9));
+ mapping_set_error(inode->i_mapping, error);
}
if (io_end->flag & EXT4_IO_END_UNWRITTEN) {