History

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.

Christoph Hellwig committed 9 years ago

Commit 4e4cbee1 parent fc17b65106 files · +625 −603Browse files

Unified · Split

106 files
  1. block/bio-integrity.c +4 −4
  2. block/bio.c +4 −4
  3. block/blk-core.c +13 −7
  4. block/blk-integrity.c +2 −2
  5. block/bounce.c +2 −2
  6. block/t10-pi.c +15 −15
  7. drivers/block/aoe/aoecmd.c +5 −5
  8. drivers/block/aoe/aoedev.c +1 −1
  9. drivers/block/drbd/drbd_actlog.c +1 −1
  10. drivers/block/drbd/drbd_bitmap.c +3 −3
  11. drivers/block/drbd/drbd_int.h +1 −1
  12. drivers/block/drbd/drbd_receiver.c +3 −3
  13. drivers/block/drbd/drbd_req.c +3 −3
  14. drivers/block/drbd/drbd_worker.c +8 −8
  15. drivers/block/floppy.c +2 −2
  16. drivers/block/pktcdvd.c +9 −9
  17. drivers/block/ps3vram.c +7 −7
  18. drivers/block/rsxx/dev.c +5 −9
  19. drivers/block/rsxx/dma.c +6 −7
  20. drivers/block/rsxx/rsxx_priv.h +1 −1
  21. drivers/block/umem.c +1 −1
  22. drivers/block/xen-blkback/blkback.c +8 −11
  23. drivers/block/xen-blkfront.c +1 −1
  24. drivers/lightnvm/pblk-core.c +2 −2
  25. drivers/lightnvm/pblk-read.c +2 −2
  26. drivers/lightnvm/pblk-write.c +1 −1
  27. drivers/lightnvm/rrpc.c +4 −4
  28. drivers/md/bcache/bcache.h +4 −3
  29. drivers/md/bcache/btree.c +3 −3
  30. drivers/md/bcache/io.c +3 −3
  31. drivers/md/bcache/journal.c +1 −1
  32. drivers/md/bcache/movinggc.c +5 −5
  33. drivers/md/bcache/request.c +14 −14
  34. drivers/md/bcache/request.h +1 −1
  35. drivers/md/bcache/super.c +3 −3
  36. drivers/md/bcache/writeback.c +2 −2
  37. drivers/md/dm-bio-prison-v1.c +2 −2
  38. drivers/md/dm-bio-prison-v1.h +1 −1
  39. drivers/md/dm-bufio.c +15 −13
  40. drivers/md/dm-cache-target.c +18 −16
  41. drivers/md/dm-crypt.c +17 −17
  42. drivers/md/dm-flakey.c +3 −2
  43. drivers/md/dm-integrity.c +9 −9
  44. drivers/md/dm-io.c +5 −5
  45. drivers/md/dm-log-writes.c +4 −3
  46. drivers/md/dm-mpath.c +8 −7
  47. drivers/md/dm-raid1.c +7 −6
  48. drivers/md/dm-rq.c +1 −1
  49. drivers/md/dm-snap.c +3 −2
  50. drivers/md/dm-stripe.c +3 −2
  51. drivers/md/dm-thin.c +32 −33
  52. drivers/md/dm-verity-target.c +5 −5
  53. drivers/md/dm.c +20 −20
  54. drivers/md/md.c +4 −4
  55. drivers/md/multipath.c +5 −5
  56. drivers/md/raid1.c +18 −18
  57. drivers/md/raid10.c +18 −18
  58. drivers/md/raid5-cache.c +2 −2
  59. drivers/md/raid5-ppl.c +1 −1
  60. drivers/md/raid5.c +11 −11
  61. drivers/nvdimm/blk.c +2 −2
  62. drivers/nvdimm/btt.c +2 −2
  63. drivers/nvdimm/pmem.c +14 −14
  64. drivers/nvme/target/io-cmd.c +2 −2
  65. drivers/target/target_core_iblock.c +5 −5
  66. fs/block_dev.c +10 −8
  67. fs/btrfs/btrfs_inode.h +2 −1
  68. fs/btrfs/check-integrity.c +2 −2
  69. fs/btrfs/compression.c +22 −22
  70. fs/btrfs/compression.h +2 −2
  71. fs/btrfs/ctree.h +3 −3
  72. fs/btrfs/disk-io.c +37 −38
  73. fs/btrfs/disk-io.h +6 −6
  74. fs/btrfs/extent_io.c +13 −10
  75. fs/btrfs/extent_io.h +3 −3
  76. fs/btrfs/file-item.c +7 −7
  77. fs/btrfs/inode.c +36 −37
  78. fs/btrfs/raid56.c +8 −8
  79. fs/btrfs/scrub.c +13 −13
  80. fs/btrfs/volumes.c +6 −5
  81. fs/buffer.c +1 −1
  82. fs/crypto/bio.c +1 −1
  83. fs/direct-io.c +4 −4
  84. fs/ext4/page-io.c +7 −6
  85. fs/ext4/readpage.c +2 −2
  86. fs/f2fs/data.c +5 −5
  87. fs/f2fs/segment.c +1 −1
  88. fs/gfs2/lops.c +4 −4
  89. fs/gfs2/meta_io.c +1 −1
  90. fs/gfs2/ops_fstype.c +2 −2
  91. fs/iomap.c +2 −2
  92. fs/jfs/jfs_logmgr.c +1 −1
  93. fs/jfs/jfs_metapage.c +2 −2
  94. fs/mpage.c +2 −1
  95. fs/nfs/blocklayout/blocklayout.c +2 −2
  96. fs/nilfs2/segbuf.c +1 −1
  97. fs/ocfs2/cluster/heartbeat.c +3 −3
  98. fs/xfs/xfs_aops.c +4 −3
  99. fs/xfs/xfs_buf.c +5 −2
  100. include/linux/bio.h +1 −1
  101. include/linux/blk_types.h +4 −1
  102. include/linux/blkdev.h +1 −1
  103. include/linux/device-mapper.h +1 −1
  104. kernel/power/swap.c +7 −7
  105. kernel/trace/blktrace.c +2 −2
  106. mm/page_io.c +2 −2
block/bio-integrity.c+4−4
@@ -221,7 +221,7 @@ static inline unsigned int bio_integrity_bytes(struct blk_integrity *bi, · 220 unmodified lines
221221 * @bio: bio to generate/verify integrity metadata for
222222 * @proc_fn: Pointer to the relevant processing function
223223 */
224−static int bio_integrity_process(struct bio *bio,
224+static blk_status_t bio_integrity_process(struct bio *bio,
225225 integrity_processing_fn *proc_fn)
226226 {
227227 struct blk_integrity *bi = bdev_get_integrity(bio->bi_bdev);
@@ -229,7 +229,7 @@ static int bio_integrity_process(struct bio *bio, · 1 unmodified line
229229 struct bvec_iter bviter;
230230 struct bio_vec bv;
231231 struct bio_integrity_payload *bip = bio_integrity(bio);
232− unsigned int ret = 0;
232+ blk_status_t ret = BLK_STS_OK;
233233 void *prot_buf = page_address(bip->bip_vec->bv_page) +
234234 bip->bip_vec->bv_offset;
235235
@@ -366,7 +366,7 @@ static void bio_integrity_verify_fn(struct work_struct *work) · 130 unmodified lines
366366 struct bio *bio = bip->bip_bio;
367367 struct blk_integrity *bi = bdev_get_integrity(bio->bi_bdev);
368368
369− bio->bi_error = bio_integrity_process(bio, bi->profile->verify_fn);
369+ bio->bi_status = bio_integrity_process(bio, bi->profile->verify_fn);
370370
371371 /* Restore original bio completion handler */
372372 bio->bi_end_io = bip->bip_end_io;
@@ -395,7 +395,7 @@ void bio_integrity_endio(struct bio *bio) · 22 unmodified lines
395395 * integrity metadata. Restore original bio end_io handler
396396 * and run it.
397397 */
398− if (bio->bi_error) {
398+ if (bio->bi_status) {
399399 bio->bi_end_io = bip->bip_end_io;
400400 bio_endio(bio);
401401
block/bio.c+4−4
@@ -309,8 +309,8 @@ static struct bio *__bio_chain_endio(struct bio *bio) · 308 unmodified lines
309309 {
310310 struct bio *parent = bio->bi_private;
311311
312− if (!parent->bi_error)
313− parent->bi_error = bio->bi_error;
312+ if (!parent->bi_status)
313+ parent->bi_status = bio->bi_status;
314314 bio_put(bio);
315315 return parent;
316316 }
@@ -918,7 +918,7 @@ static void submit_bio_wait_endio(struct bio *bio) · 601 unmodified lines
918918 {
919919 struct submit_bio_ret *ret = bio->bi_private;
920920
921− ret->error = bio->bi_error;
921+ ret->error = blk_status_to_errno(bio->bi_status);
922922 complete(&ret->event);
923923 }
924924
@@ -1818,7 +1818,7 @@ again: · 893 unmodified lines
18181818
18191819 if (bio->bi_bdev && bio_flagged(bio, BIO_TRACE_COMPLETION)) {
18201820 trace_block_bio_complete(bdev_get_queue(bio->bi_bdev),
1821− bio, bio->bi_error);
1821+ bio, bio->bi_status);
18221822 bio_clear_flag(bio, BIO_TRACE_COMPLETION);
18231823 }
18241824
block/blk-core.c+13−7
@@ -144,6 +144,9 @@ static const struct { · 143 unmodified lines
144144 [BLK_STS_PROTECTION] = { -EILSEQ, "protection" },
145145 [BLK_STS_RESOURCE] = { -ENOMEM, "kernel resource" },
146146
147+ /* device mapper special case, should not leak out: */
148+ [BLK_STS_DM_REQUEUE] = { -EREMCHG, "dm internal retry" },
149+
147150 /* everything else not covered above: */
148151 [BLK_STS_IOERR] = { -EIO, "I/O" },
149152 };
@@ -188,7 +191,7 @@ static void req_bio_endio(struct request *rq, struct bio *bio, · 38 unmodified lines
188191 unsigned int nbytes, blk_status_t error)
189192 {
190193 if (error)
191− bio->bi_error = blk_status_to_errno(error);
194+ bio->bi_status = error;
192195
193196 if (unlikely(rq->rq_flags & RQF_QUIET))
194197 bio_set_flag(bio, BIO_QUIET);
@@ -1717,7 +1720,7 @@ static blk_qc_t blk_queue_bio(struct request_queue *q, struct bio *bio) · 1522 unmodified lines
17171720 blk_queue_split(q, &bio, q->bio_split);
17181721
17191722 if (bio_integrity_enabled(bio) && bio_integrity_prep(bio)) {
1720− bio->bi_error = -EIO;
1723+ bio->bi_status = BLK_STS_IOERR;
17211724 bio_endio(bio);
17221725 return BLK_QC_T_NONE;
17231726 }
@@ -1775,7 +1778,10 @@ get_rq: · 51 unmodified lines
17751778 req = get_request(q, bio->bi_opf, bio, GFP_NOIO);
17761779 if (IS_ERR(req)) {
17771780 __wbt_done(q->rq_wb, wb_acct);
1778− bio->bi_error = PTR_ERR(req);
1781+ if (PTR_ERR(req) == -ENOMEM)
1782+ bio->bi_status = BLK_STS_RESOURCE;
1783+ else
1784+ bio->bi_status = BLK_STS_IOERR;
17791785 bio_endio(bio);
17801786 goto out_unlock;
17811787 }
@@ -1930,7 +1936,7 @@ generic_make_request_checks(struct bio *bio) · 148 unmodified lines
19301936 {
19311937 struct request_queue *q;
19321938 int nr_sectors = bio_sectors(bio);
1933− int err = -EIO;
1939+ blk_status_t status = BLK_STS_IOERR;
19341940 char b[BDEVNAME_SIZE];
19351941 struct hd_struct *part;
19361942
@@ -1973,7 +1979,7 @@ generic_make_request_checks(struct bio *bio) · 36 unmodified lines
19731979 !test_bit(QUEUE_FLAG_WC, &q->queue_flags)) {
19741980 bio->bi_opf &= ~(REQ_PREFLUSH | REQ_FUA);
19751981 if (!nr_sectors) {
1976− err = 0;
1982+ status = BLK_STS_OK;
19771983 goto end_io;
19781984 }
19791985 }
@@ -2025,9 +2031,9 @@ generic_make_request_checks(struct bio *bio) · 45 unmodified lines
20252031 return true;
20262032
20272033 not_supported:
2028− err = -EOPNOTSUPP;
2034+ status = BLK_STS_NOTSUPP;
20292035 end_io:
2030− bio->bi_error = err;
2036+ bio->bi_status = status;
20312037 bio_endio(bio);
20322038 return false;
20332039 }
block/blk-integrity.c+2−2
@@ -384,9 +384,9 @@ static struct kobj_type integrity_ktype = { · 383 unmodified lines
384384 .sysfs_ops = &integrity_ops,
385385 };
386386
387−static int blk_integrity_nop_fn(struct blk_integrity_iter *iter)
387+static blk_status_t blk_integrity_nop_fn(struct blk_integrity_iter *iter)
388388 {
389− return 0;
389+ return BLK_STS_OK;
390390 }
391391
392392 static const struct blk_integrity_profile nop_profile = {
block/bounce.c+2−2
@@ -143,7 +143,7 @@ static void bounce_end_io(struct bio *bio, mempool_t *pool) · 142 unmodified lines
143143 mempool_free(bvec->bv_page, pool);
144144 }
145145
146− bio_orig->bi_error = bio->bi_error;
146+ bio_orig->bi_status = bio->bi_status;
147147 bio_endio(bio_orig);
148148 bio_put(bio);
149149 }
@@ -163,7 +163,7 @@ static void __bounce_end_io_read(struct bio *bio, mempool_t *pool) · 13 unmodified lines
163163 {
164164 struct bio *bio_orig = bio->bi_private;
165165
166− if (!bio->bi_error)
166+ if (!bio->bi_status)
167167 copy_to_high_bio_irq(bio_orig, bio);
168168
169169 bounce_end_io(bio, pool);
block/t10-pi.c+15−15
@@ -46,8 +46,8 @@ static __be16 t10_pi_ip_fn(void *data, unsigned int len) · 45 unmodified lines
4646 * 16 bit app tag, 32 bit reference tag. Type 3 does not define the ref
4747 * tag.
4848 */
49−static int t10_pi_generate(struct blk_integrity_iter *iter, csum_fn *fn,
50− unsigned int type)
49+static blk_status_t t10_pi_generate(struct blk_integrity_iter *iter,
50+ csum_fn *fn, unsigned int type)
5151 {
5252 unsigned int i;
5353
@@ -67,11 +67,11 @@ static int t10_pi_generate(struct blk_integrity_iter *iter, csum_fn *fn, · 13 unmodified lines
6767 iter->seed++;
6868 }
6969
70− return 0;
70+ return BLK_STS_OK;
7171 }
7272
73−static int t10_pi_verify(struct blk_integrity_iter *iter, csum_fn *fn,
74− unsigned int type)
73+static blk_status_t t10_pi_verify(struct blk_integrity_iter *iter,
74+ csum_fn *fn, unsigned int type)
7575 {
7676 unsigned int i;
7777
@@ -108,7 +108,7 @@ static int t10_pi_verify(struct blk_integrity_iter *iter, csum_fn *fn, · 30 unmodified lines
108108 "(rcvd %04x, want %04x)\n", iter->disk_name,
109109 (unsigned long long)iter->seed,
110110 be16_to_cpu(pi->guard_tag), be16_to_cpu(csum));
111− return -EILSEQ;
111+ return BLK_STS_PROTECTION;
112112 }
113113
114114 next:
@@ -117,45 +117,45 @@ next: · 2 unmodified lines
117117 iter->seed++;
118118 }
119119
120− return 0;
120+ return BLK_STS_OK;
121121 }
122122
123−static int t10_pi_type1_generate_crc(struct blk_integrity_iter *iter)
123+static blk_status_t t10_pi_type1_generate_crc(struct blk_integrity_iter *iter)
124124 {
125125 return t10_pi_generate(iter, t10_pi_crc_fn, 1);
126126 }
127127
128−static int t10_pi_type1_generate_ip(struct blk_integrity_iter *iter)
128+static blk_status_t t10_pi_type1_generate_ip(struct blk_integrity_iter *iter)
129129 {
130130 return t10_pi_generate(iter, t10_pi_ip_fn, 1);
131131 }
132132
133−static int t10_pi_type1_verify_crc(struct blk_integrity_iter *iter)
133+static blk_status_t t10_pi_type1_verify_crc(struct blk_integrity_iter *iter)
134134 {
135135 return t10_pi_verify(iter, t10_pi_crc_fn, 1);
136136 }
137137
138−static int t10_pi_type1_verify_ip(struct blk_integrity_iter *iter)
138+static blk_status_t t10_pi_type1_verify_ip(struct blk_integrity_iter *iter)
139139 {
140140 return t10_pi_verify(iter, t10_pi_ip_fn, 1);
141141 }
142142
143−static int t10_pi_type3_generate_crc(struct blk_integrity_iter *iter)
143+static blk_status_t t10_pi_type3_generate_crc(struct blk_integrity_iter *iter)
144144 {
145145 return t10_pi_generate(iter, t10_pi_crc_fn, 3);
146146 }
147147
148−static int t10_pi_type3_generate_ip(struct blk_integrity_iter *iter)
148+static blk_status_t t10_pi_type3_generate_ip(struct blk_integrity_iter *iter)
149149 {
150150 return t10_pi_generate(iter, t10_pi_ip_fn, 3);
151151 }
152152
153−static int t10_pi_type3_verify_crc(struct blk_integrity_iter *iter)
153+static blk_status_t t10_pi_type3_verify_crc(struct blk_integrity_iter *iter)
154154 {
155155 return t10_pi_verify(iter, t10_pi_crc_fn, 3);
156156 }
157157
158−static int t10_pi_type3_verify_ip(struct blk_integrity_iter *iter)
158+static blk_status_t t10_pi_type3_verify_ip(struct blk_integrity_iter *iter)
159159 {
160160 return t10_pi_verify(iter, t10_pi_ip_fn, 3);
161161 }
drivers/block/aoe/aoecmd.c+5−5
@@ -1070,7 +1070,7 @@ aoe_end_request(struct aoedev *d, struct request *rq, int fastfail) · 1069 unmodified lines
10701070 d->ip.rq = NULL;
10711071 do {
10721072 bio = rq->bio;
1073− bok = !fastfail && !bio->bi_error;
1073+ bok = !fastfail && !bio->bi_status;
10741074 } while (__blk_end_request(rq, bok ? BLK_STS_OK : BLK_STS_IOERR, bio->bi_iter.bi_size));
10751075
10761076 /* cf. http://lkml.org/lkml/2006/10/31/28 */
@@ -1131,7 +1131,7 @@ ktiocomplete(struct frame *f) · 54 unmodified lines
11311131 ahout->cmdstat, ahin->cmdstat,
11321132 d->aoemajor, d->aoeminor);
11331133 noskb: if (buf)
1134− buf->bio->bi_error = -EIO;
1134+ buf->bio->bi_status = BLK_STS_IOERR;
11351135 goto out;
11361136 }
11371137
@@ -1144,7 +1144,7 @@ noskb: if (buf) · 6 unmodified lines
11441144 "aoe: runt data size in read from",
11451145 (long) d->aoemajor, d->aoeminor,
11461146 skb->len, n);
1147− buf->bio->bi_error = -EIO;
1147+ buf->bio->bi_status = BLK_STS_IOERR;
11481148 break;
11491149 }
11501150 if (n > f->iter.bi_size) {
@@ -1152,7 +1152,7 @@ noskb: if (buf) · 1 unmodified line
11521152 "aoe: too-large data size in read from",
11531153 (long) d->aoemajor, d->aoeminor,
11541154 n, f->iter.bi_size);
1155− buf->bio->bi_error = -EIO;
1155+ buf->bio->bi_status = BLK_STS_IOERR;
11561156 break;
11571157 }
11581158 bvcpy(skb, f->buf->bio, f->iter, n);
@@ -1654,7 +1654,7 @@ aoe_failbuf(struct aoedev *d, struct buf *buf) · 495 unmodified lines
16541654 if (buf == NULL)
16551655 return;
16561656 buf->iter.bi_size = 0;
1657− buf->bio->bi_error = -EIO;
1657+ buf->bio->bi_status = BLK_STS_IOERR;
16581658 if (buf->nframesout == 0)
16591659 aoe_end_buf(d, buf);
16601660 }
drivers/block/aoe/aoedev.c+1−1
@@ -170,7 +170,7 @@ aoe_failip(struct aoedev *d) · 169 unmodified lines
170170 if (rq == NULL)
171171 return;
172172 while ((bio = d->ip.nxbio)) {
173− bio->bi_error = -EIO;
173+ bio->bi_status = BLK_STS_IOERR;
174174 d->ip.nxbio = bio->bi_next;
175175 n = (unsigned long) rq->special;
176176 rq->special = (void *) --n;
drivers/block/drbd/drbd_actlog.c+1−1
@@ -178,7 +178,7 @@ static int _drbd_md_sync_page_io(struct drbd_device *device, · 177 unmodified lines
178178 else
179179 submit_bio(bio);
180180 wait_until_done_or_force_detached(device, bdev, &device->md_io.done);
181− if (!bio->bi_error)
181+ if (!bio->bi_status)
182182 err = device->md_io.error;
183183
184184 out:
drivers/block/drbd/drbd_bitmap.c+3−3
@@ -959,16 +959,16 @@ static void drbd_bm_endio(struct bio *bio) · 958 unmodified lines
959959 !bm_test_page_unchanged(b->bm_pages[idx]))
960960 drbd_warn(device, "bitmap page idx %u changed during IO!\n", idx);
961961
962− if (bio->bi_error) {
962+ if (bio->bi_status) {
963963 /* ctx error will hold the completed-last non-zero error code,
964964 * in case error codes differ. */
965− ctx->error = bio->bi_error;
965+ ctx->error = blk_status_to_errno(bio->bi_status);
966966 bm_set_page_io_err(b->bm_pages[idx]);
967967 /* Not identical to on disk version of it.
968968 * Is BM_PAGE_IO_ERROR enough? */
969969 if (__ratelimit(&drbd_ratelimit_state))
970970 drbd_err(device, "IO ERROR %d on bitmap page idx %u\n",
971− bio->bi_error, idx);
971+ bio->bi_status, idx);
972972 } else {
973973 bm_clear_page_io_err(b->bm_pages[idx]);
974974 dynamic_drbd_dbg(device, "bitmap page idx %u completed\n", idx);
drivers/block/drbd/drbd_int.h+1−1
@@ -1627,7 +1627,7 @@ static inline void drbd_generic_make_request(struct drbd_device *device, · 1626 unmodified lines
16271627 __release(local);
16281628 if (!bio->bi_bdev) {
16291629 drbd_err(device, "drbd_generic_make_request: bio->bi_bdev == NULL\n");
1630− bio->bi_error = -ENODEV;
1630+ bio->bi_status = BLK_STS_IOERR;
16311631 bio_endio(bio);
16321632 return;
16331633 }
drivers/block/drbd/drbd_receiver.c+3−3
@@ -1229,9 +1229,9 @@ void one_flush_endio(struct bio *bio) · 1228 unmodified lines
12291229 struct drbd_device *device = octx->device;
12301230 struct issue_flush_context *ctx = octx->ctx;
12311231
1232− if (bio->bi_error) {
1233− ctx->error = bio->bi_error;
1234− drbd_info(device, "local disk FLUSH FAILED with status %d\n", bio->bi_error);
1232+ if (bio->bi_status) {
1233+ ctx->error = blk_status_to_errno(bio->bi_status);
1234+ drbd_info(device, "local disk FLUSH FAILED with status %d\n", bio->bi_status);
12351235 }
12361236 kfree(octx);
12371237 bio_put(bio);
drivers/block/drbd/drbd_req.c+3−3
@@ -203,7 +203,7 @@ void start_new_tl_epoch(struct drbd_connection *connection) · 202 unmodified lines
203203 void complete_master_bio(struct drbd_device *device,
204204 struct bio_and_error *m)
205205 {
206− m->bio->bi_error = m->error;
206+ m->bio->bi_status = errno_to_blk_status(m->error);
207207 bio_endio(m->bio);
208208 dec_ap_bio(device);
209209 }
@@ -1157,7 +1157,7 @@ static void drbd_process_discard_req(struct drbd_request *req) · 947 unmodified lines
11571157
11581158 if (blkdev_issue_zeroout(bdev, req->i.sector, req->i.size >> 9,
11591159 GFP_NOIO, 0))
1160− req->private_bio->bi_error = -EIO;
1160+ req->private_bio->bi_status = BLK_STS_IOERR;
11611161 bio_endio(req->private_bio);
11621162 }
11631163
@@ -1225,7 +1225,7 @@ drbd_request_prepare(struct drbd_device *device, struct bio *bio, unsigned long · 61 unmodified lines
12251225 /* only pass the error to the upper layers.
12261226 * if user cannot handle io errors, that's not our business. */
12271227 drbd_err(device, "could not kmalloc() req\n");
1228− bio->bi_error = -ENOMEM;
1228+ bio->bi_status = BLK_STS_RESOURCE;
12291229 bio_endio(bio);
12301230 return ERR_PTR(-ENOMEM);
12311231 }
drivers/block/drbd/drbd_worker.c+8−8
@@ -63,7 +63,7 @@ void drbd_md_endio(struct bio *bio) · 62 unmodified lines
6363 struct drbd_device *device;
6464
6565 device = bio->bi_private;
66− device->md_io.error = bio->bi_error;
66+ device->md_io.error = blk_status_to_errno(bio->bi_status);
6767
6868 /* We grabbed an extra reference in _drbd_md_sync_page_io() to be able
6969 * to timeout on the lower level device, and eventually detach from it.
@@ -177,13 +177,13 @@ void drbd_peer_request_endio(struct bio *bio) · 107 unmodified lines
177177 bool is_discard = bio_op(bio) == REQ_OP_WRITE_ZEROES ||
178178 bio_op(bio) == REQ_OP_DISCARD;
179179
180− if (bio->bi_error && __ratelimit(&drbd_ratelimit_state))
180+ if (bio->bi_status && __ratelimit(&drbd_ratelimit_state))
181181 drbd_warn(device, "%s: error=%d s=%llus\n",
182182 is_write ? (is_discard ? "discard" : "write")
183− : "read", bio->bi_error,
183+ : "read", bio->bi_status,
184184 (unsigned long long)peer_req->i.sector);
185185
186− if (bio->bi_error)
186+ if (bio->bi_status)
187187 set_bit(__EE_WAS_ERROR, &peer_req->flags);
188188
189189 bio_put(bio); /* no need for the bio anymore */
@@ -243,16 +243,16 @@ void drbd_request_endio(struct bio *bio) · 53 unmodified lines
243243 if (__ratelimit(&drbd_ratelimit_state))
244244 drbd_emerg(device, "delayed completion of aborted local request; disk-timeout may be too aggressive\n");
245245
246− if (!bio->bi_error)
246+ if (!bio->bi_status)
247247 drbd_panic_after_delayed_completion_of_aborted_request(device);
248248 }
249249
250250 /* to avoid recursion in __req_mod */
251− if (unlikely(bio->bi_error)) {
251+ if (unlikely(bio->bi_status)) {
252252 switch (bio_op(bio)) {
253253 case REQ_OP_WRITE_ZEROES:
254254 case REQ_OP_DISCARD:
255− if (bio->bi_error == -EOPNOTSUPP)
255+ if (bio->bi_status == BLK_STS_NOTSUPP)
256256 what = DISCARD_COMPLETED_NOTSUPP;
257257 else
258258 what = DISCARD_COMPLETED_WITH_ERROR;
@@ -272,7 +272,7 @@ void drbd_request_endio(struct bio *bio) · 13 unmodified lines
272272 }
273273
274274 bio_put(req->private_bio);
275− req->private_bio = ERR_PTR(bio->bi_error);
275+ req->private_bio = ERR_PTR(blk_status_to_errno(bio->bi_status));
276276
277277 /* not req_mod(), we need irqsave here! */
278278 spin_lock_irqsave(&device->resource->req_lock, flags);
drivers/block/floppy.c+2−2
@@ -3780,9 +3780,9 @@ static void floppy_rb0_cb(struct bio *bio) · 3779 unmodified lines
37803780 struct rb0_cbdata *cbdata = (struct rb0_cbdata *)bio->bi_private;
37813781 int drive = cbdata->drive;
37823782
3783− if (bio->bi_error) {
3783+ if (bio->bi_status) {
37843784 pr_info("floppy: error %d while reading block 0\n",
3785− bio->bi_error);
3785+ bio->bi_status);
37863786 set_bit(FD_OPEN_SHOULD_FAIL_BIT, &UDRS->flags);
37873787 }
37883788 complete(&cbdata->complete);
drivers/block/pktcdvd.c+9−9
@@ -952,9 +952,9 @@ static void pkt_end_io_read(struct bio *bio) · 951 unmodified lines
952952
953953 pkt_dbg(2, pd, "bio=%p sec0=%llx sec=%llx err=%d\n",
954954 bio, (unsigned long long)pkt->sector,
955− (unsigned long long)bio->bi_iter.bi_sector, bio->bi_error);
955+ (unsigned long long)bio->bi_iter.bi_sector, bio->bi_status);
956956
957− if (bio->bi_error)
957+ if (bio->bi_status)
958958 atomic_inc(&pkt->io_errors);
959959 if (atomic_dec_and_test(&pkt->io_wait)) {
960960 atomic_inc(&pkt->run_sm);
@@ -969,7 +969,7 @@ static void pkt_end_io_packet_write(struct bio *bio) · 8 unmodified lines
969969 struct pktcdvd_device *pd = pkt->pd;
970970 BUG_ON(!pd);
971971
972− pkt_dbg(2, pd, "id=%d, err=%d\n", pkt->id, bio->bi_error);
972+ pkt_dbg(2, pd, "id=%d, err=%d\n", pkt->id, bio->bi_status);
973973
974974 pd->stats.pkt_ended++;
975975
@@ -1305,16 +1305,16 @@ static void pkt_start_write(struct pktcdvd_device *pd, struct packet_data *pkt) · 329 unmodified lines
13051305 pkt_queue_bio(pd, pkt->w_bio);
13061306 }
13071307
1308−static void pkt_finish_packet(struct packet_data *pkt, int error)
1308+static void pkt_finish_packet(struct packet_data *pkt, blk_status_t status)
13091309 {
13101310 struct bio *bio;
13111311
1312− if (error)
1312+ if (status)
13131313 pkt->cache_valid = 0;
13141314
13151315 /* Finish all bios corresponding to this packet */
13161316 while ((bio = bio_list_pop(&pkt->orig_bios))) {
1317− bio->bi_error = error;
1317+ bio->bi_status = status;
13181318 bio_endio(bio);
13191319 }
13201320 }
@@ -1349,7 +1349,7 @@ static void pkt_run_state_machine(struct pktcdvd_device *pd, struct packet_data · 28 unmodified lines
13491349 if (atomic_read(&pkt->io_wait) > 0)
13501350 return;
13511351
1352− if (!pkt->w_bio->bi_error) {
1352+ if (!pkt->w_bio->bi_status) {
13531353 pkt_set_state(pkt, PACKET_FINISHED_STATE);
13541354 } else {
13551355 pkt_set_state(pkt, PACKET_RECOVERY_STATE);
@@ -1366,7 +1366,7 @@ static void pkt_run_state_machine(struct pktcdvd_device *pd, struct packet_data · 10 unmodified lines
13661366 break;
13671367
13681368 case PACKET_FINISHED_STATE:
1369− pkt_finish_packet(pkt, pkt->w_bio->bi_error);
1369+ pkt_finish_packet(pkt, pkt->w_bio->bi_status);
13701370 return;
13711371
13721372 default:
@@ -2301,7 +2301,7 @@ static void pkt_end_io_read_cloned(struct bio *bio) · 928 unmodified lines
23012301 struct packet_stacked_data *psd = bio->bi_private;
23022302 struct pktcdvd_device *pd = psd->pd;
23032303
2304− psd->bio->bi_error = bio->bi_error;
2304+ psd->bio->bi_status = bio->bi_status;
23052305 bio_put(bio);
23062306 bio_endio(psd->bio);
23072307 mempool_free(psd, psd_pool);
drivers/block/ps3vram.c+7−7
@@ -428,7 +428,7 @@ static void ps3vram_cache_cleanup(struct ps3_system_bus_device *dev) · 427 unmodified lines
428428 kfree(priv->cache.tags);
429429 }
430430
431−static int ps3vram_read(struct ps3_system_bus_device *dev, loff_t from,
431+static blk_status_t ps3vram_read(struct ps3_system_bus_device *dev, loff_t from,
432432 size_t len, size_t *retlen, u_char *buf)
433433 {
434434 struct ps3vram_priv *priv = ps3_system_bus_get_drvdata(dev);
@@ -438,7 +438,7 @@ static int ps3vram_read(struct ps3_system_bus_device *dev, loff_t from, · 3 unmodified lines
438438 (unsigned int)from, len);
439439
440440 if (from >= priv->size)
441− return -EIO;
441+ return BLK_STS_IOERR;
442442
443443 if (len > priv->size - from)
444444 len = priv->size - from;
@@ -472,14 +472,14 @@ static int ps3vram_read(struct ps3_system_bus_device *dev, loff_t from, · 27 unmodified lines
472472 return 0;
473473 }
474474
475−static int ps3vram_write(struct ps3_system_bus_device *dev, loff_t to,
475+static blk_status_t ps3vram_write(struct ps3_system_bus_device *dev, loff_t to,
476476 size_t len, size_t *retlen, const u_char *buf)
477477 {
478478 struct ps3vram_priv *priv = ps3_system_bus_get_drvdata(dev);
479479 unsigned int cached, count;
480480
481481 if (to >= priv->size)
482− return -EIO;
482+ return BLK_STS_IOERR;
483483
484484 if (len > priv->size - to)
485485 len = priv->size - to;
@@ -554,7 +554,7 @@ static struct bio *ps3vram_do_bio(struct ps3_system_bus_device *dev, · 68 unmodified lines
554554 int write = bio_data_dir(bio) == WRITE;
555555 const char *op = write ? "write" : "read";
556556 loff_t offset = bio->bi_iter.bi_sector << 9;
557− int error = 0;
557+ blk_status_t error = 0;
558558 struct bio_vec bvec;
559559 struct bvec_iter iter;
560560 struct bio *next;
@@ -578,7 +578,7 @@ static struct bio *ps3vram_do_bio(struct ps3_system_bus_device *dev, · 17 unmodified lines
578578
579579 if (retlen != len) {
580580 dev_err(&dev->core, "Short %s\n", op);
581− error = -EIO;
581+ error = BLK_STS_IOERR;
582582 goto out;
583583 }
584584
@@ -593,7 +593,7 @@ out: · 8 unmodified lines
593593 next = bio_list_peek(&priv->list);
594594 spin_unlock_irq(&priv->lock);
595595
596− bio->bi_error = error;
596+ bio->bi_status = error;
597597 bio_endio(bio);
598598 return next;
599599 }
drivers/block/rsxx/dev.c+5−9
@@ -149,7 +149,7 @@ static blk_qc_t rsxx_make_request(struct request_queue *q, struct bio *bio) · 148 unmodified lines
149149 {
150150 struct rsxx_cardinfo *card = q->queuedata;
151151 struct rsxx_bio_meta *bio_meta;
152− int st = -EINVAL;
152+ blk_status_t st = BLK_STS_IOERR;
153153
154154 blk_queue_split(q, &bio, q->bio_split);
155155
@@ -161,15 +161,11 @@ static blk_qc_t rsxx_make_request(struct request_queue *q, struct bio *bio) · 5 unmodified lines
161161 if (bio_end_sector(bio) > get_capacity(card->gendisk))
162162 goto req_err;
163163
164− if (unlikely(card->halt)) {
165− st = -EFAULT;
164+ if (unlikely(card->halt))
166165 goto req_err;
167− }
168166
169− if (unlikely(card->dma_fault)) {
170− st = (-EFAULT);
167+ if (unlikely(card->dma_fault))
171168 goto req_err;
172− }
173169
174170 if (bio->bi_iter.bi_size == 0) {
175171 dev_err(CARD_TO_DEV(card), "size zero BIO!\n");
@@ -178,7 +174,7 @@ static blk_qc_t rsxx_make_request(struct request_queue *q, struct bio *bio) · 2 unmodified lines
178174
179175 bio_meta = kmem_cache_alloc(bio_meta_pool, GFP_KERNEL);
180176 if (!bio_meta) {
181− st = -ENOMEM;
177+ st = BLK_STS_RESOURCE;
182178 goto req_err;
183179 }
184180
@@ -205,7 +201,7 @@ queue_err: · 20 unmodified lines
205201 kmem_cache_free(bio_meta_pool, bio_meta);
206202 req_err:
207203 if (st)
208− bio->bi_error = st;
204+ bio->bi_status = st;
209205 bio_endio(bio);
210206 return BLK_QC_T_NONE;
211207 }
drivers/block/rsxx/dma.c+6−7
@@ -611,7 +611,7 @@ static void rsxx_schedule_done(struct work_struct *work) · 610 unmodified lines
611611 mutex_unlock(&ctrl->work_lock);
612612 }
613613
614−static int rsxx_queue_discard(struct rsxx_cardinfo *card,
614+static blk_status_t rsxx_queue_discard(struct rsxx_cardinfo *card,
615615 struct list_head *q,
616616 unsigned int laddr,
617617 rsxx_dma_cb cb,
@@ -621,7 +621,7 @@ static int rsxx_queue_discard(struct rsxx_cardinfo *card, · 3 unmodified lines
621621
622622 dma = kmem_cache_alloc(rsxx_dma_pool, GFP_KERNEL);
623623 if (!dma)
624− return -ENOMEM;
624+ return BLK_STS_RESOURCE;
625625
626626 dma->cmd = HW_CMD_BLK_DISCARD;
627627 dma->laddr = laddr;
@@ -640,7 +640,7 @@ static int rsxx_queue_discard(struct rsxx_cardinfo *card, · 12 unmodified lines
640640 return 0;
641641 }
642642
643−static int rsxx_queue_dma(struct rsxx_cardinfo *card,
643+static blk_status_t rsxx_queue_dma(struct rsxx_cardinfo *card,
644644 struct list_head *q,
645645 int dir,
646646 unsigned int dma_off,
@@ -655,7 +655,7 @@ static int rsxx_queue_dma(struct rsxx_cardinfo *card, · 8 unmodified lines
655655
656656 dma = kmem_cache_alloc(rsxx_dma_pool, GFP_KERNEL);
657657 if (!dma)
658− return -ENOMEM;
658+ return BLK_STS_RESOURCE;
659659
660660 dma->cmd = dir ? HW_CMD_BLK_WRITE : HW_CMD_BLK_READ;
661661 dma->laddr = laddr;
@@ -677,7 +677,7 @@ static int rsxx_queue_dma(struct rsxx_cardinfo *card, · 15 unmodified lines
677677 return 0;
678678 }
679679
680−int rsxx_dma_queue_bio(struct rsxx_cardinfo *card,
680+blk_status_t rsxx_dma_queue_bio(struct rsxx_cardinfo *card,
681681 struct bio *bio,
682682 atomic_t *n_dmas,
683683 rsxx_dma_cb cb,
@@ -694,7 +694,7 @@ int rsxx_dma_queue_bio(struct rsxx_cardinfo *card, · 10 unmodified lines
694694 unsigned int dma_len;
695695 int dma_cnt[RSXX_MAX_TARGETS];
696696 int tgt;
697− int st;
697+ blk_status_t st;
698698 int i;
699699
700700 addr8 = bio->bi_iter.bi_sector << 9; /* sectors are 512 bytes */
@@ -769,7 +769,6 @@ bvec_err: · 68 unmodified lines
769769 for (i = 0; i < card->n_targets; i++)
770770 rsxx_cleanup_dma_queue(&card->ctrl[i], &dma_list[i],
771771 FREE_DMA);
772−
773772 return st;
774773 }
775774
drivers/block/rsxx/rsxx_priv.h+1−1
@@ -391,7 +391,7 @@ int rsxx_dma_cancel(struct rsxx_dma_ctrl *ctrl); · 390 unmodified lines
391391 void rsxx_dma_cleanup(void);
392392 void rsxx_dma_queue_reset(struct rsxx_cardinfo *card);
393393 int rsxx_dma_configure(struct rsxx_cardinfo *card);
394−int rsxx_dma_queue_bio(struct rsxx_cardinfo *card,
394+blk_status_t rsxx_dma_queue_bio(struct rsxx_cardinfo *card,
395395 struct bio *bio,
396396 atomic_t *n_dmas,
397397 rsxx_dma_cb cb,
drivers/block/umem.c+1−1
@@ -454,7 +454,7 @@ static void process_page(unsigned long data) · 453 unmodified lines
454454 PCI_DMA_TODEVICE : PCI_DMA_FROMDEVICE);
455455 if (control & DMASCR_HARD_ERROR) {
456456 /* error */
457− bio->bi_error = -EIO;
457+ bio->bi_status = BLK_STS_IOERR;
458458 dev_printk(KERN_WARNING, &card->dev->dev,
459459 "I/O error on sector %d/%d\n",
460460 le32_to_cpu(desc->local_addr)>>9,
drivers/block/xen-blkback/blkback.c+8−11
@@ -1069,20 +1069,17 @@ static void xen_blk_drain_io(struct xen_blkif_ring *ring) · 1068 unmodified lines
10691069 atomic_set(&blkif->drain, 0);
10701070 }
10711071
1072−/*
1073− * Completion callback on the bio's. Called as bh->b_end_io()
1074− */
1075−
1076−static void __end_block_io_op(struct pending_req *pending_req, int error)
1072+static void __end_block_io_op(struct pending_req *pending_req,
1073+ blk_status_t error)
10771074 {
10781075 /* An error fails the entire request. */
1079− if ((pending_req->operation == BLKIF_OP_FLUSH_DISKCACHE) &&
1080− (error == -EOPNOTSUPP)) {
1076+ if (pending_req->operation == BLKIF_OP_FLUSH_DISKCACHE &&
1077+ error == BLK_STS_NOTSUPP) {
10811078 pr_debug("flush diskcache op failed, not supported\n");
10821079 xen_blkbk_flush_diskcache(XBT_NIL, pending_req->ring->blkif->be, 0);
10831080 pending_req->status = BLKIF_RSP_EOPNOTSUPP;
1084− } else if ((pending_req->operation == BLKIF_OP_WRITE_BARRIER) &&
1085− (error == -EOPNOTSUPP)) {
1081+ } else if (pending_req->operation == BLKIF_OP_WRITE_BARRIER &&
1082+ error == BLK_STS_NOTSUPP) {
10861083 pr_debug("write barrier op failed, not supported\n");
10871084 xen_blkbk_barrier(XBT_NIL, pending_req->ring->blkif->be, 0);
10881085 pending_req->status = BLKIF_RSP_EOPNOTSUPP;
@@ -1106,7 +1103,7 @@ static void __end_block_io_op(struct pending_req *pending_req, int error) · 17 unmodified lines
11061103 */
11071104 static void end_block_io_op(struct bio *bio)
11081105 {
1109− __end_block_io_op(bio->bi_private, bio->bi_error);
1106+ __end_block_io_op(bio->bi_private, bio->bi_status);
11101107 bio_put(bio);
11111108 }
11121109
@@ -1423,7 +1420,7 @@ static int dispatch_rw_block_io(struct xen_blkif_ring *ring, · 310 unmodified lines
14231420 for (i = 0; i < nbio; i++)
14241421 bio_put(biolist[i]);
14251422 atomic_set(&pending_req->pendcnt, 1);
1426− __end_block_io_op(pending_req, -EINVAL);
1423+ __end_block_io_op(pending_req, BLK_STS_RESOURCE);
14271424 msleep(1); /* back off a bit */
14281425 return -EIO;
14291426 }
drivers/block/xen-blkfront.c+1−1
@@ -2006,7 +2006,7 @@ static void split_bio_end(struct bio *bio) · 2005 unmodified lines
20062006
20072007 if (atomic_dec_and_test(&split_bio->pending)) {
20082008 split_bio->bio->bi_phys_segments = 0;
2009− split_bio->bio->bi_error = bio->bi_error;
2009+ split_bio->bio->bi_status = bio->bi_status;
20102010 bio_endio(split_bio->bio);
20112011 kfree(split_bio);
20122012 }
drivers/lightnvm/pblk-core.c+2−2
@@ -296,8 +296,8 @@ void pblk_flush_writer(struct pblk *pblk) · 295 unmodified lines
296296 pr_err("pblk: tear down bio failed\n");
297297 }
298298
299− if (bio->bi_error)
300− pr_err("pblk: flush sync write failed (%u)\n", bio->bi_error);
299+ if (bio->bi_status)
300+ pr_err("pblk: flush sync write failed (%u)\n", bio->bi_status);
301301
302302 bio_put(bio);
303303 }
drivers/lightnvm/pblk-read.c+2−2
@@ -114,7 +114,7 @@ static void pblk_end_io_read(struct nvm_rq *rqd) · 113 unmodified lines
114114 pblk_log_read_err(pblk, rqd);
115115 #ifdef CONFIG_NVM_DEBUG
116116 else
117− WARN_ONCE(bio->bi_error, "pblk: corrupted read error\n");
117+ WARN_ONCE(bio->bi_status, "pblk: corrupted read error\n");
118118 #endif
119119
120120 if (rqd->nr_ppas > 1)
@@ -123,7 +123,7 @@ static void pblk_end_io_read(struct nvm_rq *rqd) · 2 unmodified lines
123123 bio_put(bio);
124124 if (r_ctx->orig_bio) {
125125 #ifdef CONFIG_NVM_DEBUG
126− WARN_ONCE(r_ctx->orig_bio->bi_error,
126+ WARN_ONCE(r_ctx->orig_bio->bi_status,
127127 "pblk: corrupted read bio\n");
128128 #endif
129129 bio_endio(r_ctx->orig_bio);
drivers/lightnvm/pblk-write.c+1−1
@@ -186,7 +186,7 @@ static void pblk_end_io_write(struct nvm_rq *rqd) · 185 unmodified lines
186186 }
187187 #ifdef CONFIG_NVM_DEBUG
188188 else
189− WARN_ONCE(rqd->bio->bi_error, "pblk: corrupted write error\n");
189+ WARN_ONCE(rqd->bio->bi_status, "pblk: corrupted write error\n");
190190 #endif
191191
192192 pblk_complete_write(pblk, rqd, c_ctx);
drivers/lightnvm/rrpc.c+4−4
@@ -279,8 +279,8 @@ static void rrpc_end_sync_bio(struct bio *bio) · 278 unmodified lines
279279 {
280280 struct completion *waiting = bio->bi_private;
281281
282− if (bio->bi_error)
283− pr_err("nvm: gc request failed (%u).\n", bio->bi_error);
282+ if (bio->bi_status)
283+ pr_err("nvm: gc request failed (%u).\n", bio->bi_status);
284284
285285 complete(waiting);
286286 }
@@ -359,7 +359,7 @@ try: · 72 unmodified lines
359359 goto finished;
360360 }
361361 wait_for_completion_io(&wait);
362− if (bio->bi_error) {
362+ if (bio->bi_status) {
363363 rrpc_inflight_laddr_release(rrpc, rqd);
364364 goto finished;
365365 }
@@ -385,7 +385,7 @@ try: · 19 unmodified lines
385385 wait_for_completion_io(&wait);
386386
387387 rrpc_inflight_laddr_release(rrpc, rqd);
388− if (bio->bi_error)
388+ if (bio->bi_status)
389389 goto finished;
390390
391391 bio_reset(bio);
drivers/md/bcache/bcache.h+4−3
@@ -849,10 +849,11 @@ static inline void wake_up_allocators(struct cache_set *c) · 848 unmodified lines
849849
850850 /* Forward declarations */
851851
852−void bch_count_io_errors(struct cache *, int, const char *);
852+void bch_count_io_errors(struct cache *, blk_status_t, const char *);
853853 void bch_bbio_count_io_errors(struct cache_set *, struct bio *,
854− int, const char *);
855−void bch_bbio_endio(struct cache_set *, struct bio *, int, const char *);
854+ blk_status_t, const char *);
855+void bch_bbio_endio(struct cache_set *, struct bio *, blk_status_t,
856+ const char *);
856857 void bch_bbio_free(struct bio *, struct cache_set *);
857858 struct bio *bch_bbio_alloc(struct cache_set *);
858859
drivers/md/bcache/btree.c+3−3
@@ -307,7 +307,7 @@ static void bch_btree_node_read(struct btree *b) · 306 unmodified lines
307307 bch_submit_bbio(bio, b->c, &b->key, 0);
308308 closure_sync(&cl);
309309
310− if (bio->bi_error)
310+ if (bio->bi_status)
311311 set_btree_node_io_error(b);
312312
313313 bch_bbio_free(bio, b->c);
@@ -374,10 +374,10 @@ static void btree_node_write_endio(struct bio *bio) · 60 unmodified lines
374374 struct closure *cl = bio->bi_private;
375375 struct btree *b = container_of(cl, struct btree, io);
376376
377− if (bio->bi_error)
377+ if (bio->bi_status)
378378 set_btree_node_io_error(b);
379379
380− bch_bbio_count_io_errors(b->c, bio, bio->bi_error, "writing btree");
380+ bch_bbio_count_io_errors(b->c, bio, bio->bi_status, "writing btree");
381381 closure_put(cl);
382382 }
383383
drivers/md/bcache/io.c+3−3
@@ -50,7 +50,7 @@ void bch_submit_bbio(struct bio *bio, struct cache_set *c, · 49 unmodified lines
5050
5151 /* IO errors */
5252
53−void bch_count_io_errors(struct cache *ca, int error, const char *m)
53+void bch_count_io_errors(struct cache *ca, blk_status_t error, const char *m)
5454 {
5555 /*
5656 * The halflife of an error is:
@@ -103,7 +103,7 @@ void bch_count_io_errors(struct cache *ca, int error, const char *m) · 46 unmodified lines
103103 }
104104
105105 void bch_bbio_count_io_errors(struct cache_set *c, struct bio *bio,
106− int error, const char *m)
106+ blk_status_t error, const char *m)
107107 {
108108 struct bbio *b = container_of(bio, struct bbio, bio);
109109 struct cache *ca = PTR_CACHE(c, &b->key, 0);
@@ -132,7 +132,7 @@ void bch_bbio_count_io_errors(struct cache_set *c, struct bio *bio, · 22 unmodified lines
132132 }
133133
134134 void bch_bbio_endio(struct cache_set *c, struct bio *bio,
135− int error, const char *m)
135+ blk_status_t error, const char *m)
136136 {
137137 struct closure *cl = bio->bi_private;
138138
drivers/md/bcache/journal.c+1−1
@@ -549,7 +549,7 @@ static void journal_write_endio(struct bio *bio) · 548 unmodified lines
549549 {
550550 struct journal_write *w = bio->bi_private;
551551
552− cache_set_err_on(bio->bi_error, w->c, "journal io error");
552+ cache_set_err_on(bio->bi_status, w->c, "journal io error");
553553 closure_put(&w->c->journal.io);
554554 }
555555
drivers/md/bcache/movinggc.c+5−5
@@ -63,14 +63,14 @@ static void read_moving_endio(struct bio *bio) · 62 unmodified lines
6363 struct moving_io *io = container_of(bio->bi_private,
6464 struct moving_io, cl);
6565
66− if (bio->bi_error)
67− io->op.error = bio->bi_error;
66+ if (bio->bi_status)
67+ io->op.status = bio->bi_status;
6868 else if (!KEY_DIRTY(&b->key) &&
6969 ptr_stale(io->op.c, &b->key, 0)) {
70− io->op.error = -EINTR;
70+ io->op.status = BLK_STS_IOERR;
7171 }
7272
73− bch_bbio_endio(io->op.c, bio, bio->bi_error, "reading data to move");
73+ bch_bbio_endio(io->op.c, bio, bio->bi_status, "reading data to move");
7474 }
7575
7676 static void moving_init(struct moving_io *io)
@@ -92,7 +92,7 @@ static void write_moving(struct closure *cl) · 15 unmodified lines
9292 struct moving_io *io = container_of(cl, struct moving_io, cl);
9393 struct data_insert_op *op = &io->op;
9494
95− if (!op->error) {
95+ if (!op->status) {
9696 moving_init(io);
9797
9898 io->bio.bio.bi_iter.bi_sector = KEY_START(&io->w->key);
drivers/md/bcache/request.c+14−14
@@ -81,7 +81,7 @@ static void bch_data_insert_keys(struct closure *cl) · 80 unmodified lines
8181 if (ret == -ESRCH) {
8282 op->replace_collision = true;
8383 } else if (ret) {
84− op->error = -ENOMEM;
84+ op->status = BLK_STS_RESOURCE;
8585 op->insert_data_done = true;
8686 }
8787
@@ -178,17 +178,17 @@ static void bch_data_insert_endio(struct bio *bio) · 90 unmodified lines
178178 struct closure *cl = bio->bi_private;
179179 struct data_insert_op *op = container_of(cl, struct data_insert_op, cl);
180180
181− if (bio->bi_error) {
181+ if (bio->bi_status) {
182182 /* TODO: We could try to recover from this. */
183183 if (op->writeback)
184− op->error = bio->bi_error;
184+ op->status = bio->bi_status;
185185 else if (!op->replace)
186186 set_closure_fn(cl, bch_data_insert_error, op->wq);
187187 else
188188 set_closure_fn(cl, NULL, NULL);
189189 }
190190
191− bch_bbio_endio(op->c, bio, bio->bi_error, "writing data to cache");
191+ bch_bbio_endio(op->c, bio, bio->bi_status, "writing data to cache");
192192 }
193193
194194 static void bch_data_insert_start(struct closure *cl)
@@ -488,15 +488,15 @@ static void bch_cache_read_endio(struct bio *bio) · 293 unmodified lines
488488 * from the backing device.
489489 */
490490
491− if (bio->bi_error)
492− s->iop.error = bio->bi_error;
491+ if (bio->bi_status)
492+ s->iop.status = bio->bi_status;
493493 else if (!KEY_DIRTY(&b->key) &&
494494 ptr_stale(s->iop.c, &b->key, 0)) {
495495 atomic_long_inc(&s->iop.c->cache_read_races);
496− s->iop.error = -EINTR;
496+ s->iop.status = BLK_STS_IOERR;
497497 }
498498
499− bch_bbio_endio(s->iop.c, bio, bio->bi_error, "reading from cache");
499+ bch_bbio_endio(s->iop.c, bio, bio->bi_status, "reading from cache");
500500 }
501501
502502 /*
@@ -593,9 +593,9 @@ static void request_endio(struct bio *bio) · 90 unmodified lines
593593 {
594594 struct closure *cl = bio->bi_private;
595595
596− if (bio->bi_error) {
596+ if (bio->bi_status) {
597597 struct search *s = container_of(cl, struct search, cl);
598− s->iop.error = bio->bi_error;
598+ s->iop.status = bio->bi_status;
599599 /* Only cache read errors are recoverable */
600600 s->recoverable = false;
601601 }
@@ -611,7 +611,7 @@ static void bio_complete(struct search *s) · 9 unmodified lines
611611 &s->d->disk->part0, s->start_time);
612612
613613 trace_bcache_request_end(s->d, s->orig_bio);
614− s->orig_bio->bi_error = s->iop.error;
614+ s->orig_bio->bi_status = s->iop.status;
615615 bio_endio(s->orig_bio);
616616 s->orig_bio = NULL;
617617 }
@@ -664,7 +664,7 @@ static inline struct search *search_alloc(struct bio *bio, · 46 unmodified lines
664664 s->iop.inode = d->id;
665665 s->iop.write_point = hash_long((unsigned long) current, 16);
666666 s->iop.write_prio = 0;
667− s->iop.error = 0;
667+ s->iop.status = 0;
668668 s->iop.flags = 0;
669669 s->iop.flush_journal = op_is_flush(bio->bi_opf);
670670 s->iop.wq = bcache_wq;
@@ -707,7 +707,7 @@ static void cached_dev_read_error(struct closure *cl) · 36 unmodified lines
707707 /* Retry from the backing device: */
708708 trace_bcache_read_retry(s->orig_bio);
709709
710− s->iop.error = 0;
710+ s->iop.status = 0;
711711 do_bio_hook(s, s->orig_bio);
712712
713713 /* XXX: invalidate cache */
@@ -767,7 +767,7 @@ static void cached_dev_read_done_bh(struct closure *cl) · 53 unmodified lines
767767 !s->cache_miss, s->iop.bypass);
768768 trace_bcache_read(s->orig_bio, !s->cache_miss, s->iop.bypass);
769769
770− if (s->iop.error)
770+ if (s->iop.status)
771771 continue_at_nobarrier(cl, cached_dev_read_error, bcache_wq);
772772 else if (s->iop.bio || verify(dc, &s->bio.bio))
773773 continue_at_nobarrier(cl, cached_dev_read_done, bcache_wq);
drivers/md/bcache/request.h+1−1
@@ -10,7 +10,7 @@ struct data_insert_op { · 9 unmodified lines
1010 unsigned inode;
1111 uint16_t write_point;
1212 uint16_t write_prio;
13− short error;
13+ blk_status_t status;
1414
1515 union {
1616 uint16_t flags;
drivers/md/bcache/super.c+3−3
@@ -271,7 +271,7 @@ static void write_super_endio(struct bio *bio) · 270 unmodified lines
271271 {
272272 struct cache *ca = bio->bi_private;
273273
274− bch_count_io_errors(ca, bio->bi_error, "writing superblock");
274+ bch_count_io_errors(ca, bio->bi_status, "writing superblock");
275275 closure_put(&ca->set->sb_write);
276276 }
277277
@@ -321,7 +321,7 @@ static void uuid_endio(struct bio *bio) · 43 unmodified lines
321321 struct closure *cl = bio->bi_private;
322322 struct cache_set *c = container_of(cl, struct cache_set, uuid_write);
323323
324− cache_set_err_on(bio->bi_error, c, "accessing uuids");
324+ cache_set_err_on(bio->bi_status, c, "accessing uuids");
325325 bch_bbio_free(bio, c);
326326 closure_put(cl);
327327 }
@@ -494,7 +494,7 @@ static void prio_endio(struct bio *bio) · 166 unmodified lines
494494 {
495495 struct cache *ca = bio->bi_private;
496496
497− cache_set_err_on(bio->bi_error, ca->set, "accessing priorities");
497+ cache_set_err_on(bio->bi_status, ca->set, "accessing priorities");
498498 bch_bbio_free(bio, ca->set);
499499 closure_put(&ca->prio);
500500 }
drivers/md/bcache/writeback.c+2−2
@@ -167,7 +167,7 @@ static void dirty_endio(struct bio *bio) · 166 unmodified lines
167167 struct keybuf_key *w = bio->bi_private;
168168 struct dirty_io *io = w->private;
169169
170− if (bio->bi_error)
170+ if (bio->bi_status)
171171 SET_KEY_DIRTY(&w->key, false);
172172
173173 closure_put(&io->cl);
@@ -195,7 +195,7 @@ static void read_dirty_endio(struct bio *bio) · 21 unmodified lines
195195 struct dirty_io *io = w->private;
196196
197197 bch_count_io_errors(PTR_CACHE(io->dc->disk.c, &w->key, 0),
198− bio->bi_error, "reading dirty data from cache");
198+ bio->bi_status, "reading dirty data from cache");
199199
200200 dirty_endio(bio);
201201 }
drivers/md/dm-bio-prison-v1.c+2−2
@@ -229,7 +229,7 @@ void dm_cell_release_no_holder(struct dm_bio_prison *prison, · 228 unmodified lines
229229 EXPORT_SYMBOL_GPL(dm_cell_release_no_holder);
230230
231231 void dm_cell_error(struct dm_bio_prison *prison,
232− struct dm_bio_prison_cell *cell, int error)
232+ struct dm_bio_prison_cell *cell, blk_status_t error)
233233 {
234234 struct bio_list bios;
235235 struct bio *bio;
@@ -238,7 +238,7 @@ void dm_cell_error(struct dm_bio_prison *prison, · 2 unmodified lines
238238 dm_cell_release(prison, cell, &bios);
239239
240240 while ((bio = bio_list_pop(&bios))) {
241− bio->bi_error = error;
241+ bio->bi_status = error;
242242 bio_endio(bio);
243243 }
244244 }
drivers/md/dm-bio-prison-v1.h+1−1
@@ -91,7 +91,7 @@ void dm_cell_release_no_holder(struct dm_bio_prison *prison, · 90 unmodified lines
9191 struct dm_bio_prison_cell *cell,
9292 struct bio_list *inmates);
9393 void dm_cell_error(struct dm_bio_prison *prison,
94− struct dm_bio_prison_cell *cell, int error);
94+ struct dm_bio_prison_cell *cell, blk_status_t error);
9595
9696 /*
9797 * Visits the cell and then releases. Guarantees no new inmates are
drivers/md/dm-bufio.c+15−13
@@ -145,8 +145,8 @@ struct dm_buffer { · 144 unmodified lines
145145 enum data_mode data_mode;
146146 unsigned char list_mode; /* LIST_* */
147147 unsigned hold_count;
148− int read_error;
149− int write_error;
148+ blk_status_t read_error;
149+ blk_status_t write_error;
150150 unsigned long state;
151151 unsigned long last_accessed;
152152 struct dm_bufio_client *c;
@@ -555,7 +555,7 @@ static void dmio_complete(unsigned long error, void *context) · 402 unmodified lines
555555 {
556556 struct dm_buffer *b = context;
557557
558− b->bio.bi_error = error ? -EIO : 0;
558+ b->bio.bi_status = error ? BLK_STS_IOERR : 0;
559559 b->bio.bi_end_io(&b->bio);
560560 }
561561
@@ -588,7 +588,7 @@ static void use_dmio(struct dm_buffer *b, int rw, sector_t sector, · 26 unmodified lines
588588
589589 r = dm_io(&io_req, 1, &region, NULL);
590590 if (r) {
591− b->bio.bi_error = r;
591+ b->bio.bi_status = errno_to_blk_status(r);
592592 end_io(&b->bio);
593593 }
594594 }
@@ -596,7 +596,7 @@ static void use_dmio(struct dm_buffer *b, int rw, sector_t sector, · 1 unmodified line
596596 static void inline_endio(struct bio *bio)
597597 {
598598 bio_end_io_t *end_fn = bio->bi_private;
599− int error = bio->bi_error;
599+ blk_status_t status = bio->bi_status;
600600
601601 /*
602602 * Reset the bio to free any attached resources
@@ -604,7 +604,7 @@ static void inline_endio(struct bio *bio) · 1 unmodified line
604604 */
605605 bio_reset(bio);
606606
607− bio->bi_error = error;
607+ bio->bi_status = status;
608608 end_fn(bio);
609609 }
610610
@@ -685,11 +685,12 @@ static void write_endio(struct bio *bio) · 74 unmodified lines
685685 {
686686 struct dm_buffer *b = container_of(bio, struct dm_buffer, bio);
687687
688− b->write_error = bio->bi_error;
689− if (unlikely(bio->bi_error)) {
688+ b->write_error = bio->bi_status;
689+ if (unlikely(bio->bi_status)) {
690690 struct dm_bufio_client *c = b->c;
691− int error = bio->bi_error;
692− (void)cmpxchg(&c->async_write_error, 0, error);
691+
692+ (void)cmpxchg(&c->async_write_error, 0,
693+ blk_status_to_errno(bio->bi_status));
693694 }
694695
695696 BUG_ON(!test_bit(B_WRITING, &b->state));
@@ -1063,7 +1064,7 @@ static void read_endio(struct bio *bio) · 367 unmodified lines
10631064 {
10641065 struct dm_buffer *b = container_of(bio, struct dm_buffer, bio);
10651066
1066− b->read_error = bio->bi_error;
1067+ b->read_error = bio->bi_status;
10671068
10681069 BUG_ON(!test_bit(B_READING, &b->state));
10691070
@@ -1107,7 +1108,7 @@ static void *new_read(struct dm_bufio_client *c, sector_t block, · 37 unmodified lines
11071108 wait_on_bit_io(&b->state, B_READING, TASK_UNINTERRUPTIBLE);
11081109
11091110 if (b->read_error) {
1110− int error = b->read_error;
1111+ int error = blk_status_to_errno(b->read_error);
11111112
11121113 dm_bufio_release(b);
11131114
@@ -1257,7 +1258,8 @@ EXPORT_SYMBOL_GPL(dm_bufio_write_dirty_buffers_async); · 143 unmodified lines
12571258 */
12581259 int dm_bufio_write_dirty_buffers(struct dm_bufio_client *c)
12591260 {
1260− int a, f;
1261+ blk_status_t a;
1262+ int f;
12611263 unsigned long buffers_processed = 0;
12621264 struct dm_buffer *b, *tmp;
12631265
drivers/md/dm-cache-target.c+18−16
@@ -119,7 +119,7 @@ static void iot_io_end(struct io_tracker *iot, sector_t len) · 118 unmodified lines
119119 */
120120 struct continuation {
121121 struct work_struct ws;
122− int input;
122+ blk_status_t input;
123123 };
124124
125125 static inline void init_continuation(struct continuation *k,
@@ -145,7 +145,7 @@ struct batcher { · 19 unmodified lines
145145 /*
146146 * The operation that everyone is waiting for.
147147 */
148− int (*commit_op)(void *context);
148+ blk_status_t (*commit_op)(void *context);
149149 void *commit_context;
150150
151151 /*
@@ -171,8 +171,7 @@ struct batcher { · 19 unmodified lines
171171 static void __commit(struct work_struct *_ws)
172172 {
173173 struct batcher *b = container_of(_ws, struct batcher, commit_work);
174−
175− int r;
174+ blk_status_t r;
176175 unsigned long flags;
177176 struct list_head work_items;
178177 struct work_struct *ws, *tmp;
@@ -205,7 +204,7 @@ static void __commit(struct work_struct *_ws) · 26 unmodified lines
205204
206205 while ((bio = bio_list_pop(&bios))) {
207206 if (r) {
208− bio->bi_error = r;
207+ bio->bi_status = r;
209208 bio_endio(bio);
210209 } else
211210 b->issue_op(bio, b->issue_context);
@@ -213,7 +212,7 @@ static void __commit(struct work_struct *_ws) · 1 unmodified line
213212 }
214213
215214 static void batcher_init(struct batcher *b,
216− int (*commit_op)(void *),
215+ blk_status_t (*commit_op)(void *),
217216 void *commit_context,
218217 void (*issue_op)(struct bio *bio, void *),
219218 void *issue_context,
@@ -955,7 +954,7 @@ static void writethrough_endio(struct bio *bio) · 735 unmodified lines
955954
956955 dm_unhook_bio(&pb->hook_info, bio);
957956
958− if (bio->bi_error) {
957+ if (bio->bi_status) {
959958 bio_endio(bio);
960959 return;
961960 }
@@ -1220,7 +1219,7 @@ static void copy_complete(int read_err, unsigned long write_err, void *context) · 258 unmodified lines
12201219 struct dm_cache_migration *mg = container_of(context, struct dm_cache_migration, k);
12211220
12221221 if (read_err || write_err)
1223− mg->k.input = -EIO;
1222+ mg->k.input = BLK_STS_IOERR;
12241223
12251224 queue_continuation(mg->cache->wq, &mg->k);
12261225 }
@@ -1266,8 +1265,8 @@ static void overwrite_endio(struct bio *bio) · 39 unmodified lines
12661265
12671266 dm_unhook_bio(&pb->hook_info, bio);
12681267
1269− if (bio->bi_error)
1270− mg->k.input = bio->bi_error;
1268+ if (bio->bi_status)
1269+ mg->k.input = bio->bi_status;
12711270
12721271 queue_continuation(mg->cache->wq, &mg->k);
12731272 }
@@ -1323,8 +1322,10 @@ static void mg_complete(struct dm_cache_migration *mg, bool success) · 49 unmodified lines
13231322 if (mg->overwrite_bio) {
13241323 if (success)
13251324 force_set_dirty(cache, cblock);
1325+ else if (mg->k.input)
1326+ mg->overwrite_bio->bi_status = mg->k.input;
13261327 else
1327− mg->overwrite_bio->bi_error = (mg->k.input ? : -EIO);
1328+ mg->overwrite_bio->bi_status = BLK_STS_IOERR;
13281329 bio_endio(mg->overwrite_bio);
13291330 } else {
13301331 if (success)
@@ -1504,7 +1505,7 @@ static void mg_copy(struct work_struct *ws) · 173 unmodified lines
15041505 r = copy(mg, is_policy_promote);
15051506 if (r) {
15061507 DMERR_LIMIT("%s: migration copy failed", cache_device_name(cache));
1507− mg->k.input = -EIO;
1508+ mg->k.input = BLK_STS_IOERR;
15081509 mg_complete(mg, false);
15091510 }
15101511 }
@@ -1907,12 +1908,12 @@ static int commit(struct cache *cache, bool clean_shutdown) · 396 unmodified lines
19071908 /*
19081909 * Used by the batcher.
19091910 */
1910−static int commit_op(void *context)
1911+static blk_status_t commit_op(void *context)
19111912 {
19121913 struct cache *cache = context;
19131914
19141915 if (dm_cache_changed_this_transaction(cache->cmd))
1915− return commit(cache, false);
1916+ return errno_to_blk_status(commit(cache, false));
19161917
19171918 return 0;
19181919 }
@@ -2018,7 +2019,7 @@ static void requeue_deferred_bios(struct cache *cache) · 99 unmodified lines
20182019 bio_list_init(&cache->deferred_bios);
20192020
20202021 while ((bio = bio_list_pop(&bios))) {
2021− bio->bi_error = DM_ENDIO_REQUEUE;
2022+ bio->bi_status = BLK_STS_DM_REQUEUE;
20222023 bio_endio(bio);
20232024 }
20242025 }
@@ -2820,7 +2821,8 @@ static int cache_map(struct dm_target *ti, struct bio *bio) · 795 unmodified lines
28202821 return r;
28212822 }
28222823
2823−static int cache_end_io(struct dm_target *ti, struct bio *bio, int *error)
2824+static int cache_end_io(struct dm_target *ti, struct bio *bio,
2825+ blk_status_t *error)
28242826 {
28252827 struct cache *cache = ti->private;
28262828 unsigned long flags;
drivers/md/dm-crypt.c+17−17
@@ -71,7 +71,7 @@ struct dm_crypt_io { · 70 unmodified lines
7171 struct convert_context ctx;
7272
7373 atomic_t io_pending;
74− int error;
74+ blk_status_t error;
7575 sector_t sector;
7676
7777 struct rb_node rb_node;
@@ -1292,7 +1292,7 @@ static void crypt_free_req(struct crypt_config *cc, void *req, struct bio *base_ · 1214 unmodified lines
12921292 /*
12931293 * Encrypt / decrypt data from one bio to another one (can be the same one)
12941294 */
1295−static int crypt_convert(struct crypt_config *cc,
1295+static blk_status_t crypt_convert(struct crypt_config *cc,
12961296 struct convert_context *ctx)
12971297 {
12981298 unsigned int tag_offset = 0;
@@ -1343,13 +1343,13 @@ static int crypt_convert(struct crypt_config *cc, · 44 unmodified lines
13431343 */
13441344 case -EBADMSG:
13451345 atomic_dec(&ctx->cc_pending);
1346− return -EILSEQ;
1346+ return BLK_STS_PROTECTION;
13471347 /*
13481348 * There was an error while processing the request.
13491349 */
13501350 default:
13511351 atomic_dec(&ctx->cc_pending);
1352− return -EIO;
1352+ return BLK_STS_IOERR;
13531353 }
13541354 }
13551355
@@ -1463,7 +1463,7 @@ static void crypt_dec_pending(struct dm_crypt_io *io) · 107 unmodified lines
14631463 {
14641464 struct crypt_config *cc = io->cc;
14651465 struct bio *base_bio = io->base_bio;
1466− int error = io->error;
1466+ blk_status_t error = io->error;
14671467
14681468 if (!atomic_dec_and_test(&io->io_pending))
14691469 return;
@@ -1476,7 +1476,7 @@ static void crypt_dec_pending(struct dm_crypt_io *io) · 6 unmodified lines
14761476 else
14771477 kfree(io->integrity_metadata);
14781478
1479− base_bio->bi_error = error;
1479+ base_bio->bi_status = error;
14801480 bio_endio(base_bio);
14811481 }
14821482
@@ -1502,7 +1502,7 @@ static void crypt_endio(struct bio *clone) · 19 unmodified lines
15021502 struct dm_crypt_io *io = clone->bi_private;
15031503 struct crypt_config *cc = io->cc;
15041504 unsigned rw = bio_data_dir(clone);
1505− int error;
1505+ blk_status_t error;
15061506
15071507 /*
15081508 * free the processed pages
@@ -1510,7 +1510,7 @@ static void crypt_endio(struct bio *clone) · 1 unmodified line
15101510 if (rw == WRITE)
15111511 crypt_free_buffer_pages(cc, clone);
15121512
1513− error = clone->bi_error;
1513+ error = clone->bi_status;
15141514 bio_put(clone);
15151515
15161516 if (rw == READ && !error) {
@@ -1570,7 +1570,7 @@ static void kcryptd_io_read_work(struct work_struct *work) · 53 unmodified lines
15701570
15711571 crypt_inc_pending(io);
15721572 if (kcryptd_io_read(io, GFP_NOIO))
1573− io->error = -ENOMEM;
1573+ io->error = BLK_STS_RESOURCE;
15741574 crypt_dec_pending(io);
15751575 }
15761576
@@ -1656,7 +1656,7 @@ static void kcryptd_crypt_write_io_submit(struct dm_crypt_io *io, int async) · 79 unmodified lines
16561656 sector_t sector;
16571657 struct rb_node **rbp, *parent;
16581658
1659− if (unlikely(io->error < 0)) {
1659+ if (unlikely(io->error)) {
16601660 crypt_free_buffer_pages(cc, clone);
16611661 bio_put(clone);
16621662 crypt_dec_pending(io);
@@ -1697,7 +1697,7 @@ static void kcryptd_crypt_write_convert(struct dm_crypt_io *io) · 34 unmodified lines
16971697 struct bio *clone;
16981698 int crypt_finished;
16991699 sector_t sector = io->sector;
1700− int r;
1700+ blk_status_t r;
17011701
17021702 /*
17031703 * Prevent io from disappearing until this function completes.
@@ -1707,7 +1707,7 @@ static void kcryptd_crypt_write_convert(struct dm_crypt_io *io) · 3 unmodified lines
17071707
17081708 clone = crypt_alloc_buffer(io, io->base_bio->bi_iter.bi_size);
17091709 if (unlikely(!clone)) {
1710− io->error = -EIO;
1710+ io->error = BLK_STS_IOERR;
17111711 goto dec;
17121712 }
17131713
@@ -1718,7 +1718,7 @@ static void kcryptd_crypt_write_convert(struct dm_crypt_io *io) · 4 unmodified lines
17181718
17191719 crypt_inc_pending(io);
17201720 r = crypt_convert(cc, &io->ctx);
1721− if (r < 0)
1721+ if (r)
17221722 io->error = r;
17231723 crypt_finished = atomic_dec_and_test(&io->ctx.cc_pending);
17241724
@@ -1740,7 +1740,7 @@ static void kcryptd_crypt_read_done(struct dm_crypt_io *io) · 15 unmodified lines
17401740 static void kcryptd_crypt_read_convert(struct dm_crypt_io *io)
17411741 {
17421742 struct crypt_config *cc = io->cc;
1743− int r = 0;
1743+ blk_status_t r;
17441744
17451745 crypt_inc_pending(io);
17461746
@@ -1748,7 +1748,7 @@ static void kcryptd_crypt_read_convert(struct dm_crypt_io *io) · 1 unmodified line
17481748 io->sector);
17491749
17501750 r = crypt_convert(cc, &io->ctx);
1751− if (r < 0)
1751+ if (r)
17521752 io->error = r;
17531753
17541754 if (atomic_dec_and_test(&io->ctx.cc_pending))
@@ -1781,9 +1781,9 @@ static void kcryptd_async_done(struct crypto_async_request *async_req, · 26 unmodified lines
17811781 if (error == -EBADMSG) {
17821782 DMERR_LIMIT("INTEGRITY AEAD ERROR, sector %llu",
17831783 (unsigned long long)le64_to_cpu(*org_sector_of_dmreq(cc, dmreq)));
1784− io->error = -EILSEQ;
1784+ io->error = BLK_STS_PROTECTION;
17851785 } else if (error < 0)
1786− io->error = -EIO;
1786+ io->error = BLK_STS_IOERR;
17871787
17881788 crypt_free_req(cc, req_of_dmreq(cc, dmreq), io->base_bio);
17891789
drivers/md/dm-flakey.c+3−2
@@ -358,7 +358,8 @@ map_bio: · 357 unmodified lines
358358 return DM_MAPIO_REMAPPED;
359359 }
360360
361−static int flakey_end_io(struct dm_target *ti, struct bio *bio, int *error)
361+static int flakey_end_io(struct dm_target *ti, struct bio *bio,
362+ blk_status_t *error)
362363 {
363364 struct flakey_c *fc = ti->private;
364365 struct per_bio_data *pb = dm_per_bio_data(bio, sizeof(struct per_bio_data));
@@ -377,7 +378,7 @@ static int flakey_end_io(struct dm_target *ti, struct bio *bio, int *error) · 12 unmodified lines
377378 * Error read during the down_interval if drop_writes
378379 * and error_writes were not configured.
379380 */
380− *error = -EIO;
381+ *error = BLK_STS_IOERR;
381382 }
382383 }
383384
drivers/md/dm-integrity.c+9−9
@@ -246,7 +246,7 @@ struct dm_integrity_io { · 245 unmodified lines
246246 unsigned metadata_offset;
247247
248248 atomic_t in_flight;
249− int bi_error;
249+ blk_status_t bi_status;
250250
251251 struct completion *completion;
252252
@@ -1114,8 +1114,8 @@ static void submit_flush_bio(struct dm_integrity_c *ic, struct dm_integrity_io * · 861 unmodified lines
11141114 static void do_endio(struct dm_integrity_c *ic, struct bio *bio)
11151115 {
11161116 int r = dm_integrity_failed(ic);
1117− if (unlikely(r) && !bio->bi_error)
1118− bio->bi_error = r;
1117+ if (unlikely(r) && !bio->bi_status)
1118+ bio->bi_status = errno_to_blk_status(r);
11191119 bio_endio(bio);
11201120 }
11211121
@@ -1123,7 +1123,7 @@ static void do_endio_flush(struct dm_integrity_c *ic, struct dm_integrity_io *di · 1 unmodified line
11231123 {
11241124 struct bio *bio = dm_bio_from_per_bio_data(dio, sizeof(struct dm_integrity_io));
11251125
1126− if (unlikely(dio->fua) && likely(!bio->bi_error) && likely(!dm_integrity_failed(ic)))
1126+ if (unlikely(dio->fua) && likely(!bio->bi_status) && likely(!dm_integrity_failed(ic)))
11271127 submit_flush_bio(ic, dio);
11281128 else
11291129 do_endio(ic, bio);
@@ -1142,9 +1142,9 @@ static void dec_in_flight(struct dm_integrity_io *dio) · 12 unmodified lines
11421142
11431143 bio = dm_bio_from_per_bio_data(dio, sizeof(struct dm_integrity_io));
11441144
1145− if (unlikely(dio->bi_error) && !bio->bi_error)
1146− bio->bi_error = dio->bi_error;
1147− if (likely(!bio->bi_error) && unlikely(bio_sectors(bio) != dio->range.n_sectors)) {
1145+ if (unlikely(dio->bi_status) && !bio->bi_status)
1146+ bio->bi_status = dio->bi_status;
1147+ if (likely(!bio->bi_status) && unlikely(bio_sectors(bio) != dio->range.n_sectors)) {
11481148 dio->range.logical_sector += dio->range.n_sectors;
11491149 bio_advance(bio, dio->range.n_sectors << SECTOR_SHIFT);
11501150 INIT_WORK(&dio->work, integrity_bio_wait);
@@ -1318,7 +1318,7 @@ skip_io: · 167 unmodified lines
13181318 dec_in_flight(dio);
13191319 return;
13201320 error:
1321− dio->bi_error = r;
1321+ dio->bi_status = errno_to_blk_status(r);
13221322 dec_in_flight(dio);
13231323 }
13241324
@@ -1331,7 +1331,7 @@ static int dm_integrity_map(struct dm_target *ti, struct bio *bio) · 6 unmodified lines
13311331 sector_t area, offset;
13321332
13331333 dio->ic = ic;
1334− dio->bi_error = 0;
1334+ dio->bi_status = 0;
13351335
13361336 if (unlikely(bio->bi_opf & REQ_PREFLUSH)) {
13371337 submit_flush_bio(ic, dio);
drivers/md/dm-io.c+5−5
@@ -124,7 +124,7 @@ static void complete_io(struct io *io) · 123 unmodified lines
124124 fn(error_bits, context);
125125 }
126126
127−static void dec_count(struct io *io, unsigned int region, int error)
127+static void dec_count(struct io *io, unsigned int region, blk_status_t error)
128128 {
129129 if (error)
130130 set_bit(region, &io->error_bits);
@@ -137,9 +137,9 @@ static void endio(struct bio *bio) · 6 unmodified lines
137137 {
138138 struct io *io;
139139 unsigned region;
140− int error;
140+ blk_status_t error;
141141
142− if (bio->bi_error && bio_data_dir(bio) == READ)
142+ if (bio->bi_status && bio_data_dir(bio) == READ)
143143 zero_fill_bio(bio);
144144
145145 /*
@@ -147,7 +147,7 @@ static void endio(struct bio *bio) · 1 unmodified line
147147 */
148148 retrieve_io_and_region_from_bio(bio, &io, &region);
149149
150− error = bio->bi_error;
150+ error = bio->bi_status;
151151 bio_put(bio);
152152
153153 dec_count(io, region, error);
@@ -319,7 +319,7 @@ static void do_region(int op, int op_flags, unsigned region, · 165 unmodified lines
319319 if ((op == REQ_OP_DISCARD || op == REQ_OP_WRITE_ZEROES ||
320320 op == REQ_OP_WRITE_SAME) &&
321321 special_cmd_max_sectors == 0) {
322− dec_count(io, region, -EOPNOTSUPP);
322+ dec_count(io, region, BLK_STS_NOTSUPP);
323323 return;
324324 }
325325
drivers/md/dm-log-writes.c+4−3
@@ -150,10 +150,10 @@ static void log_end_io(struct bio *bio) · 149 unmodified lines
150150 {
151151 struct log_writes_c *lc = bio->bi_private;
152152
153− if (bio->bi_error) {
153+ if (bio->bi_status) {
154154 unsigned long flags;
155155
156− DMERR("Error writing log block, error=%d", bio->bi_error);
156+ DMERR("Error writing log block, error=%d", bio->bi_status);
157157 spin_lock_irqsave(&lc->blocks_lock, flags);
158158 lc->logging_enabled = false;
159159 spin_unlock_irqrestore(&lc->blocks_lock, flags);
@@ -664,7 +664,8 @@ map_bio: · 504 unmodified lines
664664 return DM_MAPIO_REMAPPED;
665665 }
666666
667−static int normal_end_io(struct dm_target *ti, struct bio *bio, int *error)
667+static int normal_end_io(struct dm_target *ti, struct bio *bio,
668+ blk_status_t *error)
668669 {
669670 struct log_writes_c *lc = ti->private;
670671 struct per_bio_data *pb = dm_per_bio_data(bio, sizeof(struct per_bio_data));
drivers/md/dm-mpath.c+8−7
@@ -565,7 +565,7 @@ static int __multipath_map_bio(struct multipath *m, struct bio *bio, struct dm_m · 564 unmodified lines
565565 mpio->pgpath = pgpath;
566566 mpio->nr_bytes = nr_bytes;
567567
568− bio->bi_error = 0;
568+ bio->bi_status = 0;
569569 bio->bi_bdev = pgpath->path.dev->bdev;
570570 bio->bi_opf |= REQ_FAILFAST_TRANSPORT;
571571
@@ -623,10 +623,10 @@ static void process_queued_bios(struct work_struct *work) · 51 unmodified lines
623623 r = __multipath_map_bio(m, bio, get_mpio_from_bio(bio));
624624 switch (r) {
625625 case DM_MAPIO_KILL:
626− r = -EIO;
627− /*FALLTHRU*/
626+ bio->bi_status = BLK_STS_IOERR;
627+ bio_endio(bio);
628628 case DM_MAPIO_REQUEUE:
629− bio->bi_error = r;
629+ bio->bi_status = BLK_STS_DM_REQUEUE;
630630 bio_endio(bio);
631631 break;
632632 case DM_MAPIO_REMAPPED:
@@ -1510,7 +1510,8 @@ static int multipath_end_io(struct dm_target *ti, struct request *clone, · 877 unmodified lines
15101510 return r;
15111511 }
15121512
1513−static int multipath_end_io_bio(struct dm_target *ti, struct bio *clone, int *error)
1513+static int multipath_end_io_bio(struct dm_target *ti, struct bio *clone,
1514+ blk_status_t *error)
15141515 {
15151516 struct multipath *m = ti->private;
15161517 struct dm_mpath_io *mpio = get_mpio_from_bio(clone);
@@ -1518,7 +1519,7 @@ static int multipath_end_io_bio(struct dm_target *ti, struct bio *clone, int *er · 1 unmodified line
15181519 unsigned long flags;
15191520 int r = DM_ENDIO_DONE;
15201521
1521− if (!*error || noretry_error(errno_to_blk_status(*error)))
1522+ if (!*error || noretry_error(*error))
15221523 goto done;
15231524
15241525 if (pgpath)
@@ -1527,7 +1528,7 @@ static int multipath_end_io_bio(struct dm_target *ti, struct bio *clone, int *er · 2 unmodified lines
15271528 if (atomic_read(&m->nr_valid_paths) == 0 &&
15281529 !test_bit(MPATHF_QUEUE_IF_NO_PATH, &m->flags)) {
15291530 dm_report_EIO(m);
1530− *error = -EIO;
1531+ *error = BLK_STS_IOERR;
15311532 goto done;
15321533 }
15331534
drivers/md/dm-raid1.c+7−6
@@ -490,9 +490,9 @@ static void hold_bio(struct mirror_set *ms, struct bio *bio) · 489 unmodified lines
490490 * If device is suspended, complete the bio.
491491 */
492492 if (dm_noflush_suspending(ms->ti))
493− bio->bi_error = DM_ENDIO_REQUEUE;
493+ bio->bi_status = BLK_STS_DM_REQUEUE;
494494 else
495− bio->bi_error = -EIO;
495+ bio->bi_status = BLK_STS_IOERR;
496496
497497 bio_endio(bio);
498498 return;
@@ -626,7 +626,7 @@ static void write_callback(unsigned long error, void *context) · 127 unmodified lines
626626 * degrade the array.
627627 */
628628 if (bio_op(bio) == REQ_OP_DISCARD) {
629− bio->bi_error = -EOPNOTSUPP;
629+ bio->bi_status = BLK_STS_NOTSUPP;
630630 bio_endio(bio);
631631 return;
632632 }
@@ -1236,7 +1236,8 @@ static int mirror_map(struct dm_target *ti, struct bio *bio) · 603 unmodified lines
12361236 return DM_MAPIO_REMAPPED;
12371237 }
12381238
1239−static int mirror_end_io(struct dm_target *ti, struct bio *bio, int *error)
1239+static int mirror_end_io(struct dm_target *ti, struct bio *bio,
1240+ blk_status_t *error)
12401241 {
12411242 int rw = bio_data_dir(bio);
12421243 struct mirror_set *ms = (struct mirror_set *) ti->private;
@@ -1255,7 +1256,7 @@ static int mirror_end_io(struct dm_target *ti, struct bio *bio, int *error) · 12 unmodified lines
12551256 return DM_ENDIO_DONE;
12561257 }
12571258
1258− if (*error == -EOPNOTSUPP)
1259+ if (*error == BLK_STS_NOTSUPP)
12591260 return DM_ENDIO_DONE;
12601261
12611262 if (bio->bi_opf & REQ_RAHEAD)
@@ -1277,7 +1278,7 @@ static int mirror_end_io(struct dm_target *ti, struct bio *bio, int *error) · 15 unmodified lines
12771278 bd = &bio_record->details;
12781279
12791280 dm_bio_restore(bd, bio);
1280− bio->bi_error = 0;
1281+ bio->bi_status = 0;
12811282
12821283 queue_bio(ms, bio, rw);
12831284 return DM_ENDIO_INCOMPLETE;
drivers/md/dm-rq.c+1−1
@@ -119,7 +119,7 @@ static void end_clone_bio(struct bio *clone) · 118 unmodified lines
119119 struct dm_rq_target_io *tio = info->tio;
120120 struct bio *bio = info->orig;
121121 unsigned int nr_bytes = info->orig->bi_iter.bi_size;
122− blk_status_t error = errno_to_blk_status(clone->bi_error);
122+ blk_status_t error = clone->bi_status;
123123
124124 bio_put(clone);
125125
drivers/md/dm-snap.c+3−2
@@ -1590,7 +1590,7 @@ static void full_bio_end_io(struct bio *bio) · 1589 unmodified lines
15901590 {
15911591 void *callback_data = bio->bi_private;
15921592
1593− dm_kcopyd_do_callback(callback_data, 0, bio->bi_error ? 1 : 0);
1593+ dm_kcopyd_do_callback(callback_data, 0, bio->bi_status ? 1 : 0);
15941594 }
15951595
15961596 static void start_full_bio(struct dm_snap_pending_exception *pe,
@@ -1851,7 +1851,8 @@ out_unlock: · 254 unmodified lines
18511851 return r;
18521852 }
18531853
1854−static int snapshot_end_io(struct dm_target *ti, struct bio *bio, int *error)
1854+static int snapshot_end_io(struct dm_target *ti, struct bio *bio,
1855+ blk_status_t *error)
18551856 {
18561857 struct dm_snapshot *s = ti->private;
18571858
drivers/md/dm-stripe.c+3−2
@@ -375,7 +375,8 @@ static void stripe_status(struct dm_target *ti, status_type_t type, · 374 unmodified lines
375375 }
376376 }
377377
378−static int stripe_end_io(struct dm_target *ti, struct bio *bio, int *error)
378+static int stripe_end_io(struct dm_target *ti, struct bio *bio,
379+ blk_status_t *error)
379380 {
380381 unsigned i;
381382 char major_minor[16];
@@ -387,7 +388,7 @@ static int stripe_end_io(struct dm_target *ti, struct bio *bio, int *error) · 5 unmodified lines
387388 if (bio->bi_opf & REQ_RAHEAD)
388389 return DM_ENDIO_DONE;
389390
390− if (*error == -EOPNOTSUPP)
391+ if (*error == BLK_STS_NOTSUPP)
391392 return DM_ENDIO_DONE;
392393
393394 memset(major_minor, 0, sizeof(major_minor));
drivers/md/dm-thin.c+32−33
@@ -383,8 +383,8 @@ static void end_discard(struct discard_op *op, int r) · 382 unmodified lines
383383 * Even if r is set, there could be sub discards in flight that we
384384 * need to wait for.
385385 */
386− if (r && !op->parent_bio->bi_error)
387− op->parent_bio->bi_error = r;
386+ if (r && !op->parent_bio->bi_status)
387+ op->parent_bio->bi_status = errno_to_blk_status(r);
388388 bio_endio(op->parent_bio);
389389 }
390390
@@ -450,22 +450,20 @@ static void cell_release_no_holder(struct pool *pool, · 59 unmodified lines
450450 }
451451
452452 static void cell_error_with_code(struct pool *pool,
453− struct dm_bio_prison_cell *cell, int error_code)
453+ struct dm_bio_prison_cell *cell, blk_status_t error_code)
454454 {
455455 dm_cell_error(pool->prison, cell, error_code);
456456 dm_bio_prison_free_cell(pool->prison, cell);
457457 }
458458
459−static int get_pool_io_error_code(struct pool *pool)
459+static blk_status_t get_pool_io_error_code(struct pool *pool)
460460 {
461− return pool->out_of_data_space ? -ENOSPC : -EIO;
461+ return pool->out_of_data_space ? BLK_STS_NOSPC : BLK_STS_IOERR;
462462 }
463463
464464 static void cell_error(struct pool *pool, struct dm_bio_prison_cell *cell)
465465 {
466− int error = get_pool_io_error_code(pool);
467−
468− cell_error_with_code(pool, cell, error);
466+ cell_error_with_code(pool, cell, get_pool_io_error_code(pool));
469467 }
470468
471469 static void cell_success(struct pool *pool, struct dm_bio_prison_cell *cell)
@@ -475,7 +473,7 @@ static void cell_success(struct pool *pool, struct dm_bio_prison_cell *cell) · 3 unmodified lines
475473
476474 static void cell_requeue(struct pool *pool, struct dm_bio_prison_cell *cell)
477475 {
478− cell_error_with_code(pool, cell, DM_ENDIO_REQUEUE);
476+ cell_error_with_code(pool, cell, BLK_STS_DM_REQUEUE);
479477 }
480478
481479 /*----------------------------------------------------------------*/
@@ -555,17 +553,18 @@ static void __merge_bio_list(struct bio_list *bios, struct bio_list *master) · 73 unmodified lines
555553 bio_list_init(master);
556554 }
557555
558−static void error_bio_list(struct bio_list *bios, int error)
556+static void error_bio_list(struct bio_list *bios, blk_status_t error)
559557 {
560558 struct bio *bio;
561559
562560 while ((bio = bio_list_pop(bios))) {
563− bio->bi_error = error;
561+ bio->bi_status = error;
564562 bio_endio(bio);
565563 }
566564 }
567565
568−static void error_thin_bio_list(struct thin_c *tc, struct bio_list *master, int error)
566+static void error_thin_bio_list(struct thin_c *tc, struct bio_list *master,
567+ blk_status_t error)
569568 {
570569 struct bio_list bios;
571570 unsigned long flags;
@@ -608,11 +607,11 @@ static void requeue_io(struct thin_c *tc) · 36 unmodified lines
608607 __merge_bio_list(&bios, &tc->retry_on_resume_list);
609608 spin_unlock_irqrestore(&tc->lock, flags);
610609
611− error_bio_list(&bios, DM_ENDIO_REQUEUE);
610+ error_bio_list(&bios, BLK_STS_DM_REQUEUE);
612611 requeue_deferred_cells(tc);
613612 }
614613
615−static void error_retry_list_with_code(struct pool *pool, int error)
614+static void error_retry_list_with_code(struct pool *pool, blk_status_t error)
616615 {
617616 struct thin_c *tc;
618617
@@ -624,9 +623,7 @@ static void error_retry_list_with_code(struct pool *pool, int error) · 5 unmodified lines
624623
625624 static void error_retry_list(struct pool *pool)
626625 {
627− int error = get_pool_io_error_code(pool);
628−
629− error_retry_list_with_code(pool, error);
626+ error_retry_list_with_code(pool, get_pool_io_error_code(pool));
630627 }
631628
632629 /*
@@ -774,7 +771,7 @@ struct dm_thin_new_mapping { · 141 unmodified lines
774771 */
775772 atomic_t prepare_actions;
776773
777− int err;
774+ blk_status_t status;
778775 struct thin_c *tc;
779776 dm_block_t virt_begin, virt_end;
780777 dm_block_t data_block;
@@ -814,7 +811,7 @@ static void copy_complete(int read_err, unsigned long write_err, void *context) · 33 unmodified lines
814811 {
815812 struct dm_thin_new_mapping *m = context;
816813
817− m->err = read_err || write_err ? -EIO : 0;
814+ m->status = read_err || write_err ? BLK_STS_IOERR : 0;
818815 complete_mapping_preparation(m);
819816 }
820817
@@ -825,7 +822,7 @@ static void overwrite_endio(struct bio *bio) · 4 unmodified lines
825822
826823 bio->bi_end_io = m->saved_bi_end_io;
827824
828− m->err = bio->bi_error;
825+ m->status = bio->bi_status;
829826 complete_mapping_preparation(m);
830827 }
831828
@@ -925,7 +922,7 @@ static void process_prepared_mapping(struct dm_thin_new_mapping *m) · 93 unmodified lines
925922 struct bio *bio = m->bio;
926923 int r;
927924
928− if (m->err) {
925+ if (m->status) {
929926 cell_error(pool, m->cell);
930927 goto out;
931928 }
@@ -1495,7 +1492,7 @@ static void retry_on_resume(struct bio *bio) · 563 unmodified lines
14951492 spin_unlock_irqrestore(&tc->lock, flags);
14961493 }
14971494
1498−static int should_error_unserviceable_bio(struct pool *pool)
1495+static blk_status_t should_error_unserviceable_bio(struct pool *pool)
14991496 {
15001497 enum pool_mode m = get_pool_mode(pool);
15011498
@@ -1503,27 +1500,27 @@ static int should_error_unserviceable_bio(struct pool *pool) · 1 unmodified line
15031500 case PM_WRITE:
15041501 /* Shouldn't get here */
15051502 DMERR_LIMIT("bio unserviceable, yet pool is in PM_WRITE mode");
1506− return -EIO;
1503+ return BLK_STS_IOERR;
15071504
15081505 case PM_OUT_OF_DATA_SPACE:
1509− return pool->pf.error_if_no_space ? -ENOSPC : 0;
1506+ return pool->pf.error_if_no_space ? BLK_STS_NOSPC : 0;
15101507
15111508 case PM_READ_ONLY:
15121509 case PM_FAIL:
1513− return -EIO;
1510+ return BLK_STS_IOERR;
15141511 default:
15151512 /* Shouldn't get here */
15161513 DMERR_LIMIT("bio unserviceable, yet pool has an unknown mode");
1517− return -EIO;
1514+ return BLK_STS_IOERR;
15181515 }
15191516 }
15201517
15211518 static void handle_unserviceable_bio(struct pool *pool, struct bio *bio)
15221519 {
1523− int error = should_error_unserviceable_bio(pool);
1520+ blk_status_t error = should_error_unserviceable_bio(pool);
15241521
15251522 if (error) {
1526− bio->bi_error = error;
1523+ bio->bi_status = error;
15271524 bio_endio(bio);
15281525 } else
15291526 retry_on_resume(bio);
@@ -1533,7 +1530,7 @@ static void retry_bios_on_resume(struct pool *pool, struct dm_bio_prison_cell *c · 3 unmodified lines
15331530 {
15341531 struct bio *bio;
15351532 struct bio_list bios;
1536− int error;
1533+ blk_status_t error;
15371534
15381535 error = should_error_unserviceable_bio(pool);
15391536 if (error) {
@@ -2071,7 +2068,8 @@ static void process_thin_deferred_bios(struct thin_c *tc) · 531 unmodified lines
20712068 unsigned count = 0;
20722069
20732070 if (tc->requeue_mode) {
2074− error_thin_bio_list(tc, &tc->deferred_bio_list, DM_ENDIO_REQUEUE);
2071+ error_thin_bio_list(tc, &tc->deferred_bio_list,
2072+ BLK_STS_DM_REQUEUE);
20752073 return;
20762074 }
20772075
@@ -2322,7 +2320,7 @@ static void do_no_space_timeout(struct work_struct *ws) · 244 unmodified lines
23222320 if (get_pool_mode(pool) == PM_OUT_OF_DATA_SPACE && !pool->pf.error_if_no_space) {
23232321 pool->pf.error_if_no_space = true;
23242322 notify_of_pool_mode_change_to_oods(pool);
2325− error_retry_list_with_code(pool, -ENOSPC);
2323+ error_retry_list_with_code(pool, BLK_STS_NOSPC);
23262324 }
23272325 }
23282326
@@ -2624,7 +2622,7 @@ static int thin_bio_map(struct dm_target *ti, struct bio *bio) · 295 unmodified lines
26242622 thin_hook_bio(tc, bio);
26252623
26262624 if (tc->requeue_mode) {
2627− bio->bi_error = DM_ENDIO_REQUEUE;
2625+ bio->bi_status = BLK_STS_DM_REQUEUE;
26282626 bio_endio(bio);
26292627 return DM_MAPIO_SUBMITTED;
26302628 }
@@ -4177,7 +4175,8 @@ static int thin_map(struct dm_target *ti, struct bio *bio) · 1546 unmodified lines
41774175 return thin_bio_map(ti, bio);
41784176 }
41794177
4180−static int thin_endio(struct dm_target *ti, struct bio *bio, int *err)
4178+static int thin_endio(struct dm_target *ti, struct bio *bio,
4179+ blk_status_t *err)
41814180 {
41824181 unsigned long flags;
41834182 struct dm_thin_endio_hook *h = dm_per_bio_data(bio, sizeof(struct dm_thin_endio_hook));
drivers/md/dm-verity-target.c+5−5
@@ -538,13 +538,13 @@ static int verity_verify_io(struct dm_verity_io *io) · 537 unmodified lines
538538 /*
539539 * End one "io" structure with a given error.
540540 */
541−static void verity_finish_io(struct dm_verity_io *io, int error)
541+static void verity_finish_io(struct dm_verity_io *io, blk_status_t status)
542542 {
543543 struct dm_verity *v = io->v;
544544 struct bio *bio = dm_bio_from_per_bio_data(io, v->ti->per_io_data_size);
545545
546546 bio->bi_end_io = io->orig_bi_end_io;
547− bio->bi_error = error;
547+ bio->bi_status = status;
548548
549549 verity_fec_finish_io(io);
550550
@@ -555,15 +555,15 @@ static void verity_work(struct work_struct *w) · 4 unmodified lines
555555 {
556556 struct dm_verity_io *io = container_of(w, struct dm_verity_io, work);
557557
558− verity_finish_io(io, verity_verify_io(io));
558+ verity_finish_io(io, errno_to_blk_status(verity_verify_io(io)));
559559 }
560560
561561 static void verity_end_io(struct bio *bio)
562562 {
563563 struct dm_verity_io *io = bio->bi_private;
564564
565− if (bio->bi_error && !verity_fec_is_enabled(io->v)) {
566− verity_finish_io(io, bio->bi_error);
565+ if (bio->bi_status && !verity_fec_is_enabled(io->v)) {
566+ verity_finish_io(io, bio->bi_status);
567567 return;
568568 }
569569
drivers/md/dm.c+20−20
@@ -63,7 +63,7 @@ static struct workqueue_struct *deferred_remove_workqueue; · 62 unmodified lines
6363 */
6464 struct dm_io {
6565 struct mapped_device *md;
66− int error;
66+ blk_status_t status;
6767 atomic_t io_count;
6868 struct bio *bio;
6969 unsigned long start_time;
@@ -768,23 +768,24 @@ static int __noflush_suspending(struct mapped_device *md) · 698 unmodified lines
768768 * Decrements the number of outstanding ios that a bio has been
769769 * cloned into, completing the original io if necc.
770770 */
771−static void dec_pending(struct dm_io *io, int error)
771+static void dec_pending(struct dm_io *io, blk_status_t error)
772772 {
773773 unsigned long flags;
774− int io_error;
774+ blk_status_t io_error;
775775 struct bio *bio;
776776 struct mapped_device *md = io->md;
777777
778778 /* Push-back supersedes any I/O errors */
779779 if (unlikely(error)) {
780780 spin_lock_irqsave(&io->endio_lock, flags);
781− if (!(io->error > 0 && __noflush_suspending(md)))
782− io->error = error;
781+ if (!(io->status == BLK_STS_DM_REQUEUE &&
782+ __noflush_suspending(md)))
783+ io->status = error;
783784 spin_unlock_irqrestore(&io->endio_lock, flags);
784785 }
785786
786787 if (atomic_dec_and_test(&io->io_count)) {
787− if (io->error == DM_ENDIO_REQUEUE) {
788+ if (io->status == BLK_STS_DM_REQUEUE) {
788789 /*
789790 * Target requested pushing back the I/O.
790791 */
@@ -793,16 +794,16 @@ static void dec_pending(struct dm_io *io, int error) · 2 unmodified lines
793794 bio_list_add_head(&md->deferred, io->bio);
794795 else
795796 /* noflush suspend was interrupted. */
796− io->error = -EIO;
797+ io->status = BLK_STS_IOERR;
797798 spin_unlock_irqrestore(&md->deferred_lock, flags);
798799 }
799800
800− io_error = io->error;
801+ io_error = io->status;
801802 bio = io->bio;
802803 end_io_acct(io);
803804 free_io(md, io);
804805
805− if (io_error == DM_ENDIO_REQUEUE)
806+ if (io_error == BLK_STS_DM_REQUEUE)
806807 return;
807808
808809 if ((bio->bi_opf & REQ_PREFLUSH) && bio->bi_iter.bi_size) {
@@ -814,7 +815,7 @@ static void dec_pending(struct dm_io *io, int error) · 5 unmodified lines
814815 queue_io(md, bio);
815816 } else {
816817 /* done with normal IO or empty flush */
817− bio->bi_error = io_error;
818+ bio->bi_status = io_error;
818819 bio_endio(bio);
819820 }
820821 }
@@ -838,14 +839,13 @@ void disable_write_zeroes(struct mapped_device *md) · 17 unmodified lines
838839
839840 static void clone_endio(struct bio *bio)
840841 {
841− int error = bio->bi_error;
842− int r = error;
842+ blk_status_t error = bio->bi_status;
843843 struct dm_target_io *tio = container_of(bio, struct dm_target_io, clone);
844844 struct dm_io *io = tio->io;
845845 struct mapped_device *md = tio->io->md;
846846 dm_endio_fn endio = tio->ti->type->end_io;
847847
848− if (unlikely(error == -EREMOTEIO)) {
848+ if (unlikely(error == BLK_STS_TARGET)) {
849849 if (bio_op(bio) == REQ_OP_WRITE_SAME &&
850850 !bdev_get_queue(bio->bi_bdev)->limits.max_write_same_sectors)
851851 disable_write_same(md);
@@ -855,10 +855,10 @@ static void clone_endio(struct bio *bio) · 3 unmodified lines
855855 }
856856
857857 if (endio) {
858− r = endio(tio->ti, bio, &error);
858+ int r = endio(tio->ti, bio, &error);
859859 switch (r) {
860860 case DM_ENDIO_REQUEUE:
861− error = DM_ENDIO_REQUEUE;
861+ error = BLK_STS_DM_REQUEUE;
862862 /*FALLTHRU*/
863863 case DM_ENDIO_DONE:
864864 break;
@@ -1094,11 +1094,11 @@ static void __map_bio(struct dm_target_io *tio) · 229 unmodified lines
10941094 generic_make_request(clone);
10951095 break;
10961096 case DM_MAPIO_KILL:
1097− r = -EIO;
1098− /*FALLTHRU*/
1097+ dec_pending(tio->io, BLK_STS_IOERR);
1098+ free_tio(tio);
1099+ break;
10991100 case DM_MAPIO_REQUEUE:
1100− /* error the io and bail out, or requeue it if needed */
1101− dec_pending(tio->io, r);
1101+ dec_pending(tio->io, BLK_STS_DM_REQUEUE);
11021102 free_tio(tio);
11031103 break;
11041104 default:
@@ -1366,7 +1366,7 @@ static void __split_and_process_bio(struct mapped_device *md, · 261 unmodified lines
13661366 ci.map = map;
13671367 ci.md = md;
13681368 ci.io = alloc_io(md);
1369− ci.io->error = 0;
1369+ ci.io->status = 0;
13701370 atomic_set(&ci.io->io_count, 1);
13711371 ci.io->bio = bio;
13721372 ci.io->md = md;
drivers/md/md.c+4−4
@@ -273,7 +273,7 @@ static blk_qc_t md_make_request(struct request_queue *q, struct bio *bio) · 272 unmodified lines
273273 }
274274 if (mddev->ro == 1 && unlikely(rw == WRITE)) {
275275 if (bio_sectors(bio) != 0)
276− bio->bi_error = -EROFS;
276+ bio->bi_status = BLK_STS_IOERR;
277277 bio_endio(bio);
278278 return BLK_QC_T_NONE;
279279 }
@@ -719,8 +719,8 @@ static void super_written(struct bio *bio) · 439 unmodified lines
719719 struct md_rdev *rdev = bio->bi_private;
720720 struct mddev *mddev = rdev->mddev;
721721
722− if (bio->bi_error) {
723− pr_err("md: super_written gets error=%d\n", bio->bi_error);
722+ if (bio->bi_status) {
723+ pr_err("md: super_written gets error=%d\n", bio->bi_status);
724724 md_error(mddev, rdev);
725725 if (!test_bit(Faulty, &rdev->flags)
726726 && (bio->bi_opf & MD_FAILFAST)) {
@@ -801,7 +801,7 @@ int sync_page_io(struct md_rdev *rdev, sector_t sector, int size, · 74 unmodified lines
801801
802802 submit_bio_wait(bio);
803803
804− ret = !bio->bi_error;
804+ ret = !bio->bi_status;
805805 bio_put(bio);
806806 return ret;
807807 }
drivers/md/multipath.c+5−5
@@ -73,12 +73,12 @@ static void multipath_reschedule_retry (struct multipath_bh *mp_bh) · 72 unmodified lines
7373 * operation and are ready to return a success/failure code to the buffer
7474 * cache layer.
7575 */
76−static void multipath_end_bh_io (struct multipath_bh *mp_bh, int err)
76+static void multipath_end_bh_io(struct multipath_bh *mp_bh, blk_status_t status)
7777 {
7878 struct bio *bio = mp_bh->master_bio;
7979 struct mpconf *conf = mp_bh->mddev->private;
8080
81− bio->bi_error = err;
81+ bio->bi_status = status;
8282 bio_endio(bio);
8383 mempool_free(mp_bh, conf->pool);
8484 }
@@ -89,7 +89,7 @@ static void multipath_end_request(struct bio *bio) · 4 unmodified lines
8989 struct mpconf *conf = mp_bh->mddev->private;
9090 struct md_rdev *rdev = conf->multipaths[mp_bh->path].rdev;
9191
92− if (!bio->bi_error)
92+ if (!bio->bi_status)
9393 multipath_end_bh_io(mp_bh, 0);
9494 else if (!(bio->bi_opf & REQ_RAHEAD)) {
9595 /*
@@ -102,7 +102,7 @@ static void multipath_end_request(struct bio *bio) · 6 unmodified lines
102102 (unsigned long long)bio->bi_iter.bi_sector);
103103 multipath_reschedule_retry(mp_bh);
104104 } else
105− multipath_end_bh_io(mp_bh, bio->bi_error);
105+ multipath_end_bh_io(mp_bh, bio->bi_status);
106106 rdev_dec_pending(rdev, conf->mddev);
107107 }
108108
@@ -347,7 +347,7 @@ static void multipathd(struct md_thread *thread) · 238 unmodified lines
347347 pr_err("multipath: %s: unrecoverable IO read error for block %llu\n",
348348 bdevname(bio->bi_bdev,b),
349349 (unsigned long long)bio->bi_iter.bi_sector);
350− multipath_end_bh_io(mp_bh, -EIO);
350+ multipath_end_bh_io(mp_bh, BLK_STS_IOERR);
351351 } else {
352352 pr_err("multipath: %s: redirecting sector %llu to another IO path\n",
353353 bdevname(bio->bi_bdev,b),
drivers/md/raid1.c+18−18
@@ -277,7 +277,7 @@ static void call_bio_endio(struct r1bio *r1_bio) · 276 unmodified lines
277277 struct r1conf *conf = r1_bio->mddev->private;
278278
279279 if (!test_bit(R1BIO_Uptodate, &r1_bio->state))
280− bio->bi_error = -EIO;
280+ bio->bi_status = BLK_STS_IOERR;
281281
282282 bio_endio(bio);
283283 /*
@@ -335,7 +335,7 @@ static int find_bio_disk(struct r1bio *r1_bio, struct bio *bio) · 51 unmodified lines
335335
336336 static void raid1_end_read_request(struct bio *bio)
337337 {
338− int uptodate = !bio->bi_error;
338+ int uptodate = !bio->bi_status;
339339 struct r1bio *r1_bio = bio->bi_private;
340340 struct r1conf *conf = r1_bio->mddev->private;
341341 struct md_rdev *rdev = conf->mirrors[r1_bio->read_disk].rdev;
@@ -426,12 +426,12 @@ static void raid1_end_write_request(struct bio *bio) · 84 unmodified lines
426426 struct md_rdev *rdev = conf->mirrors[mirror].rdev;
427427 bool discard_error;
428428
429− discard_error = bio->bi_error && bio_op(bio) == REQ_OP_DISCARD;
429+ discard_error = bio->bi_status && bio_op(bio) == REQ_OP_DISCARD;
430430
431431 /*
432432 * 'one mirror IO has finished' event handler:
433433 */
434− if (bio->bi_error && !discard_error) {
434+ if (bio->bi_status && !discard_error) {
435435 set_bit(WriteErrorSeen, &rdev->flags);
436436 if (!test_and_set_bit(WantReplacement, &rdev->flags))
437437 set_bit(MD_RECOVERY_NEEDED, &
@@ -802,7 +802,7 @@ static void flush_bio_list(struct r1conf *conf, struct bio *bio) · 364 unmodified lines
802802 bio->bi_next = NULL;
803803 bio->bi_bdev = rdev->bdev;
804804 if (test_bit(Faulty, &rdev->flags)) {
805− bio->bi_error = -EIO;
805+ bio->bi_status = BLK_STS_IOERR;
806806 bio_endio(bio);
807807 } else if (unlikely((bio_op(bio) == REQ_OP_DISCARD) &&
808808 !blk_queue_discard(bdev_get_queue(bio->bi_bdev))))
@@ -1856,7 +1856,7 @@ static void end_sync_read(struct bio *bio) · 1047 unmodified lines
18561856 * or re-read if the read failed.
18571857 * We don't do much here, just schedule handling by raid1d
18581858 */
1859− if (!bio->bi_error)
1859+ if (!bio->bi_status)
18601860 set_bit(R1BIO_Uptodate, &r1_bio->state);
18611861
18621862 if (atomic_dec_and_test(&r1_bio->remaining))
@@ -1865,7 +1865,7 @@ static void end_sync_read(struct bio *bio) · 2 unmodified lines
18651865
18661866 static void end_sync_write(struct bio *bio)
18671867 {
1868− int uptodate = !bio->bi_error;
1868+ int uptodate = !bio->bi_status;
18691869 struct r1bio *r1_bio = get_resync_r1bio(bio);
18701870 struct mddev *mddev = r1_bio->mddev;
18711871 struct r1conf *conf = mddev->private;
@@ -2058,7 +2058,7 @@ static int fix_sync_read_error(struct r1bio *r1_bio) · 186 unmodified lines
20582058 idx ++;
20592059 }
20602060 set_bit(R1BIO_Uptodate, &r1_bio->state);
2061− bio->bi_error = 0;
2061+ bio->bi_status = 0;
20622062 return 1;
20632063 }
20642064
@@ -2082,16 +2082,16 @@ static void process_checks(struct r1bio *r1_bio) · 17 unmodified lines
20822082 for (i = 0; i < conf->raid_disks * 2; i++) {
20832083 int j;
20842084 int size;
2085− int error;
2085+ blk_status_t status;
20862086 struct bio_vec *bi;
20872087 struct bio *b = r1_bio->bios[i];
20882088 struct resync_pages *rp = get_resync_pages(b);
20892089 if (b->bi_end_io != end_sync_read)
20902090 continue;
20912091 /* fixup the bio for reuse, but preserve errno */
2092− error = b->bi_error;
2092+ status = b->bi_status;
20932093 bio_reset(b);
2094− b->bi_error = error;
2094+ b->bi_status = status;
20952095 b->bi_vcnt = vcnt;
20962096 b->bi_iter.bi_size = r1_bio->sectors << 9;
20972097 b->bi_iter.bi_sector = r1_bio->sector +
@@ -2113,7 +2113,7 @@ static void process_checks(struct r1bio *r1_bio) · 15 unmodified lines
21132113 }
21142114 for (primary = 0; primary < conf->raid_disks * 2; primary++)
21152115 if (r1_bio->bios[primary]->bi_end_io == end_sync_read &&
2116− !r1_bio->bios[primary]->bi_error) {
2116+ !r1_bio->bios[primary]->bi_status) {
21172117 r1_bio->bios[primary]->bi_end_io = NULL;
21182118 rdev_dec_pending(conf->mirrors[primary].rdev, mddev);
21192119 break;
@@ -2123,7 +2123,7 @@ static void process_checks(struct r1bio *r1_bio) · 3 unmodified lines
21232123 int j;
21242124 struct bio *pbio = r1_bio->bios[primary];
21252125 struct bio *sbio = r1_bio->bios[i];
2126− int error = sbio->bi_error;
2126+ blk_status_t status = sbio->bi_status;
21272127 struct page **ppages = get_resync_pages(pbio)->pages;
21282128 struct page **spages = get_resync_pages(sbio)->pages;
21292129 struct bio_vec *bi;
@@ -2132,12 +2132,12 @@ static void process_checks(struct r1bio *r1_bio) · 2 unmodified lines
21322132 if (sbio->bi_end_io != end_sync_read)
21332133 continue;
21342134 /* Now we can 'fixup' the error value */
2135− sbio->bi_error = 0;
2135+ sbio->bi_status = 0;
21362136
21372137 bio_for_each_segment_all(bi, sbio, j)
21382138 page_len[j] = bi->bv_len;
21392139
2140− if (!error) {
2140+ if (!status) {
21412141 for (j = vcnt; j-- ; ) {
21422142 if (memcmp(page_address(ppages[j]),
21432143 page_address(spages[j]),
@@ -2149,7 +2149,7 @@ static void process_checks(struct r1bio *r1_bio) · 5 unmodified lines
21492149 if (j >= 0)
21502150 atomic64_add(r1_bio->sectors, &mddev->resync_mismatches);
21512151 if (j < 0 || (test_bit(MD_RECOVERY_CHECK, &mddev->recovery)
2152− && !error)) {
2152+ && !status)) {
21532153 /* No need to write to this device. */
21542154 sbio->bi_end_io = NULL;
21552155 rdev_dec_pending(conf->mirrors[i].rdev, mddev);
@@ -2400,11 +2400,11 @@ static void handle_sync_write_finished(struct r1conf *conf, struct r1bio *r1_bio · 244 unmodified lines
24002400 struct bio *bio = r1_bio->bios[m];
24012401 if (bio->bi_end_io == NULL)
24022402 continue;
2403− if (!bio->bi_error &&
2403+ if (!bio->bi_status &&
24042404 test_bit(R1BIO_MadeGood, &r1_bio->state)) {
24052405 rdev_clear_badblocks(rdev, r1_bio->sector, s, 0);
24062406 }
2407− if (bio->bi_error &&
2407+ if (bio->bi_status &&
24082408 test_bit(R1BIO_WriteError, &r1_bio->state)) {
24092409 if (!rdev_set_badblocks(rdev, r1_bio->sector, s, 0))
24102410 md_error(conf->mddev, rdev);
drivers/md/raid10.c+18−18
@@ -336,7 +336,7 @@ static void raid_end_bio_io(struct r10bio *r10_bio) · 335 unmodified lines
336336 struct r10conf *conf = r10_bio->mddev->private;
337337
338338 if (!test_bit(R10BIO_Uptodate, &r10_bio->state))
339− bio->bi_error = -EIO;
339+ bio->bi_status = BLK_STS_IOERR;
340340
341341 bio_endio(bio);
342342 /*
@@ -389,7 +389,7 @@ static int find_bio_disk(struct r10conf *conf, struct r10bio *r10_bio, · 46 unmodified lines
389389
390390 static void raid10_end_read_request(struct bio *bio)
391391 {
392− int uptodate = !bio->bi_error;
392+ int uptodate = !bio->bi_status;
393393 struct r10bio *r10_bio = bio->bi_private;
394394 int slot, dev;
395395 struct md_rdev *rdev;
@@ -477,7 +477,7 @@ static void raid10_end_write_request(struct bio *bio) · 81 unmodified lines
477477 struct bio *to_put = NULL;
478478 bool discard_error;
479479
480− discard_error = bio->bi_error && bio_op(bio) == REQ_OP_DISCARD;
480+ discard_error = bio->bi_status && bio_op(bio) == REQ_OP_DISCARD;
481481
482482 dev = find_bio_disk(conf, r10_bio, bio, &slot, &repl);
483483
@@ -491,7 +491,7 @@ static void raid10_end_write_request(struct bio *bio) · 7 unmodified lines
491491 /*
492492 * this branch is our 'one mirror IO has finished' event handler:
493493 */
494− if (bio->bi_error && !discard_error) {
494+ if (bio->bi_status && !discard_error) {
495495 if (repl)
496496 /* Never record new bad blocks to replacement,
497497 * just fail it.
@@ -913,7 +913,7 @@ static void flush_pending_writes(struct r10conf *conf) · 415 unmodified lines
913913 bio->bi_next = NULL;
914914 bio->bi_bdev = rdev->bdev;
915915 if (test_bit(Faulty, &rdev->flags)) {
916− bio->bi_error = -EIO;
916+ bio->bi_status = BLK_STS_IOERR;
917917 bio_endio(bio);
918918 } else if (unlikely((bio_op(bio) == REQ_OP_DISCARD) &&
919919 !blk_queue_discard(bdev_get_queue(bio->bi_bdev))))
@@ -1098,7 +1098,7 @@ static void raid10_unplug(struct blk_plug_cb *cb, bool from_schedule) · 178 unmodified lines
10981098 bio->bi_next = NULL;
10991099 bio->bi_bdev = rdev->bdev;
11001100 if (test_bit(Faulty, &rdev->flags)) {
1101− bio->bi_error = -EIO;
1101+ bio->bi_status = BLK_STS_IOERR;
11021102 bio_endio(bio);
11031103 } else if (unlikely((bio_op(bio) == REQ_OP_DISCARD) &&
11041104 !blk_queue_discard(bdev_get_queue(bio->bi_bdev))))
@@ -1888,7 +1888,7 @@ static void __end_sync_read(struct r10bio *r10_bio, struct bio *bio, int d) · 783 unmodified lines
18881888 {
18891889 struct r10conf *conf = r10_bio->mddev->private;
18901890
1891− if (!bio->bi_error)
1891+ if (!bio->bi_status)
18921892 set_bit(R10BIO_Uptodate, &r10_bio->state);
18931893 else
18941894 /* The write handler will notice the lack of
@@ -1972,7 +1972,7 @@ static void end_sync_write(struct bio *bio) · 77 unmodified lines
19721972 else
19731973 rdev = conf->mirrors[d].rdev;
19741974
1975− if (bio->bi_error) {
1975+ if (bio->bi_status) {
19761976 if (repl)
19771977 md_error(mddev, rdev);
19781978 else {
@@ -2021,7 +2021,7 @@ static void sync_request_write(struct mddev *mddev, struct r10bio *r10_bio) · 42 unmodified lines
20212021
20222022 /* find the first device with a block */
20232023 for (i=0; i<conf->copies; i++)
2024− if (!r10_bio->devs[i].bio->bi_error)
2024+ if (!r10_bio->devs[i].bio->bi_status)
20252025 break;
20262026
20272027 if (i == conf->copies)
@@ -2050,7 +2050,7 @@ static void sync_request_write(struct mddev *mddev, struct r10bio *r10_bio) · 22 unmodified lines
20502050 tpages = get_resync_pages(tbio)->pages;
20512051 d = r10_bio->devs[i].devnum;
20522052 rdev = conf->mirrors[d].rdev;
2053− if (!r10_bio->devs[i].bio->bi_error) {
2053+ if (!r10_bio->devs[i].bio->bi_status) {
20542054 /* We know that the bi_io_vec layout is the same for
20552055 * both 'first' and 'i', so we just compare them.
20562056 * All vec entries are PAGE_SIZE;
@@ -2633,7 +2633,7 @@ static void handle_write_completed(struct r10conf *conf, struct r10bio *r10_bio) · 576 unmodified lines
26332633 rdev = conf->mirrors[dev].rdev;
26342634 if (r10_bio->devs[m].bio == NULL)
26352635 continue;
2636− if (!r10_bio->devs[m].bio->bi_error) {
2636+ if (!r10_bio->devs[m].bio->bi_status) {
26372637 rdev_clear_badblocks(
26382638 rdev,
26392639 r10_bio->devs[m].addr,
@@ -2649,7 +2649,7 @@ static void handle_write_completed(struct r10conf *conf, struct r10bio *r10_bio) · 9 unmodified lines
26492649 if (r10_bio->devs[m].repl_bio == NULL)
26502650 continue;
26512651
2652− if (!r10_bio->devs[m].repl_bio->bi_error) {
2652+ if (!r10_bio->devs[m].repl_bio->bi_status) {
26532653 rdev_clear_badblocks(
26542654 rdev,
26552655 r10_bio->devs[m].addr,
@@ -2675,7 +2675,7 @@ static void handle_write_completed(struct r10conf *conf, struct r10bio *r10_bio) · 19 unmodified lines
26752675 r10_bio->devs[m].addr,
26762676 r10_bio->sectors, 0);
26772677 rdev_dec_pending(rdev, conf->mddev);
2678− } else if (bio != NULL && bio->bi_error) {
2678+ } else if (bio != NULL && bio->bi_status) {
26792679 fail = true;
26802680 if (!narrow_write_error(r10_bio, m)) {
26812681 md_error(conf->mddev, rdev);
@@ -3267,7 +3267,7 @@ static sector_t raid10_sync_request(struct mddev *mddev, sector_t sector_nr, · 585 unmodified lines
32673267 r10_bio->devs[i].repl_bio->bi_end_io = NULL;
32683268
32693269 bio = r10_bio->devs[i].bio;
3270− bio->bi_error = -EIO;
3270+ bio->bi_status = BLK_STS_IOERR;
32713271 rcu_read_lock();
32723272 rdev = rcu_dereference(conf->mirrors[d].rdev);
32733273 if (rdev == NULL || test_bit(Faulty, &rdev->flags)) {
@@ -3309,7 +3309,7 @@ static sector_t raid10_sync_request(struct mddev *mddev, sector_t sector_nr, · 35 unmodified lines
33093309
33103310 /* Need to set up for writing to the replacement */
33113311 bio = r10_bio->devs[i].repl_bio;
3312− bio->bi_error = -EIO;
3312+ bio->bi_status = BLK_STS_IOERR;
33133313
33143314 sector = r10_bio->devs[i].addr;
33153315 bio->bi_next = biolist;
@@ -3375,7 +3375,7 @@ static sector_t raid10_sync_request(struct mddev *mddev, sector_t sector_nr, · 59 unmodified lines
33753375
33763376 if (bio->bi_end_io == end_sync_read) {
33773377 md_sync_acct(bio->bi_bdev, nr_sectors);
3378− bio->bi_error = 0;
3378+ bio->bi_status = 0;
33793379 generic_make_request(bio);
33803380 }
33813381 }
@@ -4394,7 +4394,7 @@ read_more: · 1012 unmodified lines
43944394 read_bio->bi_end_io = end_reshape_read;
43954395 bio_set_op_attrs(read_bio, REQ_OP_READ, 0);
43964396 read_bio->bi_flags &= (~0UL << BIO_RESET_BITS);
4397− read_bio->bi_error = 0;
4397+ read_bio->bi_status = 0;
43984398 read_bio->bi_vcnt = 0;
43994399 read_bio->bi_iter.bi_size = 0;
44004400 r10_bio->master_bio = read_bio;
@@ -4638,7 +4638,7 @@ static void end_reshape_write(struct bio *bio) · 237 unmodified lines
46384638 rdev = conf->mirrors[d].rdev;
46394639 }
46404640
4641− if (bio->bi_error) {
4641+ if (bio->bi_status) {
46424642 /* FIXME should record badblock */
46434643 md_error(mddev, rdev);
46444644 }
drivers/md/raid5-cache.c+2−2
@@ -572,7 +572,7 @@ static void r5l_log_endio(struct bio *bio) · 571 unmodified lines
572572 struct r5l_log *log = io->log;
573573 unsigned long flags;
574574
575− if (bio->bi_error)
575+ if (bio->bi_status)
576576 md_error(log->rdev->mddev, log->rdev);
577577
578578 bio_put(bio);
@@ -1247,7 +1247,7 @@ static void r5l_log_flush_endio(struct bio *bio) · 668 unmodified lines
12471247 unsigned long flags;
12481248 struct r5l_io_unit *io;
12491249
1250− if (bio->bi_error)
1250+ if (bio->bi_status)
12511251 md_error(log->rdev->mddev, log->rdev);
12521252
12531253 spin_lock_irqsave(&log->io_list_lock, flags);
drivers/md/raid5-ppl.c+1−1
@@ -397,7 +397,7 @@ static void ppl_log_endio(struct bio *bio) · 396 unmodified lines
397397
398398 pr_debug("%s: seq: %llu\n", __func__, io->seq);
399399
400− if (bio->bi_error)
400+ if (bio->bi_status)
401401 md_error(ppl_conf->mddev, log->rdev);
402402
403403 list_for_each_entry_safe(sh, next, &io->stripe_list, log_list) {
drivers/md/raid5.c+11−11
@@ -2476,7 +2476,7 @@ static void raid5_end_read_request(struct bio * bi) · 2475 unmodified lines
24762476
24772477 pr_debug("end_read_request %llu/%d, count: %d, error %d.\n",
24782478 (unsigned long long)sh->sector, i, atomic_read(&sh->count),
2479− bi->bi_error);
2479+ bi->bi_status);
24802480 if (i == disks) {
24812481 bio_reset(bi);
24822482 BUG();
@@ -2496,7 +2496,7 @@ static void raid5_end_read_request(struct bio * bi) · 13 unmodified lines
24962496 s = sh->sector + rdev->new_data_offset;
24972497 else
24982498 s = sh->sector + rdev->data_offset;
2499− if (!bi->bi_error) {
2499+ if (!bi->bi_status) {
25002500 set_bit(R5_UPTODATE, &sh->dev[i].flags);
25012501 if (test_bit(R5_ReadError, &sh->dev[i].flags)) {
25022502 /* Note that this cannot happen on a
@@ -2613,7 +2613,7 @@ static void raid5_end_write_request(struct bio *bi) · 110 unmodified lines
26132613 }
26142614 pr_debug("end_write_request %llu/%d, count %d, error: %d.\n",
26152615 (unsigned long long)sh->sector, i, atomic_read(&sh->count),
2616− bi->bi_error);
2616+ bi->bi_status);
26172617 if (i == disks) {
26182618 bio_reset(bi);
26192619 BUG();
@@ -2621,14 +2621,14 @@ static void raid5_end_write_request(struct bio *bi) · 1 unmodified line
26212621 }
26222622
26232623 if (replacement) {
2624− if (bi->bi_error)
2624+ if (bi->bi_status)
26252625 md_error(conf->mddev, rdev);
26262626 else if (is_badblock(rdev, sh->sector,
26272627 STRIPE_SECTORS,
26282628 &first_bad, &bad_sectors))
26292629 set_bit(R5_MadeGoodRepl, &sh->dev[i].flags);
26302630 } else {
2631− if (bi->bi_error) {
2631+ if (bi->bi_status) {
26322632 set_bit(STRIPE_DEGRADED, &sh->state);
26332633 set_bit(WriteErrorSeen, &rdev->flags);
26342634 set_bit(R5_WriteError, &sh->dev[i].flags);
@@ -2649,7 +2649,7 @@ static void raid5_end_write_request(struct bio *bi) · 14 unmodified lines
26492649 }
26502650 rdev_dec_pending(rdev, conf->mddev);
26512651
2652− if (sh->batch_head && bi->bi_error && !replacement)
2652+ if (sh->batch_head && bi->bi_status && !replacement)
26532653 set_bit(STRIPE_BATCH_ERR, &sh->batch_head->state);
26542654
26552655 bio_reset(bi);
@@ -3381,7 +3381,7 @@ handle_failed_stripe(struct r5conf *conf, struct stripe_head *sh, · 725 unmodified lines
33813381 sh->dev[i].sector + STRIPE_SECTORS) {
33823382 struct bio *nextbi = r5_next_bio(bi, sh->dev[i].sector);
33833383
3384− bi->bi_error = -EIO;
3384+ bi->bi_status = BLK_STS_IOERR;
33853385 md_write_end(conf->mddev);
33863386 bio_endio(bi);
33873387 bi = nextbi;
@@ -3403,7 +3403,7 @@ handle_failed_stripe(struct r5conf *conf, struct stripe_head *sh, · 15 unmodified lines
34033403 sh->dev[i].sector + STRIPE_SECTORS) {
34043404 struct bio *bi2 = r5_next_bio(bi, sh->dev[i].sector);
34053405
3406− bi->bi_error = -EIO;
3406+ bi->bi_status = BLK_STS_IOERR;
34073407 md_write_end(conf->mddev);
34083408 bio_endio(bi);
34093409 bi = bi2;
@@ -3429,7 +3429,7 @@ handle_failed_stripe(struct r5conf *conf, struct stripe_head *sh, · 19 unmodified lines
34293429 struct bio *nextbi =
34303430 r5_next_bio(bi, sh->dev[i].sector);
34313431
3432− bi->bi_error = -EIO;
3432+ bi->bi_status = BLK_STS_IOERR;
34333433 bio_endio(bi);
34343434 bi = nextbi;
34353435 }
@@ -5144,7 +5144,7 @@ static void raid5_align_endio(struct bio *bi) · 1708 unmodified lines
51445144 struct mddev *mddev;
51455145 struct r5conf *conf;
51465146 struct md_rdev *rdev;
5147− int error = bi->bi_error;
5147+ blk_status_t error = bi->bi_status;
51485148
51495149 bio_put(bi);
51505150
@@ -5721,7 +5721,7 @@ static void raid5_make_request(struct mddev *mddev, struct bio * bi) · 570 unmodified lines
57215721 release_stripe_plug(mddev, sh);
57225722 } else {
57235723 /* cannot get stripe for read-ahead, just give-up */
5724− bi->bi_error = -EIO;
5724+ bi->bi_status = BLK_STS_IOERR;
57255725 break;
57265726 }
57275727 }
drivers/nvdimm/blk.c+2−2
@@ -186,7 +186,7 @@ static blk_qc_t nd_blk_make_request(struct request_queue *q, struct bio *bio) · 185 unmodified lines
186186 * another kernel subsystem, and we just pass it through.
187187 */
188188 if (bio_integrity_enabled(bio) && bio_integrity_prep(bio)) {
189− bio->bi_error = -EIO;
189+ bio->bi_status = BLK_STS_IOERR;
190190 goto out;
191191 }
192192
@@ -205,7 +205,7 @@ static blk_qc_t nd_blk_make_request(struct request_queue *q, struct bio *bio) · 12 unmodified lines
205205 "io error in %s sector %lld, len %d,\n",
206206 (rw == READ) ? "READ" : "WRITE",
207207 (unsigned long long) iter.bi_sector, len);
208− bio->bi_error = err;
208+ bio->bi_status = errno_to_blk_status(err);
209209 break;
210210 }
211211 }
drivers/nvdimm/btt.c+2−2
@@ -1210,7 +1210,7 @@ static blk_qc_t btt_make_request(struct request_queue *q, struct bio *bio) · 1209 unmodified lines
12101210 * another kernel subsystem, and we just pass it through.
12111211 */
12121212 if (bio_integrity_enabled(bio) && bio_integrity_prep(bio)) {
1213− bio->bi_error = -EIO;
1213+ bio->bi_status = BLK_STS_IOERR;
12141214 goto out;
12151215 }
12161216
@@ -1232,7 +1232,7 @@ static blk_qc_t btt_make_request(struct request_queue *q, struct bio *bio) · 15 unmodified lines
12321232 (op_is_write(bio_op(bio))) ? "WRITE" :
12331233 "READ",
12341234 (unsigned long long) iter.bi_sector, len);
1235− bio->bi_error = err;
1235+ bio->bi_status = errno_to_blk_status(err);
12361236 break;
12371237 }
12381238 }
drivers/nvdimm/pmem.c+14−14
@@ -49,19 +49,19 @@ static struct nd_region *to_region(struct pmem_device *pmem) · 48 unmodified lines
4949 return to_nd_region(to_dev(pmem)->parent);
5050 }
5151
52−static int pmem_clear_poison(struct pmem_device *pmem, phys_addr_t offset,
53− unsigned int len)
52+static blk_status_t pmem_clear_poison(struct pmem_device *pmem,
53+ phys_addr_t offset, unsigned int len)
5454 {
5555 struct device *dev = to_dev(pmem);
5656 sector_t sector;
5757 long cleared;
58− int rc = 0;
58+ blk_status_t rc = BLK_STS_OK;
5959
6060 sector = (offset - pmem->data_offset) / 512;
6161
6262 cleared = nvdimm_clear_poison(dev, pmem->phys_addr + offset, len);
6363 if (cleared < len)
64− rc = -EIO;
64+ rc = BLK_STS_IOERR;
6565 if (cleared > 0 && cleared / 512) {
6666 cleared /= 512;
6767 dev_dbg(dev, "%s: %#llx clear %ld sector%s\n", __func__,
@@ -84,7 +84,7 @@ static void write_pmem(void *pmem_addr, struct page *page, · 16 unmodified lines
8484 kunmap_atomic(mem);
8585 }
8686
87−static int read_pmem(struct page *page, unsigned int off,
87+static blk_status_t read_pmem(struct page *page, unsigned int off,
8888 void *pmem_addr, unsigned int len)
8989 {
9090 int rc;
@@ -93,15 +93,15 @@ static int read_pmem(struct page *page, unsigned int off, · 2 unmodified lines
9393 rc = memcpy_mcsafe(mem + off, pmem_addr, len);
9494 kunmap_atomic(mem);
9595 if (rc)
96− return -EIO;
97− return 0;
96+ return BLK_STS_IOERR;
97+ return BLK_STS_OK;
9898 }
9999
100−static int pmem_do_bvec(struct pmem_device *pmem, struct page *page,
100+static blk_status_t pmem_do_bvec(struct pmem_device *pmem, struct page *page,
101101 unsigned int len, unsigned int off, bool is_write,
102102 sector_t sector)
103103 {
104− int rc = 0;
104+ blk_status_t rc = BLK_STS_OK;
105105 bool bad_pmem = false;
106106 phys_addr_t pmem_off = sector * 512 + pmem->data_offset;
107107 void *pmem_addr = pmem->virt_addr + pmem_off;
@@ -111,7 +111,7 @@ static int pmem_do_bvec(struct pmem_device *pmem, struct page *page, · 3 unmodified lines
111111
112112 if (!is_write) {
113113 if (unlikely(bad_pmem))
114− rc = -EIO;
114+ rc = BLK_STS_IOERR;
115115 else {
116116 rc = read_pmem(page, off, pmem_addr, len);
117117 flush_dcache_page(page);
@@ -149,7 +149,7 @@ static int pmem_do_bvec(struct pmem_device *pmem, struct page *page, · 31 unmodified lines
149149
150150 static blk_qc_t pmem_make_request(struct request_queue *q, struct bio *bio)
151151 {
152− int rc = 0;
152+ blk_status_t rc = 0;
153153 bool do_acct;
154154 unsigned long start;
155155 struct bio_vec bvec;
@@ -166,7 +166,7 @@ static blk_qc_t pmem_make_request(struct request_queue *q, struct bio *bio) · 10 unmodified lines
166166 bvec.bv_offset, op_is_write(bio_op(bio)),
167167 iter.bi_sector);
168168 if (rc) {
169− bio->bi_error = rc;
169+ bio->bi_status = rc;
170170 break;
171171 }
172172 }
@@ -184,7 +184,7 @@ static int pmem_rw_page(struct block_device *bdev, sector_t sector, · 11 unmodified lines
184184 struct page *page, bool is_write)
185185 {
186186 struct pmem_device *pmem = bdev->bd_queue->queuedata;
187− int rc;
187+ blk_status_t rc;
188188
189189 rc = pmem_do_bvec(pmem, page, PAGE_SIZE, 0, is_write, sector);
190190
@@ -197,7 +197,7 @@ static int pmem_rw_page(struct block_device *bdev, sector_t sector, · 6 unmodified lines
197197 if (rc == 0)
198198 page_endio(page, is_write, 0);
199199
200− return rc;
200+ return blk_status_to_errno(rc);
201201 }
202202
203203 /* see "strong" declaration in tools/testing/nvdimm/pmem-dax.c */
drivers/nvme/target/io-cmd.c+2−2
@@ -21,7 +21,7 @@ static void nvmet_bio_done(struct bio *bio) · 20 unmodified lines
2121 struct nvmet_req *req = bio->bi_private;
2222
2323 nvmet_req_complete(req,
24− bio->bi_error ? NVME_SC_INTERNAL | NVME_SC_DNR : 0);
24+ bio->bi_status ? NVME_SC_INTERNAL | NVME_SC_DNR : 0);
2525
2626 if (bio != &req->inline_bio)
2727 bio_put(bio);
@@ -145,7 +145,7 @@ static void nvmet_execute_discard(struct nvmet_req *req) · 117 unmodified lines
145145 bio->bi_private = req;
146146 bio->bi_end_io = nvmet_bio_done;
147147 if (status) {
148− bio->bi_error = -EIO;
148+ bio->bi_status = BLK_STS_IOERR;
149149 bio_endio(bio);
150150 } else {
151151 submit_bio(bio);
drivers/target/target_core_iblock.c+5−5
@@ -296,8 +296,8 @@ static void iblock_bio_done(struct bio *bio) · 295 unmodified lines
296296 struct se_cmd *cmd = bio->bi_private;
297297 struct iblock_req *ibr = cmd->priv;
298298
299− if (bio->bi_error) {
300− pr_err("bio error: %p, err: %d\n", bio, bio->bi_error);
299+ if (bio->bi_status) {
300+ pr_err("bio error: %p, err: %d\n", bio, bio->bi_status);
301301 /*
302302 * Bump the ib_bio_err_cnt and release bio.
303303 */
@@ -354,11 +354,11 @@ static void iblock_end_io_flush(struct bio *bio) · 50 unmodified lines
354354 {
355355 struct se_cmd *cmd = bio->bi_private;
356356
357− if (bio->bi_error)
358− pr_err("IBLOCK: cache flush failed: %d\n", bio->bi_error);
357+ if (bio->bi_status)
358+ pr_err("IBLOCK: cache flush failed: %d\n", bio->bi_status);
359359
360360 if (cmd) {
361− if (bio->bi_error)
361+ if (bio->bi_status)
362362 target_complete_cmd(cmd, SAM_STAT_CHECK_CONDITION);
363363 else
364364 target_complete_cmd(cmd, SAM_STAT_GOOD);
fs/block_dev.c+10−8
@@ -262,8 +262,8 @@ __blkdev_direct_IO_simple(struct kiocb *iocb, struct iov_iter *iter, · 261 unmodified lines
262262 if (vecs != inline_vecs)
263263 kfree(vecs);
264264
265− if (unlikely(bio.bi_error))
266− return bio.bi_error;
265+ if (unlikely(bio.bi_status))
266+ return blk_status_to_errno(bio.bi_status);
267267 return ret;
268268 }
269269
@@ -288,16 +288,18 @@ static void blkdev_bio_end_io(struct bio *bio) · 18 unmodified lines
288288 bool should_dirty = dio->should_dirty;
289289
290290 if (dio->multi_bio && !atomic_dec_and_test(&dio->ref)) {
291− if (bio->bi_error && !dio->bio.bi_error)
292− dio->bio.bi_error = bio->bi_error;
291+ if (bio->bi_status && !dio->bio.bi_status)
292+ dio->bio.bi_status = bio->bi_status;
293293 } else {
294294 if (!dio->is_sync) {
295295 struct kiocb *iocb = dio->iocb;
296− ssize_t ret = dio->bio.bi_error;
296+ ssize_t ret;
297297
298− if (likely(!ret)) {
298+ if (likely(!dio->bio.bi_status)) {
299299 ret = dio->size;
300300 iocb->ki_pos += ret;
301+ } else {
302+ ret = blk_status_to_errno(dio->bio.bi_status);
301303 }
302304
303305 dio->iocb->ki_complete(iocb, ret, 0);
@@ -363,7 +365,7 @@ __blkdev_direct_IO(struct kiocb *iocb, struct iov_iter *iter, int nr_pages) · 59 unmodified lines
363365
364366 ret = bio_iov_iter_get_pages(bio, iter);
365367 if (unlikely(ret)) {
366− bio->bi_error = -EIO;
368+ bio->bi_status = BLK_STS_IOERR;
367369 bio_endio(bio);
368370 break;
369371 }
@@ -413,7 +415,7 @@ __blkdev_direct_IO(struct kiocb *iocb, struct iov_iter *iter, int nr_pages) · 43 unmodified lines
413415 __set_current_state(TASK_RUNNING);
414416
415417 if (!ret)
416− ret = dio->bio.bi_error;
418+ ret = blk_status_to_errno(dio->bio.bi_status);
417419 if (likely(!ret))
418420 ret = dio->size;
419421
fs/btrfs/btrfs_inode.h+2−1
@@ -310,7 +310,8 @@ struct btrfs_dio_private { · 309 unmodified lines
310310 * The original bio may be split to several sub-bios, this is
311311 * done during endio of sub-bios
312312 */
313− int (*subio_endio)(struct inode *, struct btrfs_io_bio *, int);
313+ blk_status_t (*subio_endio)(struct inode *, struct btrfs_io_bio *,
314+ blk_status_t);
314315 };
315316
316317 /*
fs/btrfs/check-integrity.c+2−2
@@ -2129,7 +2129,7 @@ static void btrfsic_bio_end_io(struct bio *bp) · 2128 unmodified lines
21292129 /* mutex is not held! This is not save if IO is not yet completed
21302130 * on umount */
21312131 iodone_w_error = 0;
2132− if (bp->bi_error)
2132+ if (bp->bi_status)
21332133 iodone_w_error = 1;
21342134
21352135 BUG_ON(NULL == block);
@@ -2143,7 +2143,7 @@ static void btrfsic_bio_end_io(struct bio *bp) · 7 unmodified lines
21432143 if ((dev_state->state->print_mask &
21442144 BTRFSIC_PRINT_MASK_END_IO_BIO_BH))
21452145 pr_info("bio_end_io(err=%d) for %c @%llu (%s/%llu/%d)\n",
2146− bp->bi_error,
2146+ bp->bi_status,
21472147 btrfsic_get_block_type(dev_state->state, block),
21482148 block->logical_bytenr, dev_state->name,
21492149 block->dev_bytenr, block->mirror_num);
fs/btrfs/compression.c+22−22
@@ -155,7 +155,7 @@ static void end_compressed_bio_read(struct bio *bio) · 154 unmodified lines
155155 unsigned long index;
156156 int ret;
157157
158− if (bio->bi_error)
158+ if (bio->bi_status)
159159 cb->errors = 1;
160160
161161 /* if there are more bios still pending for this compressed
@@ -268,7 +268,7 @@ static void end_compressed_bio_write(struct bio *bio) · 106 unmodified lines
268268 struct page *page;
269269 unsigned long index;
270270
271− if (bio->bi_error)
271+ if (bio->bi_status)
272272 cb->errors = 1;
273273
274274 /* if there are more bios still pending for this compressed
@@ -287,7 +287,7 @@ static void end_compressed_bio_write(struct bio *bio) · 12 unmodified lines
287287 cb->start,
288288 cb->start + cb->len - 1,
289289 NULL,
290− bio->bi_error ? 0 : 1);
290+ bio->bi_status ? 0 : 1);
291291 cb->compressed_pages[0]->mapping = NULL;
292292
293293 end_compressed_writeback(inode, cb);
@@ -320,7 +320,7 @@ out: · 26 unmodified lines
320320 * This also checksums the file bytes and gets things ready for
321321 * the end io hooks.
322322 */
323−int btrfs_submit_compressed_write(struct inode *inode, u64 start,
323+blk_status_t btrfs_submit_compressed_write(struct inode *inode, u64 start,
324324 unsigned long len, u64 disk_start,
325325 unsigned long compressed_len,
326326 struct page **compressed_pages,
@@ -335,13 +335,13 @@ int btrfs_submit_compressed_write(struct inode *inode, u64 start, · 8 unmodified lines
335335 struct page *page;
336336 u64 first_byte = disk_start;
337337 struct block_device *bdev;
338− int ret;
338+ blk_status_t ret;
339339 int skip_sum = BTRFS_I(inode)->flags & BTRFS_INODE_NODATASUM;
340340
341341 WARN_ON(start & ((u64)PAGE_SIZE - 1));
342342 cb = kmalloc(compressed_bio_size(fs_info, compressed_len), GFP_NOFS);
343343 if (!cb)
344− return -ENOMEM;
344+ return BLK_STS_RESOURCE;
345345 refcount_set(&cb->pending_bios, 0);
346346 cb->errors = 0;
347347 cb->inode = inode;
@@ -358,7 +358,7 @@ int btrfs_submit_compressed_write(struct inode *inode, u64 start, · 10 unmodified lines
358358 bio = compressed_bio_alloc(bdev, first_byte, GFP_NOFS);
359359 if (!bio) {
360360 kfree(cb);
361− return -ENOMEM;
361+ return BLK_STS_RESOURCE;
362362 }
363363 bio_set_op_attrs(bio, REQ_OP_WRITE, 0);
364364 bio->bi_private = cb;
@@ -368,17 +368,17 @@ int btrfs_submit_compressed_write(struct inode *inode, u64 start, · 3 unmodified lines
368368 /* create and submit bios for the compressed pages */
369369 bytes_left = compressed_len;
370370 for (pg_index = 0; pg_index < cb->nr_pages; pg_index++) {
371+ int submit = 0;
372+
371373 page = compressed_pages[pg_index];
372374 page->mapping = inode->i_mapping;
373375 if (bio->bi_iter.bi_size)
374− ret = io_tree->ops->merge_bio_hook(page, 0,
376+ submit = io_tree->ops->merge_bio_hook(page, 0,
375377 PAGE_SIZE,
376378 bio, 0);
377− else
378− ret = 0;
379379
380380 page->mapping = NULL;
381− if (ret || bio_add_page(bio, page, PAGE_SIZE, 0) <
381+ if (submit || bio_add_page(bio, page, PAGE_SIZE, 0) <
382382 PAGE_SIZE) {
383383 bio_get(bio);
384384
@@ -400,7 +400,7 @@ int btrfs_submit_compressed_write(struct inode *inode, u64 start, · 15 unmodified lines
400400
401401 ret = btrfs_map_bio(fs_info, bio, 0, 1);
402402 if (ret) {
403− bio->bi_error = ret;
403+ bio->bi_status = ret;
404404 bio_endio(bio);
405405 }
406406
@@ -434,7 +434,7 @@ int btrfs_submit_compressed_write(struct inode *inode, u64 start, · 27 unmodified lines
434434
435435 ret = btrfs_map_bio(fs_info, bio, 0, 1);
436436 if (ret) {
437− bio->bi_error = ret;
437+ bio->bi_status = ret;
438438 bio_endio(bio);
439439 }
440440
@@ -569,7 +569,7 @@ next: · 128 unmodified lines
569569 * After the compressed pages are read, we copy the bytes into the
570570 * bio we were passed and then call the bio end_io calls
571571 */
572−int btrfs_submit_compressed_read(struct inode *inode, struct bio *bio,
572+blk_status_t btrfs_submit_compressed_read(struct inode *inode, struct bio *bio,
573573 int mirror_num, unsigned long bio_flags)
574574 {
575575 struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
@@ -586,7 +586,7 @@ int btrfs_submit_compressed_read(struct inode *inode, struct bio *bio, · 10 unmodified lines
586586 u64 em_len;
587587 u64 em_start;
588588 struct extent_map *em;
589− int ret = -ENOMEM;
589+ blk_status_t ret = BLK_STS_RESOURCE;
590590 int faili = 0;
591591 u32 *sums;
592592
@@ -600,7 +600,7 @@ int btrfs_submit_compressed_read(struct inode *inode, struct bio *bio, · 7 unmodified lines
600600 PAGE_SIZE);
601601 read_unlock(&em_tree->lock);
602602 if (!em)
603− return -EIO;
603+ return BLK_STS_IOERR;
604604
605605 compressed_len = em->block_len;
606606 cb = kmalloc(compressed_bio_size(fs_info, compressed_len), GFP_NOFS);
@@ -659,19 +659,19 @@ int btrfs_submit_compressed_read(struct inode *inode, struct bio *bio, · 52 unmodified lines
659659 refcount_set(&cb->pending_bios, 1);
660660
661661 for (pg_index = 0; pg_index < nr_pages; pg_index++) {
662+ int submit = 0;
663+
662664 page = cb->compressed_pages[pg_index];
663665 page->mapping = inode->i_mapping;
664666 page->index = em_start >> PAGE_SHIFT;
665667
666668 if (comp_bio->bi_iter.bi_size)
667− ret = tree->ops->merge_bio_hook(page, 0,
669+ submit = tree->ops->merge_bio_hook(page, 0,
668670 PAGE_SIZE,
669671 comp_bio, 0);
670− else
671− ret = 0;
672672
673673 page->mapping = NULL;
674− if (ret || bio_add_page(comp_bio, page, PAGE_SIZE, 0) <
674+ if (submit || bio_add_page(comp_bio, page, PAGE_SIZE, 0) <
675675 PAGE_SIZE) {
676676 bio_get(comp_bio);
677677
@@ -697,7 +697,7 @@ int btrfs_submit_compressed_read(struct inode *inode, struct bio *bio, · 19 unmodified lines
697697
698698 ret = btrfs_map_bio(fs_info, comp_bio, mirror_num, 0);
699699 if (ret) {
700− comp_bio->bi_error = ret;
700+ comp_bio->bi_status = ret;
701701 bio_endio(comp_bio);
702702 }
703703
@@ -726,7 +726,7 @@ int btrfs_submit_compressed_read(struct inode *inode, struct bio *bio, · 22 unmodified lines
726726
727727 ret = btrfs_map_bio(fs_info, comp_bio, mirror_num, 0);
728728 if (ret) {
729− comp_bio->bi_error = ret;
729+ comp_bio->bi_status = ret;
730730 bio_endio(comp_bio);
731731 }
732732
fs/btrfs/compression.h+2−2
@@ -48,12 +48,12 @@ int btrfs_decompress_buf2page(const char *buf, unsigned long buf_start, · 47 unmodified lines
4848 unsigned long total_out, u64 disk_start,
4949 struct bio *bio);
5050
51−int btrfs_submit_compressed_write(struct inode *inode, u64 start,
51+blk_status_t btrfs_submit_compressed_write(struct inode *inode, u64 start,
5252 unsigned long len, u64 disk_start,
5353 unsigned long compressed_len,
5454 struct page **compressed_pages,
5555 unsigned long nr_pages);
56−int btrfs_submit_compressed_read(struct inode *inode, struct bio *bio,
56+blk_status_t btrfs_submit_compressed_read(struct inode *inode, struct bio *bio,
5757 int mirror_num, unsigned long bio_flags);
5858
5959 enum btrfs_compression_type {
fs/btrfs/ctree.h+3−3
@@ -3078,8 +3078,8 @@ int btrfs_find_name_in_ext_backref(struct btrfs_path *path, · 3077 unmodified lines
30783078 struct btrfs_dio_private;
30793079 int btrfs_del_csums(struct btrfs_trans_handle *trans,
30803080 struct btrfs_fs_info *fs_info, u64 bytenr, u64 len);
3081−int btrfs_lookup_bio_sums(struct inode *inode, struct bio *bio, u32 *dst);
3082−int btrfs_lookup_bio_sums_dio(struct inode *inode, struct bio *bio,
3081+blk_status_t btrfs_lookup_bio_sums(struct inode *inode, struct bio *bio, u32 *dst);
3082+blk_status_t btrfs_lookup_bio_sums_dio(struct inode *inode, struct bio *bio,
30833083 u64 logical_offset);
30843084 int btrfs_insert_file_extent(struct btrfs_trans_handle *trans,
30853085 struct btrfs_root *root,
@@ -3094,7 +3094,7 @@ int btrfs_lookup_file_extent(struct btrfs_trans_handle *trans, · 8 unmodified lines
30943094 int btrfs_csum_file_blocks(struct btrfs_trans_handle *trans,
30953095 struct btrfs_root *root,
30963096 struct btrfs_ordered_sum *sums);
3097−int btrfs_csum_one_bio(struct inode *inode, struct bio *bio,
3097+blk_status_t btrfs_csum_one_bio(struct inode *inode, struct bio *bio,
30983098 u64 file_start, int contig);
30993099 int btrfs_lookup_csums_range(struct btrfs_root *root, u64 start, u64 end,
31003100 struct list_head *list, int search_commit);
fs/btrfs/disk-io.c+37−38
@@ -87,7 +87,7 @@ struct btrfs_end_io_wq { · 86 unmodified lines
8787 bio_end_io_t *end_io;
8888 void *private;
8989 struct btrfs_fs_info *info;
90− int error;
90+ blk_status_t status;
9191 enum btrfs_wq_endio_type metadata;
9292 struct list_head list;
9393 struct btrfs_work work;
@@ -131,7 +131,7 @@ struct async_submit_bio { · 37 unmodified lines
131131 */
132132 u64 bio_offset;
133133 struct btrfs_work work;
134− int error;
134+ blk_status_t status;
135135 };
136136
137137 /*
@@ -799,7 +799,7 @@ static void end_workqueue_bio(struct bio *bio) · 661 unmodified lines
799799 btrfs_work_func_t func;
800800
801801 fs_info = end_io_wq->info;
802− end_io_wq->error = bio->bi_error;
802+ end_io_wq->status = bio->bi_status;
803803
804804 if (bio_op(bio) == REQ_OP_WRITE) {
805805 if (end_io_wq->metadata == BTRFS_WQ_ENDIO_METADATA) {
@@ -836,19 +836,19 @@ static void end_workqueue_bio(struct bio *bio) · 30 unmodified lines
836836 btrfs_queue_work(wq, &end_io_wq->work);
837837 }
838838
839−int btrfs_bio_wq_end_io(struct btrfs_fs_info *info, struct bio *bio,
839+blk_status_t btrfs_bio_wq_end_io(struct btrfs_fs_info *info, struct bio *bio,
840840 enum btrfs_wq_endio_type metadata)
841841 {
842842 struct btrfs_end_io_wq *end_io_wq;
843843
844844 end_io_wq = kmem_cache_alloc(btrfs_end_io_wq_cache, GFP_NOFS);
845845 if (!end_io_wq)
846− return -ENOMEM;
846+ return BLK_STS_RESOURCE;
847847
848848 end_io_wq->private = bio->bi_private;
849849 end_io_wq->end_io = bio->bi_end_io;
850850 end_io_wq->info = info;
851− end_io_wq->error = 0;
851+ end_io_wq->status = 0;
852852 end_io_wq->bio = bio;
853853 end_io_wq->metadata = metadata;
854854
@@ -868,14 +868,14 @@ unsigned long btrfs_async_submit_limit(struct btrfs_fs_info *info) · 13 unmodified lines
868868 static void run_one_async_start(struct btrfs_work *work)
869869 {
870870 struct async_submit_bio *async;
871− int ret;
871+ blk_status_t ret;
872872
873873 async = container_of(work, struct async_submit_bio, work);
874874 ret = async->submit_bio_start(async->inode, async->bio,
875875 async->mirror_num, async->bio_flags,
876876 async->bio_offset);
877877 if (ret)
878− async->error = ret;
878+ async->status = ret;
879879 }
880880
881881 static void run_one_async_done(struct btrfs_work *work)
@@ -898,8 +898,8 @@ static void run_one_async_done(struct btrfs_work *work) · 16 unmodified lines
898898 wake_up(&fs_info->async_submit_wait);
899899
900900 /* If an error occurred we just want to clean up the bio and move on */
901− if (async->error) {
902− async->bio->bi_error = async->error;
901+ if (async->status) {
902+ async->bio->bi_status = async->status;
903903 bio_endio(async->bio);
904904 return;
905905 }
@@ -916,18 +916,17 @@ static void run_one_async_free(struct btrfs_work *work) · 10 unmodified lines
916916 kfree(async);
917917 }
918918
919−int btrfs_wq_submit_bio(struct btrfs_fs_info *fs_info, struct inode *inode,
920− struct bio *bio, int mirror_num,
921− unsigned long bio_flags,
922− u64 bio_offset,
923− extent_submit_bio_hook_t *submit_bio_start,
924− extent_submit_bio_hook_t *submit_bio_done)
919+blk_status_t btrfs_wq_submit_bio(struct btrfs_fs_info *fs_info,
920+ struct inode *inode, struct bio *bio, int mirror_num,
921+ unsigned long bio_flags, u64 bio_offset,
922+ extent_submit_bio_hook_t *submit_bio_start,
923+ extent_submit_bio_hook_t *submit_bio_done)
925924 {
926925 struct async_submit_bio *async;
927926
928927 async = kmalloc(sizeof(*async), GFP_NOFS);
929928 if (!async)
930− return -ENOMEM;
929+ return BLK_STS_RESOURCE;
931930
932931 async->inode = inode;
933932 async->bio = bio;
@@ -941,7 +940,7 @@ int btrfs_wq_submit_bio(struct btrfs_fs_info *fs_info, struct inode *inode, · 7 unmodified lines
941940 async->bio_flags = bio_flags;
942941 async->bio_offset = bio_offset;
943942
944− async->error = 0;
943+ async->status = 0;
945944
946945 atomic_inc(&fs_info->nr_async_submits);
947946
@@ -959,7 +958,7 @@ int btrfs_wq_submit_bio(struct btrfs_fs_info *fs_info, struct inode *inode, · 11 unmodified lines
959958 return 0;
960959 }
961960
962−static int btree_csum_one_bio(struct bio *bio)
961+static blk_status_t btree_csum_one_bio(struct bio *bio)
963962 {
964963 struct bio_vec *bvec;
965964 struct btrfs_root *root;
@@ -972,12 +971,12 @@ static int btree_csum_one_bio(struct bio *bio) · 6 unmodified lines
972971 break;
973972 }
974973
975− return ret;
974+ return errno_to_blk_status(ret);
976975 }
977976
978−static int __btree_submit_bio_start(struct inode *inode, struct bio *bio,
979− int mirror_num, unsigned long bio_flags,
980− u64 bio_offset)
977+static blk_status_t __btree_submit_bio_start(struct inode *inode,
978+ struct bio *bio, int mirror_num, unsigned long bio_flags,
979+ u64 bio_offset)
981980 {
982981 /*
983982 * when we're called for a write, we're already in the async
@@ -986,11 +985,11 @@ static int __btree_submit_bio_start(struct inode *inode, struct bio *bio, · 2 unmodified lines
986985 return btree_csum_one_bio(bio);
987986 }
988987
989−static int __btree_submit_bio_done(struct inode *inode, struct bio *bio,
990− int mirror_num, unsigned long bio_flags,
991− u64 bio_offset)
988+static blk_status_t __btree_submit_bio_done(struct inode *inode,
989+ struct bio *bio, int mirror_num, unsigned long bio_flags,
990+ u64 bio_offset)
992991 {
993− int ret;
992+ blk_status_t ret;
994993
995994 /*
996995 * when we're called for a write, we're already in the async
@@ -998,7 +997,7 @@ static int __btree_submit_bio_done(struct inode *inode, struct bio *bio, · 1 unmodified line
998997 */
999998 ret = btrfs_map_bio(btrfs_sb(inode->i_sb), bio, mirror_num, 1);
1000999 if (ret) {
1001− bio->bi_error = ret;
1000+ bio->bi_status = ret;
10021001 bio_endio(bio);
10031002 }
10041003 return ret;
@@ -1015,13 +1014,13 @@ static int check_async_write(unsigned long bio_flags) · 10 unmodified lines
10151014 return 1;
10161015 }
10171016
1018−static int btree_submit_bio_hook(struct inode *inode, struct bio *bio,
1017+static blk_status_t btree_submit_bio_hook(struct inode *inode, struct bio *bio,
10191018 int mirror_num, unsigned long bio_flags,
10201019 u64 bio_offset)
10211020 {
10221021 struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
10231022 int async = check_async_write(bio_flags);
1024− int ret;
1023+ blk_status_t ret;
10251024
10261025 if (bio_op(bio) != REQ_OP_WRITE) {
10271026 /*
@@ -1054,7 +1053,7 @@ static int btree_submit_bio_hook(struct inode *inode, struct bio *bio, · 26 unmodified lines
10541053 return 0;
10551054
10561055 out_w_error:
1057− bio->bi_error = ret;
1056+ bio->bi_status = ret;
10581057 bio_endio(bio);
10591058 return ret;
10601059 }
@@ -1820,7 +1819,7 @@ static void end_workqueue_fn(struct btrfs_work *work) · 759 unmodified lines
18201819 end_io_wq = container_of(work, struct btrfs_end_io_wq, work);
18211820 bio = end_io_wq->bio;
18221821
1823− bio->bi_error = end_io_wq->error;
1822+ bio->bi_status = end_io_wq->status;
18241823 bio->bi_private = end_io_wq->private;
18251824 bio->bi_end_io = end_io_wq->end_io;
18261825 kmem_cache_free(btrfs_end_io_wq_cache, end_io_wq);
@@ -3495,11 +3494,11 @@ static void btrfs_end_empty_barrier(struct bio *bio) · 1668 unmodified lines
34953494 * any device where the flush fails with eopnotsupp are flagged as not-barrier
34963495 * capable
34973496 */
3498−static int write_dev_flush(struct btrfs_device *device, int wait)
3497+static blk_status_t write_dev_flush(struct btrfs_device *device, int wait)
34993498 {
35003499 struct request_queue *q = bdev_get_queue(device->bdev);
35013500 struct bio *bio;
3502− int ret = 0;
3501+ blk_status_t ret = 0;
35033502
35043503 if (!test_bit(QUEUE_FLAG_WC, &q->queue_flags))
35053504 return 0;
@@ -3511,8 +3510,8 @@ static int write_dev_flush(struct btrfs_device *device, int wait) · 5 unmodified lines
35113510
35123511 wait_for_completion(&device->flush_wait);
35133512
3514− if (bio->bi_error) {
3515− ret = bio->bi_error;
3513+ if (bio->bi_status) {
3514+ ret = bio->bi_status;
35163515 btrfs_dev_stat_inc_and_print(device,
35173516 BTRFS_DEV_STAT_FLUSH_ERRS);
35183517 }
@@ -3531,7 +3530,7 @@ static int write_dev_flush(struct btrfs_device *device, int wait) · 12 unmodified lines
35313530 device->flush_bio = NULL;
35323531 bio = btrfs_io_bio_alloc(GFP_NOFS, 0);
35333532 if (!bio)
3534− return -ENOMEM;
3533+ return BLK_STS_RESOURCE;
35353534
35363535 bio->bi_end_io = btrfs_end_empty_barrier;
35373536 bio->bi_bdev = device->bdev;
@@ -3556,7 +3555,7 @@ static int barrier_all_devices(struct btrfs_fs_info *info) · 18 unmodified lines
35563555 struct btrfs_device *dev;
35573556 int errors_send = 0;
35583557 int errors_wait = 0;
3559− int ret;
3558+ blk_status_t ret;
35603559
35613560 /* send down all the barriers */
35623561 head = &info->fs_devices->devices;
fs/btrfs/disk-io.h+6−6
@@ -118,13 +118,13 @@ int btrfs_buffer_uptodate(struct extent_buffer *buf, u64 parent_transid, · 117 unmodified lines
118118 int btrfs_read_buffer(struct extent_buffer *buf, u64 parent_transid);
119119 u32 btrfs_csum_data(const char *data, u32 seed, size_t len);
120120 void btrfs_csum_final(u32 crc, u8 *result);
121−int btrfs_bio_wq_end_io(struct btrfs_fs_info *info, struct bio *bio,
121+blk_status_t btrfs_bio_wq_end_io(struct btrfs_fs_info *info, struct bio *bio,
122122 enum btrfs_wq_endio_type metadata);
123−int btrfs_wq_submit_bio(struct btrfs_fs_info *fs_info, struct inode *inode,
124− struct bio *bio, int mirror_num,
125− unsigned long bio_flags, u64 bio_offset,
126− extent_submit_bio_hook_t *submit_bio_start,
127− extent_submit_bio_hook_t *submit_bio_done);
123+blk_status_t btrfs_wq_submit_bio(struct btrfs_fs_info *fs_info,
124+ struct inode *inode, struct bio *bio, int mirror_num,
125+ unsigned long bio_flags, u64 bio_offset,
126+ extent_submit_bio_hook_t *submit_bio_start,
127+ extent_submit_bio_hook_t *submit_bio_done);
128128 unsigned long btrfs_async_submit_limit(struct btrfs_fs_info *info);
129129 int btrfs_write_tree_block(struct extent_buffer *buf);
130130 int btrfs_wait_tree_block_writeback(struct extent_buffer *buf);
fs/btrfs/extent_io.c+13−10
@@ -2399,6 +2399,7 @@ static int bio_readpage_error(struct bio *failed_bio, u64 phy_offset, · 2398 unmodified lines
23992399 struct extent_io_tree *tree = &BTRFS_I(inode)->io_tree;
24002400 struct bio *bio;
24012401 int read_mode = 0;
2402+ blk_status_t status;
24022403 int ret;
24032404
24042405 BUG_ON(bio_op(failed_bio) == REQ_OP_WRITE);
@@ -2431,11 +2432,12 @@ static int bio_readpage_error(struct bio *failed_bio, u64 phy_offset, · 26 unmodified lines
24312432 "Repair Read Error: submitting new read[%#x] to this_mirror=%d, in_validation=%d",
24322433 read_mode, failrec->this_mirror, failrec->in_validation);
24332434
2434− ret = tree->ops->submit_bio_hook(inode, bio, failrec->this_mirror,
2435+ status = tree->ops->submit_bio_hook(inode, bio, failrec->this_mirror,
24352436 failrec->bio_flags, 0);
2436− if (ret) {
2437+ if (status) {
24372438 free_io_failure(BTRFS_I(inode), failrec);
24382439 bio_put(bio);
2440+ ret = blk_status_to_errno(status);
24392441 }
24402442
24412443 return ret;
@@ -2474,6 +2476,7 @@ void end_extent_writepage(struct page *page, int err, u64 start, u64 end) · 32 unmodified lines
24742476 */
24752477 static void end_bio_extent_writepage(struct bio *bio)
24762478 {
2479+ int error = blk_status_to_errno(bio->bi_status);
24772480 struct bio_vec *bvec;
24782481 u64 start;
24792482 u64 end;
@@ -2503,7 +2506,7 @@ static void end_bio_extent_writepage(struct bio *bio) · 23 unmodified lines
25032506 start = page_offset(page);
25042507 end = start + bvec->bv_offset + bvec->bv_len - 1;
25052508
2506− end_extent_writepage(page, bio->bi_error, start, end);
2509+ end_extent_writepage(page, error, start, end);
25072510 end_page_writeback(page);
25082511 }
25092512
@@ -2536,7 +2539,7 @@ endio_readpage_release_extent(struct extent_io_tree *tree, u64 start, u64 len, · 26 unmodified lines
25362539 static void end_bio_extent_readpage(struct bio *bio)
25372540 {
25382541 struct bio_vec *bvec;
2539− int uptodate = !bio->bi_error;
2542+ int uptodate = !bio->bi_status;
25402543 struct btrfs_io_bio *io_bio = btrfs_io_bio(bio);
25412544 struct extent_io_tree *tree;
25422545 u64 offset = 0;
@@ -2556,7 +2559,7 @@ static void end_bio_extent_readpage(struct bio *bio) · 13 unmodified lines
25562559
25572560 btrfs_debug(fs_info,
25582561 "end_bio_extent_readpage: bi_sector=%llu, err=%d, mirror=%u",
2559− (u64)bio->bi_iter.bi_sector, bio->bi_error,
2562+ (u64)bio->bi_iter.bi_sector, bio->bi_status,
25602563 io_bio->mirror_num);
25612564 tree = &BTRFS_I(inode)->io_tree;
25622565
@@ -2615,7 +2618,7 @@ static void end_bio_extent_readpage(struct bio *bio) · 52 unmodified lines
26152618 ret = bio_readpage_error(bio, offset, page,
26162619 start, end, mirror);
26172620 if (ret == 0) {
2618− uptodate = !bio->bi_error;
2621+ uptodate = !bio->bi_status;
26192622 offset += len;
26202623 continue;
26212624 }
@@ -2673,7 +2676,7 @@ readpage_ok: · 51 unmodified lines
26732676 endio_readpage_release_extent(tree, extent_start, extent_len,
26742677 uptodate);
26752678 if (io_bio->end_io)
2676− io_bio->end_io(io_bio, bio->bi_error);
2679+ io_bio->end_io(io_bio, blk_status_to_errno(bio->bi_status));
26772680 bio_put(bio);
26782681 }
26792682
@@ -2743,7 +2746,7 @@ struct bio *btrfs_io_bio_alloc(gfp_t gfp_mask, unsigned int nr_iovecs) · 63 unmodified lines
27432746 static int __must_check submit_one_bio(struct bio *bio, int mirror_num,
27442747 unsigned long bio_flags)
27452748 {
2746− int ret = 0;
2749+ blk_status_t ret = 0;
27472750 struct bio_vec *bvec = bio->bi_io_vec + bio->bi_vcnt - 1;
27482751 struct page *page = bvec->bv_page;
27492752 struct extent_io_tree *tree = bio->bi_private;
@@ -2761,7 +2764,7 @@ static int __must_check submit_one_bio(struct bio *bio, int mirror_num, · 11 unmodified lines
27612764 btrfsic_submit_bio(bio);
27622765
27632766 bio_put(bio);
2764− return ret;
2767+ return blk_status_to_errno(ret);
27652768 }
27662769
27672770 static int merge_bio(struct extent_io_tree *tree, struct page *page,
@@ -3707,7 +3710,7 @@ static void end_bio_extent_buffer_writepage(struct bio *bio) · 939 unmodified lines
37073710 BUG_ON(!eb);
37083711 done = atomic_dec_and_test(&eb->io_pages);
37093712
3710− if (bio->bi_error ||
3713+ if (bio->bi_status ||
37113714 test_bit(EXTENT_BUFFER_WRITE_ERR, &eb->bflags)) {
37123715 ClearPageUptodate(page);
37133716 set_btree_ioerr(page);
fs/btrfs/extent_io.h+3−3
@@ -92,9 +92,9 @@ struct btrfs_inode; · 91 unmodified lines
9292 struct btrfs_io_bio;
9393 struct io_failure_record;
9494
95−typedef int (extent_submit_bio_hook_t)(struct inode *inode, struct bio *bio,
96− int mirror_num, unsigned long bio_flags,
97− u64 bio_offset);
95+typedef blk_status_t (extent_submit_bio_hook_t)(struct inode *inode,
96+ struct bio *bio, int mirror_num, unsigned long bio_flags,
97+ u64 bio_offset);
9898 struct extent_io_ops {
9999 /*
100100 * The following callbacks must be allways defined, the function
fs/btrfs/file-item.c+7−7
@@ -160,7 +160,7 @@ static void btrfs_io_bio_endio_readpage(struct btrfs_io_bio *bio, int err) · 159 unmodified lines
160160 kfree(bio->csum_allocated);
161161 }
162162
163−static int __btrfs_lookup_bio_sums(struct inode *inode, struct bio *bio,
163+static blk_status_t __btrfs_lookup_bio_sums(struct inode *inode, struct bio *bio,
164164 u64 logical_offset, u32 *dst, int dio)
165165 {
166166 struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
@@ -182,7 +182,7 @@ static int __btrfs_lookup_bio_sums(struct inode *inode, struct bio *bio, · 15 unmodified lines
182182
183183 path = btrfs_alloc_path();
184184 if (!path)
185− return -ENOMEM;
185+ return BLK_STS_RESOURCE;
186186
187187 nblocks = bio->bi_iter.bi_size >> inode->i_sb->s_blocksize_bits;
188188 if (!dst) {
@@ -191,7 +191,7 @@ static int __btrfs_lookup_bio_sums(struct inode *inode, struct bio *bio, · 2 unmodified lines
191191 csum_size, GFP_NOFS);
192192 if (!btrfs_bio->csum_allocated) {
193193 btrfs_free_path(path);
194− return -ENOMEM;
194+ return BLK_STS_RESOURCE;
195195 }
196196 btrfs_bio->csum = btrfs_bio->csum_allocated;
197197 btrfs_bio->end_io = btrfs_io_bio_endio_readpage;
@@ -303,12 +303,12 @@ next: · 105 unmodified lines
303303 return 0;
304304 }
305305
306−int btrfs_lookup_bio_sums(struct inode *inode, struct bio *bio, u32 *dst)
306+blk_status_t btrfs_lookup_bio_sums(struct inode *inode, struct bio *bio, u32 *dst)
307307 {
308308 return __btrfs_lookup_bio_sums(inode, bio, 0, dst, 0);
309309 }
310310
311−int btrfs_lookup_bio_sums_dio(struct inode *inode, struct bio *bio, u64 offset)
311+blk_status_t btrfs_lookup_bio_sums_dio(struct inode *inode, struct bio *bio, u64 offset)
312312 {
313313 return __btrfs_lookup_bio_sums(inode, bio, offset, NULL, 1);
314314 }
@@ -433,7 +433,7 @@ fail: · 118 unmodified lines
433433 return ret;
434434 }
435435
436−int btrfs_csum_one_bio(struct inode *inode, struct bio *bio,
436+blk_status_t btrfs_csum_one_bio(struct inode *inode, struct bio *bio,
437437 u64 file_start, int contig)
438438 {
439439 struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
@@ -452,7 +452,7 @@ int btrfs_csum_one_bio(struct inode *inode, struct bio *bio, · 12 unmodified lines
452452 sums = kzalloc(btrfs_ordered_sum_size(fs_info, bio->bi_iter.bi_size),
453453 GFP_NOFS);
454454 if (!sums)
455− return -ENOMEM;
455+ return BLK_STS_RESOURCE;
456456
457457 sums->len = bio->bi_iter.bi_size;
458458 INIT_LIST_HEAD(&sums->list);
fs/btrfs/inode.c+36−37
@@ -842,13 +842,12 @@ retry: · 841 unmodified lines
842842 NULL, EXTENT_LOCKED | EXTENT_DELALLOC,
843843 PAGE_UNLOCK | PAGE_CLEAR_DIRTY |
844844 PAGE_SET_WRITEBACK);
845− ret = btrfs_submit_compressed_write(inode,
845+ if (btrfs_submit_compressed_write(inode,
846846 async_extent->start,
847847 async_extent->ram_size,
848848 ins.objectid,
849849 ins.offset, async_extent->pages,
850− async_extent->nr_pages);
851− if (ret) {
850+ async_extent->nr_pages)) {
852851 struct extent_io_tree *tree = &BTRFS_I(inode)->io_tree;
853852 struct page *p = async_extent->pages[0];
854853 const u64 start = async_extent->start;
@@ -1901,11 +1900,11 @@ int btrfs_merge_bio_hook(struct page *page, unsigned long offset, · 1046 unmodified lines
19011900 * At IO completion time the cums attached on the ordered extent record
19021901 * are inserted into the btree
19031902 */
1904−static int __btrfs_submit_bio_start(struct inode *inode, struct bio *bio,
1905− int mirror_num, unsigned long bio_flags,
1906− u64 bio_offset)
1903+static blk_status_t __btrfs_submit_bio_start(struct inode *inode,
1904+ struct bio *bio, int mirror_num, unsigned long bio_flags,
1905+ u64 bio_offset)
19071906 {
1908− int ret = 0;
1907+ blk_status_t ret = 0;
19091908
19101909 ret = btrfs_csum_one_bio(inode, bio, 0, 0);
19111910 BUG_ON(ret); /* -ENOMEM */
@@ -1920,16 +1919,16 @@ static int __btrfs_submit_bio_start(struct inode *inode, struct bio *bio, · 8 unmodified lines
19201919 * At IO completion time the cums attached on the ordered extent record
19211920 * are inserted into the btree
19221921 */
1923−static int __btrfs_submit_bio_done(struct inode *inode, struct bio *bio,
1924− int mirror_num, unsigned long bio_flags,
1925− u64 bio_offset)
1922+static blk_status_t __btrfs_submit_bio_done(struct inode *inode,
1923+ struct bio *bio, int mirror_num, unsigned long bio_flags,
1924+ u64 bio_offset)
19261925 {
19271926 struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
1928− int ret;
1927+ blk_status_t ret;
19291928
19301929 ret = btrfs_map_bio(fs_info, bio, mirror_num, 1);
19311930 if (ret) {
1932− bio->bi_error = ret;
1931+ bio->bi_status = ret;
19331932 bio_endio(bio);
19341933 }
19351934 return ret;
@@ -1939,14 +1938,14 @@ static int __btrfs_submit_bio_done(struct inode *inode, struct bio *bio, · 3 unmodified lines
19391938 * extent_io.c submission hook. This does the right thing for csum calculation
19401939 * on write, or reading the csums from the tree before a read
19411940 */
1942−static int btrfs_submit_bio_hook(struct inode *inode, struct bio *bio,
1941+static blk_status_t btrfs_submit_bio_hook(struct inode *inode, struct bio *bio,
19431942 int mirror_num, unsigned long bio_flags,
19441943 u64 bio_offset)
19451944 {
19461945 struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
19471946 struct btrfs_root *root = BTRFS_I(inode)->root;
19481947 enum btrfs_wq_endio_type metadata = BTRFS_WQ_ENDIO_DATA;
1949− int ret = 0;
1948+ blk_status_t ret = 0;
19501949 int skip_sum;
19511950 int async = !atomic_read(&BTRFS_I(inode)->sync_writers);
19521951
@@ -1991,8 +1990,8 @@ mapit: · 38 unmodified lines
19911990 ret = btrfs_map_bio(fs_info, bio, mirror_num, 0);
19921991
19931992 out:
1994− if (ret < 0) {
1995− bio->bi_error = ret;
1993+ if (ret) {
1994+ bio->bi_status = ret;
19961995 bio_endio(bio);
19971996 }
19981997 return ret;
@@ -8037,7 +8036,7 @@ static void btrfs_retry_endio_nocsum(struct bio *bio) · 6038 unmodified lines
80378036 struct bio_vec *bvec;
80388037 int i;
80398038
8040− if (bio->bi_error)
8039+ if (bio->bi_status)
80418040 goto end;
80428041
80438042 ASSERT(bio->bi_vcnt == 1);
@@ -8116,7 +8115,7 @@ static void btrfs_retry_endio(struct bio *bio) · 72 unmodified lines
81168115 int ret;
81178116 int i;
81188117
8119− if (bio->bi_error)
8118+ if (bio->bi_status)
81208119 goto end;
81218120
81228121 uptodate = 1;
@@ -8141,8 +8140,8 @@ end: · 18 unmodified lines
81418140 bio_put(bio);
81428141 }
81438142
8144−static int __btrfs_subio_endio_read(struct inode *inode,
8145− struct btrfs_io_bio *io_bio, int err)
8143+static blk_status_t __btrfs_subio_endio_read(struct inode *inode,
8144+ struct btrfs_io_bio *io_bio, blk_status_t err)
81468145 {
81478146 struct btrfs_fs_info *fs_info;
81488147 struct bio_vec *bvec;
@@ -8184,7 +8183,7 @@ try_again: · 35 unmodified lines
81848183 io_bio->mirror_num,
81858184 btrfs_retry_endio, &done);
81868185 if (ret) {
8187− err = ret;
8186+ err = errno_to_blk_status(ret);
81888187 goto next;
81898188 }
81908189
@@ -8211,8 +8210,8 @@ next: · 20 unmodified lines
82118210 return err;
82128211 }
82138212
8214−static int btrfs_subio_endio_read(struct inode *inode,
8215− struct btrfs_io_bio *io_bio, int err)
8213+static blk_status_t btrfs_subio_endio_read(struct inode *inode,
8214+ struct btrfs_io_bio *io_bio, blk_status_t err)
82168215 {
82178216 bool skip_csum = BTRFS_I(inode)->flags & BTRFS_INODE_NODATASUM;
82188217
@@ -8232,7 +8231,7 @@ static void btrfs_endio_direct_read(struct bio *bio) · 13 unmodified lines
82328231 struct inode *inode = dip->inode;
82338232 struct bio *dio_bio;
82348233 struct btrfs_io_bio *io_bio = btrfs_io_bio(bio);
8235− int err = bio->bi_error;
8234+ blk_status_t err = bio->bi_status;
82368235
82378236 if (dip->flags & BTRFS_DIO_ORIG_BIO_SUBMITTED)
82388237 err = btrfs_subio_endio_read(inode, io_bio, err);
@@ -8243,11 +8242,11 @@ static void btrfs_endio_direct_read(struct bio *bio) · 4 unmodified lines
82438242
82448243 kfree(dip);
82458244
8246− dio_bio->bi_error = bio->bi_error;
8245+ dio_bio->bi_status = bio->bi_status;
82478246 dio_end_io(dio_bio);
82488247
82498248 if (io_bio->end_io)
8250− io_bio->end_io(io_bio, err);
8249+ io_bio->end_io(io_bio, blk_status_to_errno(err));
82518250 bio_put(bio);
82528251 }
82538252
@@ -8299,20 +8298,20 @@ static void btrfs_endio_direct_write(struct bio *bio) · 45 unmodified lines
82998298 struct bio *dio_bio = dip->dio_bio;
83008299
83018300 __endio_write_update_ordered(dip->inode, dip->logical_offset,
8302− dip->bytes, !bio->bi_error);
8301+ dip->bytes, !bio->bi_status);
83038302
83048303 kfree(dip);
83058304
8306− dio_bio->bi_error = bio->bi_error;
8305+ dio_bio->bi_status = bio->bi_status;
83078306 dio_end_io(dio_bio);
83088307 bio_put(bio);
83098308 }
83108309
8311−static int __btrfs_submit_bio_start_direct_io(struct inode *inode,
8310+static blk_status_t __btrfs_submit_bio_start_direct_io(struct inode *inode,
83128311 struct bio *bio, int mirror_num,
83138312 unsigned long bio_flags, u64 offset)
83148313 {
8315− int ret;
8314+ blk_status_t ret;
83168315 ret = btrfs_csum_one_bio(inode, bio, offset, 1);
83178316 BUG_ON(ret); /* -ENOMEM */
83188317 return 0;
@@ -8321,7 +8320,7 @@ static int __btrfs_submit_bio_start_direct_io(struct inode *inode, · 2 unmodified lines
83218320 static void btrfs_end_dio_bio(struct bio *bio)
83228321 {
83238322 struct btrfs_dio_private *dip = bio->bi_private;
8324− int err = bio->bi_error;
8323+ blk_status_t err = bio->bi_status;
83258324
83268325 if (err)
83278326 btrfs_warn(BTRFS_I(dip->inode)->root->fs_info,
@@ -8351,7 +8350,7 @@ static void btrfs_end_dio_bio(struct bio *bio) · 23 unmodified lines
83518350 if (dip->errors) {
83528351 bio_io_error(dip->orig_bio);
83538352 } else {
8354− dip->dio_bio->bi_error = 0;
8353+ dip->dio_bio->bi_status = 0;
83558354 bio_endio(dip->orig_bio);
83568355 }
83578356 out:
@@ -8368,14 +8367,14 @@ static struct bio *btrfs_dio_bio_alloc(struct block_device *bdev, · 10 unmodified lines
83688367 return bio;
83698368 }
83708369
8371−static inline int btrfs_lookup_and_bind_dio_csum(struct inode *inode,
8370+static inline blk_status_t btrfs_lookup_and_bind_dio_csum(struct inode *inode,
83728371 struct btrfs_dio_private *dip,
83738372 struct bio *bio,
83748373 u64 file_offset)
83758374 {
83768375 struct btrfs_io_bio *io_bio = btrfs_io_bio(bio);
83778376 struct btrfs_io_bio *orig_io_bio = btrfs_io_bio(dip->orig_bio);
8378− int ret;
8377+ blk_status_t ret;
83798378
83808379 /*
83818380 * We load all the csum data we need when we submit
@@ -8406,7 +8405,7 @@ static inline int __btrfs_submit_dio_bio(struct bio *bio, struct inode *inode, · 24 unmodified lines
84068405 struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
84078406 struct btrfs_dio_private *dip = bio->bi_private;
84088407 bool write = bio_op(bio) == REQ_OP_WRITE;
8409− int ret;
8408+ blk_status_t ret;
84108409
84118410 if (async_submit)
84128411 async_submit = !atomic_read(&BTRFS_I(inode)->sync_writers);
@@ -8649,7 +8648,7 @@ free_ordered: · 236 unmodified lines
86498648 * callbacks - they require an allocated dip and a clone of dio_bio.
86508649 */
86518650 if (io_bio && dip) {
8652− io_bio->bi_error = -EIO;
8651+ io_bio->bi_status = BLK_STS_IOERR;
86538652 bio_endio(io_bio);
86548653 /*
86558654 * The end io callbacks free our dip, do the final put on io_bio
@@ -8668,7 +8667,7 @@ free_ordered: · 12 unmodified lines
86688667 unlock_extent(&BTRFS_I(inode)->io_tree, file_offset,
86698668 file_offset + dio_bio->bi_iter.bi_size - 1);
86708669
8671− dio_bio->bi_error = -EIO;
8670+ dio_bio->bi_status = BLK_STS_IOERR;
86728671 /*
86738672 * Releases and cleans up our dio_bio, no need to bio_put()
86748673 * nor bio_endio()/bio_io_error() against dio_bio.
fs/btrfs/raid56.c+8−8
@@ -871,7 +871,7 @@ static void free_raid_bio(struct btrfs_raid_bio *rbio) · 870 unmodified lines
871871 * this frees the rbio and runs through all the bios in the
872872 * bio_list and calls end_io on them
873873 */
874−static void rbio_orig_end_io(struct btrfs_raid_bio *rbio, int err)
874+static void rbio_orig_end_io(struct btrfs_raid_bio *rbio, blk_status_t err)
875875 {
876876 struct bio *cur = bio_list_get(&rbio->bio_list);
877877 struct bio *next;
@@ -884,7 +884,7 @@ static void rbio_orig_end_io(struct btrfs_raid_bio *rbio, int err) · 6 unmodified lines
884884 while (cur) {
885885 next = cur->bi_next;
886886 cur->bi_next = NULL;
887− cur->bi_error = err;
887+ cur->bi_status = err;
888888 bio_endio(cur);
889889 cur = next;
890890 }
@@ -897,7 +897,7 @@ static void rbio_orig_end_io(struct btrfs_raid_bio *rbio, int err) · 6 unmodified lines
897897 static void raid_write_end_io(struct bio *bio)
898898 {
899899 struct btrfs_raid_bio *rbio = bio->bi_private;
900− int err = bio->bi_error;
900+ blk_status_t err = bio->bi_status;
901901 int max_errors;
902902
903903 if (err)
@@ -914,7 +914,7 @@ static void raid_write_end_io(struct bio *bio) · 10 unmodified lines
914914 max_errors = (rbio->operation == BTRFS_RBIO_PARITY_SCRUB) ?
915915 0 : rbio->bbio->max_errors;
916916 if (atomic_read(&rbio->error) > max_errors)
917− err = -EIO;
917+ err = BLK_STS_IOERR;
918918
919919 rbio_orig_end_io(rbio, err);
920920 }
@@ -1092,7 +1092,7 @@ static int rbio_add_io_page(struct btrfs_raid_bio *rbio, · 171 unmodified lines
10921092 * devices or if they are not contiguous
10931093 */
10941094 if (last_end == disk_start && stripe->dev->bdev &&
1095− !last->bi_error &&
1095+ !last->bi_status &&
10961096 last->bi_bdev == stripe->dev->bdev) {
10971097 ret = bio_add_page(last, page, PAGE_SIZE, 0);
10981098 if (ret == PAGE_SIZE)
@@ -1448,7 +1448,7 @@ static void raid_rmw_end_io(struct bio *bio) · 349 unmodified lines
14481448 {
14491449 struct btrfs_raid_bio *rbio = bio->bi_private;
14501450
1451− if (bio->bi_error)
1451+ if (bio->bi_status)
14521452 fail_bio_stripe(rbio, bio);
14531453 else
14541454 set_bio_pages_uptodate(bio);
@@ -1991,7 +1991,7 @@ static void raid_recover_end_io(struct bio *bio) · 536 unmodified lines
19911991 * we only read stripe pages off the disk, set them
19921992 * up to date if there were no errors
19931993 */
1994− if (bio->bi_error)
1994+ if (bio->bi_status)
19951995 fail_bio_stripe(rbio, bio);
19961996 else
19971997 set_bio_pages_uptodate(bio);
@@ -2530,7 +2530,7 @@ static void raid56_parity_scrub_end_io(struct bio *bio) · 532 unmodified lines
25302530 {
25312531 struct btrfs_raid_bio *rbio = bio->bi_private;
25322532
2533− if (bio->bi_error)
2533+ if (bio->bi_status)
25342534 fail_bio_stripe(rbio, bio);
25352535 else
25362536 set_bio_pages_uptodate(bio);
fs/btrfs/scrub.c+13−13
@@ -95,7 +95,7 @@ struct scrub_bio { · 94 unmodified lines
9595 struct scrub_ctx *sctx;
9696 struct btrfs_device *dev;
9797 struct bio *bio;
98− int err;
98+ blk_status_t status;
9999 u64 logical;
100100 u64 physical;
101101 #if SCRUB_PAGES_PER_WR_BIO >= SCRUB_PAGES_PER_RD_BIO
@@ -1668,14 +1668,14 @@ leave_nomem: · 1566 unmodified lines
16681668
16691669 struct scrub_bio_ret {
16701670 struct completion event;
1671− int error;
1671+ blk_status_t status;
16721672 };
16731673
16741674 static void scrub_bio_wait_endio(struct bio *bio)
16751675 {
16761676 struct scrub_bio_ret *ret = bio->bi_private;
16771677
1678− ret->error = bio->bi_error;
1678+ ret->status = bio->bi_status;
16791679 complete(&ret->event);
16801680 }
16811681
@@ -1693,7 +1693,7 @@ static int scrub_submit_raid56_bio_wait(struct btrfs_fs_info *fs_info, · 11 unmodified lines
16931693 int ret;
16941694
16951695 init_completion(&done.event);
1696− done.error = 0;
1696+ done.status = 0;
16971697 bio->bi_iter.bi_sector = page->logical >> 9;
16981698 bio->bi_private = &done;
16991699 bio->bi_end_io = scrub_bio_wait_endio;
@@ -1705,7 +1705,7 @@ static int scrub_submit_raid56_bio_wait(struct btrfs_fs_info *fs_info, · 5 unmodified lines
17051705 return ret;
17061706
17071707 wait_for_completion(&done.event);
1708− if (done.error)
1708+ if (done.status)
17091709 return -EIO;
17101710
17111711 return 0;
@@ -1937,7 +1937,7 @@ again: · 225 unmodified lines
19371937 bio->bi_bdev = sbio->dev->bdev;
19381938 bio->bi_iter.bi_sector = sbio->physical >> 9;
19391939 bio_set_op_attrs(bio, REQ_OP_WRITE, 0);
1940− sbio->err = 0;
1940+ sbio->status = 0;
19411941 } else if (sbio->physical + sbio->page_count * PAGE_SIZE !=
19421942 spage->physical_for_dev_replace ||
19431943 sbio->logical + sbio->page_count * PAGE_SIZE !=
@@ -1992,7 +1992,7 @@ static void scrub_wr_bio_end_io(struct bio *bio) · 48 unmodified lines
19921992 struct scrub_bio *sbio = bio->bi_private;
19931993 struct btrfs_fs_info *fs_info = sbio->dev->fs_info;
19941994
1995− sbio->err = bio->bi_error;
1995+ sbio->status = bio->bi_status;
19961996 sbio->bio = bio;
19971997
19981998 btrfs_init_work(&sbio->work, btrfs_scrubwrc_helper,
@@ -2007,7 +2007,7 @@ static void scrub_wr_bio_end_io_worker(struct btrfs_work *work) · 8 unmodified lines
20072007 int i;
20082008
20092009 WARN_ON(sbio->page_count > SCRUB_PAGES_PER_WR_BIO);
2010− if (sbio->err) {
2010+ if (sbio->status) {
20112011 struct btrfs_dev_replace *dev_replace =
20122012 &sbio->sctx->fs_info->dev_replace;
20132013
@@ -2341,7 +2341,7 @@ again: · 327 unmodified lines
23412341 bio->bi_bdev = sbio->dev->bdev;
23422342 bio->bi_iter.bi_sector = sbio->physical >> 9;
23432343 bio_set_op_attrs(bio, REQ_OP_READ, 0);
2344− sbio->err = 0;
2344+ sbio->status = 0;
23452345 } else if (sbio->physical + sbio->page_count * PAGE_SIZE !=
23462346 spage->physical ||
23472347 sbio->logical + sbio->page_count * PAGE_SIZE !=
@@ -2377,7 +2377,7 @@ static void scrub_missing_raid56_end_io(struct bio *bio) · 29 unmodified lines
23772377 struct scrub_block *sblock = bio->bi_private;
23782378 struct btrfs_fs_info *fs_info = sblock->sctx->fs_info;
23792379
2380− if (bio->bi_error)
2380+ if (bio->bi_status)
23812381 sblock->no_io_error_seen = 0;
23822382
23832383 bio_put(bio);
@@ -2588,7 +2588,7 @@ static void scrub_bio_end_io(struct bio *bio) · 204 unmodified lines
25882588 struct scrub_bio *sbio = bio->bi_private;
25892589 struct btrfs_fs_info *fs_info = sbio->dev->fs_info;
25902590
2591− sbio->err = bio->bi_error;
2591+ sbio->status = bio->bi_status;
25922592 sbio->bio = bio;
25932593
25942594 btrfs_queue_work(fs_info->scrub_workers, &sbio->work);
@@ -2601,7 +2601,7 @@ static void scrub_bio_end_io_worker(struct btrfs_work *work) · 6 unmodified lines
26012601 int i;
26022602
26032603 BUG_ON(sbio->page_count > SCRUB_PAGES_PER_RD_BIO);
2604− if (sbio->err) {
2604+ if (sbio->status) {
26052605 for (i = 0; i < sbio->page_count; i++) {
26062606 struct scrub_page *spage = sbio->pagev[i];
26072607
@@ -3004,7 +3004,7 @@ static void scrub_parity_bio_endio(struct bio *bio) · 396 unmodified lines
30043004 struct scrub_parity *sparity = (struct scrub_parity *)bio->bi_private;
30053005 struct btrfs_fs_info *fs_info = sparity->sctx->fs_info;
30063006
3007− if (bio->bi_error)
3007+ if (bio->bi_status)
30083008 bitmap_or(sparity->ebitmap, sparity->ebitmap, sparity->dbitmap,
30093009 sparity->nsectors);
30103010
fs/btrfs/volumes.c+6−5
@@ -6042,9 +6042,10 @@ static void btrfs_end_bio(struct bio *bio) · 6041 unmodified lines
60426042 struct btrfs_bio *bbio = bio->bi_private;
60436043 int is_orig_bio = 0;
60446044
6045− if (bio->bi_error) {
6045+ if (bio->bi_status) {
60466046 atomic_inc(&bbio->error);
6047− if (bio->bi_error == -EIO || bio->bi_error == -EREMOTEIO) {
6047+ if (bio->bi_status == BLK_STS_IOERR ||
6048+ bio->bi_status == BLK_STS_TARGET) {
60486049 unsigned int stripe_index =
60496050 btrfs_io_bio(bio)->stripe_index;
60506051 struct btrfs_device *dev;
@@ -6082,13 +6083,13 @@ static void btrfs_end_bio(struct bio *bio) · 31 unmodified lines
60826083 * beyond the tolerance of the btrfs bio
60836084 */
60846085 if (atomic_read(&bbio->error) > bbio->max_errors) {
6085− bio->bi_error = -EIO;
6086+ bio->bi_status = BLK_STS_IOERR;
60866087 } else {
60876088 /*
60886089 * this bio is actually up to date, we didn't
60896090 * go over the max number of errors
60906091 */
6091− bio->bi_error = 0;
6092+ bio->bi_status = 0;
60926093 }
60936094
60946095 btrfs_end_bbio(bbio, bio);
@@ -6199,7 +6200,7 @@ static void bbio_error(struct btrfs_bio *bbio, struct bio *bio, u64 logical) · 104 unmodified lines
61996200
62006201 btrfs_io_bio(bio)->mirror_num = bbio->mirror_num;
62016202 bio->bi_iter.bi_sector = logical >> 9;
6202− bio->bi_error = -EIO;
6203+ bio->bi_status = BLK_STS_IOERR;
62036204 btrfs_end_bbio(bbio, bio);
62046205 }
62056206 }
fs/buffer.c+1−1
@@ -3038,7 +3038,7 @@ static void end_bio_bh_io_sync(struct bio *bio) · 3037 unmodified lines
30383038 if (unlikely(bio_flagged(bio, BIO_QUIET)))
30393039 set_bit(BH_Quiet, &bh->b_state);
30403040
3041− bh->b_end_io(bh, !bio->bi_error);
3041+ bh->b_end_io(bh, !bio->bi_status);
30423042 bio_put(bio);
30433043 }
30443044
fs/crypto/bio.c+1−1
@@ -129,7 +129,7 @@ int fscrypt_zeroout_range(const struct inode *inode, pgoff_t lblk, · 128 unmodified lines
129129 goto errout;
130130 }
131131 err = submit_bio_wait(bio);
132− if ((err == 0) && bio->bi_error)
132+ if (err == 0 && bio->bi_status)
133133 err = -EIO;
134134 bio_put(bio);
135135 if (err)
fs/direct-io.c+4−4
@@ -294,7 +294,7 @@ static void dio_aio_complete_work(struct work_struct *work) · 293 unmodified lines
294294 dio_complete(dio, 0, true);
295295 }
296296
297−static int dio_bio_complete(struct dio *dio, struct bio *bio);
297+static blk_status_t dio_bio_complete(struct dio *dio, struct bio *bio);
298298
299299 /*
300300 * Asynchronous IO callback.
@@ -473,11 +473,11 @@ static struct bio *dio_await_one(struct dio *dio) · 172 unmodified lines
473473 /*
474474 * Process one completed BIO. No locks are held.
475475 */
476−static int dio_bio_complete(struct dio *dio, struct bio *bio)
476+static blk_status_t dio_bio_complete(struct dio *dio, struct bio *bio)
477477 {
478478 struct bio_vec *bvec;
479479 unsigned i;
480− int err = bio->bi_error;
480+ blk_status_t err = bio->bi_status;
481481
482482 if (err)
483483 dio->io_error = -EIO;
@@ -536,7 +536,7 @@ static inline int dio_bio_reap(struct dio *dio, struct dio_submit *sdio) · 52 unmodified lines
536536 bio = dio->bio_list;
537537 dio->bio_list = bio->bi_private;
538538 spin_unlock_irqrestore(&dio->bio_lock, flags);
539− ret2 = dio_bio_complete(dio, bio);
539+ ret2 = blk_status_to_errno(dio_bio_complete(dio, bio));
540540 if (ret == 0)
541541 ret = ret2;
542542 }
fs/ext4/page-io.c+7−6
@@ -85,7 +85,7 @@ static void ext4_finish_bio(struct bio *bio) · 84 unmodified lines
8585 }
8686 #endif
8787
88− if (bio->bi_error) {
88+ if (bio->bi_status) {
8989 SetPageError(page);
9090 mapping_set_error(page->mapping, -EIO);
9191 }
@@ -104,7 +104,7 @@ static void ext4_finish_bio(struct bio *bio) · 12 unmodified lines
104104 continue;
105105 }
106106 clear_buffer_async_write(bh);
107− if (bio->bi_error)
107+ if (bio->bi_status)
108108 buffer_io_error(bh);
109109 } while ((bh = bh->b_this_page) != head);
110110 bit_spin_unlock(BH_Uptodate_Lock, &head->b_state);
@@ -303,24 +303,25 @@ static void ext4_end_bio(struct bio *bio) · 192 unmodified lines
303303 bdevname(bio->bi_bdev, b),
304304 (long long) bio->bi_iter.bi_sector,
305305 (unsigned) bio_sectors(bio),
306− bio->bi_error)) {
306+ bio->bi_status)) {
307307 ext4_finish_bio(bio);
308308 bio_put(bio);
309309 return;
310310 }
311311 bio->bi_end_io = NULL;
312312
313− if (bio->bi_error) {
313+ if (bio->bi_status) {
314314 struct inode *inode = io_end->inode;
315315
316316 ext4_warning(inode->i_sb, "I/O error %d writing to inode %lu "
317317 "(offset %llu size %ld starting block %llu)",
318− bio->bi_error, inode->i_ino,
318+ bio->bi_status, inode->i_ino,
319319 (unsigned long long) io_end->offset,
320320 (long) io_end->size,
321321 (unsigned long long)
322322 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));
324325 }
325326
326327 if (io_end->flag & EXT4_IO_END_UNWRITTEN) {
fs/ext4/readpage.c+2−2
@@ -73,7 +73,7 @@ static void mpage_end_io(struct bio *bio) · 72 unmodified lines
7373 int i;
7474
7575 if (ext4_bio_encrypted(bio)) {
76− if (bio->bi_error) {
76+ if (bio->bi_status) {
7777 fscrypt_release_ctx(bio->bi_private);
7878 } else {
7979 fscrypt_decrypt_bio_pages(bio->bi_private, bio);
@@ -83,7 +83,7 @@ static void mpage_end_io(struct bio *bio) · 3 unmodified lines
8383 bio_for_each_segment_all(bv, bio, i) {
8484 struct page *page = bv->bv_page;
8585
86− if (!bio->bi_error) {
86+ if (!bio->bi_status) {
8787 SetPageUptodate(page);
8888 } else {
8989 ClearPageUptodate(page);
fs/f2fs/data.c+5−5
@@ -58,12 +58,12 @@ static void f2fs_read_end_io(struct bio *bio) · 57 unmodified lines
5858 #ifdef CONFIG_F2FS_FAULT_INJECTION
5959 if (time_to_inject(F2FS_P_SB(bio->bi_io_vec->bv_page), FAULT_IO)) {
6060 f2fs_show_injection_info(FAULT_IO);
61− bio->bi_error = -EIO;
61+ bio->bi_status = BLK_STS_IOERR;
6262 }
6363 #endif
6464
6565 if (f2fs_bio_encrypted(bio)) {
66− if (bio->bi_error) {
66+ if (bio->bi_status) {
6767 fscrypt_release_ctx(bio->bi_private);
6868 } else {
6969 fscrypt_decrypt_bio_pages(bio->bi_private, bio);
@@ -74,7 +74,7 @@ static void f2fs_read_end_io(struct bio *bio) · 4 unmodified lines
7474 bio_for_each_segment_all(bvec, bio, i) {
7575 struct page *page = bvec->bv_page;
7676
77− if (!bio->bi_error) {
77+ if (!bio->bi_status) {
7878 if (!PageUptodate(page))
7979 SetPageUptodate(page);
8080 } else {
@@ -102,14 +102,14 @@ static void f2fs_write_end_io(struct bio *bio) · 21 unmodified lines
102102 unlock_page(page);
103103 mempool_free(page, sbi->write_io_dummy);
104104
105− if (unlikely(bio->bi_error))
105+ if (unlikely(bio->bi_status))
106106 f2fs_stop_checkpoint(sbi, true);
107107 continue;
108108 }
109109
110110 fscrypt_pullback_bio_page(&page, true);
111111
112− if (unlikely(bio->bi_error)) {
112+ if (unlikely(bio->bi_status)) {
113113 mapping_set_error(page->mapping, -EIO);
114114 f2fs_stop_checkpoint(sbi, true);
115115 }
fs/f2fs/segment.c+1−1
@@ -749,7 +749,7 @@ static void f2fs_submit_discard_endio(struct bio *bio) · 748 unmodified lines
749749 {
750750 struct discard_cmd *dc = (struct discard_cmd *)bio->bi_private;
751751
752− dc->error = bio->bi_error;
752+ dc->error = blk_status_to_errno(bio->bi_status);
753753 dc->state = D_DONE;
754754 complete(&dc->wait);
755755 bio_put(bio);
fs/gfs2/lops.c+4−4
@@ -170,7 +170,7 @@ static u64 gfs2_log_bmap(struct gfs2_sbd *sdp) · 169 unmodified lines
170170 */
171171
172172 static void gfs2_end_log_write_bh(struct gfs2_sbd *sdp, struct bio_vec *bvec,
173− int error)
173+ blk_status_t error)
174174 {
175175 struct buffer_head *bh, *next;
176176 struct page *page = bvec->bv_page;
@@ -209,13 +209,13 @@ static void gfs2_end_log_write(struct bio *bio) · 32 unmodified lines
209209 struct page *page;
210210 int i;
211211
212− if (bio->bi_error)
213− fs_err(sdp, "Error %d writing to log\n", bio->bi_error);
212+ if (bio->bi_status)
213+ fs_err(sdp, "Error %d writing to log\n", bio->bi_status);
214214
215215 bio_for_each_segment_all(bvec, bio, i) {
216216 page = bvec->bv_page;
217217 if (page_has_buffers(page))
218− gfs2_end_log_write_bh(sdp, bvec, bio->bi_error);
218+ gfs2_end_log_write_bh(sdp, bvec, bio->bi_status);
219219 else
220220 mempool_free(page, gfs2_page_pool);
221221 }
fs/gfs2/meta_io.c+1−1
@@ -201,7 +201,7 @@ static void gfs2_meta_read_endio(struct bio *bio) · 200 unmodified lines
201201 do {
202202 struct buffer_head *next = bh->b_this_page;
203203 len -= bh->b_size;
204− bh->b_end_io(bh, !bio->bi_error);
204+ bh->b_end_io(bh, !bio->bi_status);
205205 bh = next;
206206 } while (bh && len);
207207 }
fs/gfs2/ops_fstype.c+2−2
@@ -176,10 +176,10 @@ static void end_bio_io_page(struct bio *bio) · 175 unmodified lines
176176 {
177177 struct page *page = bio->bi_private;
178178
179− if (!bio->bi_error)
179+ if (!bio->bi_status)
180180 SetPageUptodate(page);
181181 else
182− pr_warn("error %d reading superblock\n", bio->bi_error);
182+ pr_warn("error %d reading superblock\n", bio->bi_status);
183183 unlock_page(page);
184184 }
185185
fs/iomap.c+2−2
@@ -672,8 +672,8 @@ static void iomap_dio_bio_end_io(struct bio *bio) · 671 unmodified lines
672672 struct iomap_dio *dio = bio->bi_private;
673673 bool should_dirty = (dio->flags & IOMAP_DIO_DIRTY);
674674
675− if (bio->bi_error)
676− iomap_dio_set_error(dio, bio->bi_error);
675+ if (bio->bi_status)
676+ iomap_dio_set_error(dio, blk_status_to_errno(bio->bi_status));
677677
678678 if (atomic_dec_and_test(&dio->ref)) {
679679 if (is_sync_kiocb(dio->iocb)) {
fs/jfs/jfs_logmgr.c+1−1
@@ -2205,7 +2205,7 @@ static void lbmIODone(struct bio *bio) · 2204 unmodified lines
22052205
22062206 bp->l_flag |= lbmDONE;
22072207
2208− if (bio->bi_error) {
2208+ if (bio->bi_status) {
22092209 bp->l_flag |= lbmERROR;
22102210
22112211 jfs_err("lbmIODone: I/O error in JFS log");
fs/jfs/jfs_metapage.c+2−2
@@ -280,7 +280,7 @@ static void metapage_read_end_io(struct bio *bio) · 279 unmodified lines
280280 {
281281 struct page *page = bio->bi_private;
282282
283− if (bio->bi_error) {
283+ if (bio->bi_status) {
284284 printk(KERN_ERR "metapage_read_end_io: I/O error\n");
285285 SetPageError(page);
286286 }
@@ -337,7 +337,7 @@ static void metapage_write_end_io(struct bio *bio) · 50 unmodified lines
337337
338338 BUG_ON(!PagePrivate(page));
339339
340− if (bio->bi_error) {
340+ if (bio->bi_status) {
341341 printk(KERN_ERR "metapage_write_end_io: I/O error\n");
342342 SetPageError(page);
343343 }
fs/mpage.c+2−1
@@ -50,7 +50,8 @@ static void mpage_end_io(struct bio *bio) · 49 unmodified lines
5050
5151 bio_for_each_segment_all(bv, bio, i) {
5252 struct page *page = bv->bv_page;
53− page_endio(page, op_is_write(bio_op(bio)), bio->bi_error);
53+ page_endio(page, op_is_write(bio_op(bio)),
54+ blk_status_to_errno(bio->bi_status));
5455 }
5556
5657 bio_put(bio);
fs/nfs/blocklayout/blocklayout.c+2−2
@@ -188,7 +188,7 @@ static void bl_end_io_read(struct bio *bio) · 187 unmodified lines
188188 {
189189 struct parallel_io *par = bio->bi_private;
190190
191− if (bio->bi_error) {
191+ if (bio->bi_status) {
192192 struct nfs_pgio_header *header = par->data;
193193
194194 if (!header->pnfs_error)
@@ -319,7 +319,7 @@ static void bl_end_io_write(struct bio *bio) · 124 unmodified lines
319319 struct parallel_io *par = bio->bi_private;
320320 struct nfs_pgio_header *header = par->data;
321321
322− if (bio->bi_error) {
322+ if (bio->bi_status) {
323323 if (!header->pnfs_error)
324324 header->pnfs_error = -EIO;
325325 pnfs_set_lo_fail(header->lseg);
fs/nilfs2/segbuf.c+1−1
@@ -338,7 +338,7 @@ static void nilfs_end_bio_write(struct bio *bio) · 337 unmodified lines
338338 {
339339 struct nilfs_segment_buffer *segbuf = bio->bi_private;
340340
341− if (bio->bi_error)
341+ if (bio->bi_status)
342342 atomic_inc(&segbuf->sb_err);
343343
344344 bio_put(bio);
fs/ocfs2/cluster/heartbeat.c+3−3
@@ -516,9 +516,9 @@ static void o2hb_bio_end_io(struct bio *bio) · 515 unmodified lines
516516 {
517517 struct o2hb_bio_wait_ctxt *wc = bio->bi_private;
518518
519− if (bio->bi_error) {
520− mlog(ML_ERROR, "IO Error %d\n", bio->bi_error);
521− wc->wc_error = bio->bi_error;
519+ if (bio->bi_status) {
520+ mlog(ML_ERROR, "IO Error %d\n", bio->bi_status);
521+ wc->wc_error = blk_status_to_errno(bio->bi_status);
522522 }
523523
524524 o2hb_bio_wait_dec(wc, 1);
fs/xfs/xfs_aops.c+4−3
@@ -276,7 +276,7 @@ xfs_end_io( · 275 unmodified lines
276276 struct xfs_inode *ip = XFS_I(ioend->io_inode);
277277 xfs_off_t offset = ioend->io_offset;
278278 size_t size = ioend->io_size;
279− int error = ioend->io_bio->bi_error;
279+ int error;
280280
281281 /*
282282 * Just clean up the in-memory strutures if the fs has been shut down.
@@ -289,6 +289,7 @@ xfs_end_io( · 6 unmodified lines
289289 /*
290290 * Clean up any COW blocks on an I/O error.
291291 */
292+ error = blk_status_to_errno(ioend->io_bio->bi_status);
292293 if (unlikely(error)) {
293294 switch (ioend->io_type) {
294295 case XFS_IO_COW:
@@ -332,7 +333,7 @@ xfs_end_bio( · 37 unmodified lines
332333 else if (ioend->io_append_trans)
333334 queue_work(mp->m_data_workqueue, &ioend->io_work);
334335 else
335− xfs_destroy_ioend(ioend, bio->bi_error);
336+ xfs_destroy_ioend(ioend, blk_status_to_errno(bio->bi_status));
336337 }
337338
338339 STATIC int
@@ -500,7 +501,7 @@ xfs_submit_ioend( · 161 unmodified lines
500501 * time.
501502 */
502503 if (status) {
503− ioend->io_bio->bi_error = status;
504+ ioend->io_bio->bi_status = errno_to_blk_status(status);
504505 bio_endio(ioend->io_bio);
505506 return status;
506507 }
fs/xfs/xfs_buf.c+5−2
@@ -1213,8 +1213,11 @@ xfs_buf_bio_end_io( · 1212 unmodified lines
12131213 * don't overwrite existing errors - otherwise we can lose errors on
12141214 * buffers that require multiple bios to complete.
12151215 */
1216− if (bio->bi_error)
1217− cmpxchg(&bp->b_io_error, 0, bio->bi_error);
1216+ if (bio->bi_status) {
1217+ int error = blk_status_to_errno(bio->bi_status);
1218+
1219+ cmpxchg(&bp->b_io_error, 0, error);
1220+ }
12181221
12191222 if (!bp->b_error && xfs_buf_is_vmapped(bp) && (bp->b_flags & XBF_READ))
12201223 invalidate_kernel_vmap_range(bp->b_addr, xfs_buf_vmap_len(bp));
include/linux/bio.h+1−1
@@ -414,7 +414,7 @@ extern void bio_endio(struct bio *); · 413 unmodified lines
414414
415415 static inline void bio_io_error(struct bio *bio)
416416 {
417− bio->bi_error = -EIO;
417+ bio->bi_status = BLK_STS_IOERR;
418418 bio_endio(bio);
419419 }
420420
include/linux/blk_types.h+4−1
@@ -33,6 +33,9 @@ typedef u8 __bitwise blk_status_t; · 32 unmodified lines
3333 #define BLK_STS_RESOURCE ((__force blk_status_t)9)
3434 #define BLK_STS_IOERR ((__force blk_status_t)10)
3535
36+/* hack for device mapper, don't use elsewhere: */
37+#define BLK_STS_DM_REQUEUE ((__force blk_status_t)11)
38+
3639 struct blk_issue_stat {
3740 u64 stat;
3841 };
@@ -44,7 +47,7 @@ struct blk_issue_stat { · 5 unmodified lines
4447 struct bio {
4548 struct bio *bi_next; /* request queue link */
4649 struct block_device *bi_bdev;
47− int bi_error;
50+ blk_status_t bi_status;
4851 unsigned int bi_opf; /* bottom bits req flags,
4952 * top bits REQ_OP. Use
5053 * accessors.
include/linux/blkdev.h+1−1
@@ -1782,7 +1782,7 @@ struct blk_integrity_iter { · 1781 unmodified lines
17821782 const char *disk_name;
17831783 };
17841784
1785−typedef int (integrity_processing_fn) (struct blk_integrity_iter *);
1785+typedef blk_status_t (integrity_processing_fn) (struct blk_integrity_iter *);
17861786
17871787 struct blk_integrity_profile {
17881788 integrity_processing_fn *generate_fn;
include/linux/device-mapper.h+1−1
@@ -72,7 +72,7 @@ typedef void (*dm_release_clone_request_fn) (struct request *clone); · 71 unmodified lines
7272 * 2 : The target wants to push back the io
7373 */
7474 typedef int (*dm_endio_fn) (struct dm_target *ti,
75− struct bio *bio, int *error);
75+ struct bio *bio, blk_status_t *error);
7676 typedef int (*dm_request_endio_fn) (struct dm_target *ti,
7777 struct request *clone, blk_status_t error,
7878 union map_info *map_context);
kernel/power/swap.c+7−7
@@ -225,14 +225,14 @@ static struct block_device *hib_resume_bdev; · 224 unmodified lines
225225 struct hib_bio_batch {
226226 atomic_t count;
227227 wait_queue_head_t wait;
228− int error;
228+ blk_status_t error;
229229 };
230230
231231 static void hib_init_batch(struct hib_bio_batch *hb)
232232 {
233233 atomic_set(&hb->count, 0);
234234 init_waitqueue_head(&hb->wait);
235− hb->error = 0;
235+ hb->error = BLK_STS_OK;
236236 }
237237
238238 static void hib_end_io(struct bio *bio)
@@ -240,7 +240,7 @@ static void hib_end_io(struct bio *bio) · 1 unmodified line
240240 struct hib_bio_batch *hb = bio->bi_private;
241241 struct page *page = bio->bi_io_vec[0].bv_page;
242242
243− if (bio->bi_error) {
243+ if (bio->bi_status) {
244244 printk(KERN_ALERT "Read-error on swap-device (%u:%u:%Lu)\n",
245245 imajor(bio->bi_bdev->bd_inode),
246246 iminor(bio->bi_bdev->bd_inode),
@@ -253,8 +253,8 @@ static void hib_end_io(struct bio *bio) · 6 unmodified lines
253253 flush_icache_range((unsigned long)page_address(page),
254254 (unsigned long)page_address(page) + PAGE_SIZE);
255255
256− if (bio->bi_error && !hb->error)
257− hb->error = bio->bi_error;
256+ if (bio->bi_status && !hb->error)
257+ hb->error = bio->bi_status;
258258 if (atomic_dec_and_test(&hb->count))
259259 wake_up(&hb->wait);
260260
@@ -293,10 +293,10 @@ static int hib_submit_io(int op, int op_flags, pgoff_t page_off, void *addr, · 32 unmodified lines
293293 return error;
294294 }
295295
296−static int hib_wait_io(struct hib_bio_batch *hb)
296+static blk_status_t hib_wait_io(struct hib_bio_batch *hb)
297297 {
298298 wait_event(hb->wait, atomic_read(&hb->count) == 0);
299− return hb->error;
299+ return blk_status_to_errno(hb->error);
300300 }
301301
302302 /*
kernel/trace/blktrace.c+2−2
@@ -867,7 +867,7 @@ static void blk_add_trace_split(void *ignore, · 866 unmodified lines
867867
868868 __blk_add_trace(bt, bio->bi_iter.bi_sector,
869869 bio->bi_iter.bi_size, bio_op(bio), bio->bi_opf,
870− BLK_TA_SPLIT, bio->bi_error, sizeof(rpdu),
870+ BLK_TA_SPLIT, bio->bi_status, sizeof(rpdu),
871871 &rpdu);
872872 }
873873 }
@@ -900,7 +900,7 @@ static void blk_add_trace_bio_remap(void *ignore, · 26 unmodified lines
900900 r.sector_from = cpu_to_be64(from);
901901
902902 __blk_add_trace(bt, bio->bi_iter.bi_sector, bio->bi_iter.bi_size,
903− bio_op(bio), bio->bi_opf, BLK_TA_REMAP, bio->bi_error,
903+ bio_op(bio), bio->bi_opf, BLK_TA_REMAP, bio->bi_status,
904904 sizeof(r), &r);
905905 }
906906
mm/page_io.c+2−2
@@ -45,7 +45,7 @@ void end_swap_bio_write(struct bio *bio) · 44 unmodified lines
4545 {
4646 struct page *page = bio->bi_io_vec[0].bv_page;
4747
48− if (bio->bi_error) {
48+ if (bio->bi_status) {
4949 SetPageError(page);
5050 /*
5151 * We failed to write the page out to swap-space.
@@ -118,7 +118,7 @@ static void end_swap_bio_read(struct bio *bio) · 66 unmodified lines
118118 {
119119 struct page *page = bio->bi_io_vec[0].bv_page;
120120
121− if (bio->bi_error) {
121+ if (bio->bi_status) {
122122 SetPageError(page);
123123 ClearPageUptodate(page);
124124 pr_alert("Read-error on swap-device (%u:%u:%llu)\n",