aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ext4/page-io.c
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2017-06-03 03:38:06 -0400
committerJens Axboe <axboe@fb.com>2017-06-09 11:27:32 -0400
commit4e4cbee93d56137ebff722be022cae5f70ef84fb (patch)
tree4fa7345155599fc6bdd653fca8c5224ddf90a5be /fs/ext4/page-io.c
parentfc17b6534eb8395f0b3133eb31d87deec32c642b (diff)
block: switch bios to blk_status_t
Replace bi_error with a new bi_status to allow for a clear conversion. Note that device mapper overloaded bi_error with a private value, which we'll have to keep arround at least for now and thus propagate to a proper blk_status_t value. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Jens Axboe <axboe@fb.com>
Diffstat (limited to 'fs/ext4/page-io.c')
-rw-r--r--fs/ext4/page-io.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/fs/ext4/page-io.c b/fs/ext4/page-io.c
index 1a82138ba739..930ca0fc9a0f 100644
--- a/fs/ext4/page-io.c
+++ b/fs/ext4/page-io.c
@@ -85,7 +85,7 @@ static void ext4_finish_bio(struct bio *bio)
85 } 85 }
86#endif 86#endif
87 87
88 if (bio->bi_error) { 88 if (bio->bi_status) {
89 SetPageError(page); 89 SetPageError(page);
90 mapping_set_error(page->mapping, -EIO); 90 mapping_set_error(page->mapping, -EIO);
91 } 91 }
@@ -104,7 +104,7 @@ static void ext4_finish_bio(struct bio *bio)
104 continue; 104 continue;
105 } 105 }
106 clear_buffer_async_write(bh); 106 clear_buffer_async_write(bh);
107 if (bio->bi_error) 107 if (bio->bi_status)
108 buffer_io_error(bh); 108 buffer_io_error(bh);
109 } while ((bh = bh->b_this_page) != head); 109 } while ((bh = bh->b_this_page) != head);
110 bit_spin_unlock(BH_Uptodate_Lock, &head->b_state); 110 bit_spin_unlock(BH_Uptodate_Lock, &head->b_state);
@@ -303,24 +303,25 @@ static void ext4_end_bio(struct bio *bio)
303 bdevname(bio->bi_bdev, b), 303 bdevname(bio->bi_bdev, b),
304 (long long) bio->bi_iter.bi_sector, 304 (long long) bio->bi_iter.bi_sector,
305 (unsigned) bio_sectors(bio), 305 (unsigned) bio_sectors(bio),
306 bio->bi_error)) { 306 bio->bi_status)) {
307 ext4_finish_bio(bio); 307 ext4_finish_bio(bio);
308 bio_put(bio); 308 bio_put(bio);
309 return; 309 return;
310 } 310 }
311 bio->bi_end_io = NULL; 311 bio->bi_end_io = NULL;
312 312
313 if (bio->bi_error) { 313 if (bio->bi_status) {
314 struct inode *inode = io_end->inode; 314 struct inode *inode = io_end->inode;
315 315
316 ext4_warning(inode->i_sb, "I/O error %d writing to inode %lu " 316 ext4_warning(inode->i_sb, "I/O error %d writing to inode %lu "
317 "(offset %llu size %ld starting block %llu)", 317 "(offset %llu size %ld starting block %llu)",
318 bio->bi_error, inode->i_ino, 318 bio->bi_status, inode->i_ino,
319 (unsigned long long) io_end->offset, 319 (unsigned long long) io_end->offset,
320 (long) io_end->size, 320 (long) io_end->size,
321 (unsigned long long) 321 (unsigned long long)
322 bi_sector >> (inode->i_blkbits - 9)); 322 bi_sector >> (inode->i_blkbits - 9));
323 mapping_set_error(inode->i_mapping, bio->bi_error); 323 mapping_set_error(inode->i_mapping,
324 blk_status_to_errno(bio->bi_status));
324 } 325 }
325 326
326 if (io_end->flag & EXT4_IO_END_UNWRITTEN) { 327 if (io_end->flag & EXT4_IO_END_UNWRITTEN) {