]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
ext4: note the error in ext4_end_bio()
authorMatthew Wilcox <willy@linux.intel.com>
Mon, 7 Apr 2014 14:54:20 +0000 (10:54 -0400)
committerJiri Slaby <jslaby@suse.cz>
Thu, 15 May 2014 07:55:42 +0000 (09:55 +0200)
commit 9503c67c93ed0b95ba62d12d1fd09da6245dbdd6 upstream.

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>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
fs/ext4/page-io.c

index d7d0c7b46ed40feec818701641fce792569dcec9..02e94ef1489b33934f270dc0f8e2fefc6104c808 100644 (file)
@@ -307,13 +307,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) {