diff options
author | Christoph Hellwig <hch@lst.de> | 2017-06-03 03:38:06 -0400 |
---|---|---|
committer | Jens Axboe <axboe@fb.com> | 2017-06-09 11:27:32 -0400 |
commit | 4e4cbee93d56137ebff722be022cae5f70ef84fb (patch) | |
tree | 4fa7345155599fc6bdd653fca8c5224ddf90a5be /fs/ext4/page-io.c | |
parent | fc17b6534eb8395f0b3133eb31d87deec32c642b (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.c | 13 |
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) { |