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 | |
| 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')
| -rw-r--r-- | fs/ext4/page-io.c | 13 | ||||
| -rw-r--r-- | fs/ext4/readpage.c | 4 |
2 files changed, 9 insertions, 8 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) { |
diff --git a/fs/ext4/readpage.c b/fs/ext4/readpage.c index a81b829d56de..40a5497b0f60 100644 --- a/fs/ext4/readpage.c +++ b/fs/ext4/readpage.c | |||
| @@ -73,7 +73,7 @@ static void mpage_end_io(struct bio *bio) | |||
| 73 | int i; | 73 | int i; |
| 74 | 74 | ||
| 75 | if (ext4_bio_encrypted(bio)) { | 75 | if (ext4_bio_encrypted(bio)) { |
| 76 | if (bio->bi_error) { | 76 | if (bio->bi_status) { |
| 77 | fscrypt_release_ctx(bio->bi_private); | 77 | fscrypt_release_ctx(bio->bi_private); |
| 78 | } else { | 78 | } else { |
| 79 | fscrypt_decrypt_bio_pages(bio->bi_private, bio); | 79 | fscrypt_decrypt_bio_pages(bio->bi_private, bio); |
| @@ -83,7 +83,7 @@ static void mpage_end_io(struct bio *bio) | |||
| 83 | bio_for_each_segment_all(bv, bio, i) { | 83 | bio_for_each_segment_all(bv, bio, i) { |
| 84 | struct page *page = bv->bv_page; | 84 | struct page *page = bv->bv_page; |
| 85 | 85 | ||
| 86 | if (!bio->bi_error) { | 86 | if (!bio->bi_status) { |
| 87 | SetPageUptodate(page); | 87 | SetPageUptodate(page); |
| 88 | } else { | 88 | } else { |
| 89 | ClearPageUptodate(page); | 89 | ClearPageUptodate(page); |
