aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/md/dm-integrity.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/md/dm-integrity.c')
-rw-r--r--drivers/md/dm-integrity.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/drivers/md/dm-integrity.c b/drivers/md/dm-integrity.c
index ee78fb471229..ccc6ef4d00b9 100644
--- a/drivers/md/dm-integrity.c
+++ b/drivers/md/dm-integrity.c
@@ -246,7 +246,7 @@ struct dm_integrity_io {
246 unsigned metadata_offset; 246 unsigned metadata_offset;
247 247
248 atomic_t in_flight; 248 atomic_t in_flight;
249 int bi_error; 249 blk_status_t bi_status;
250 250
251 struct completion *completion; 251 struct completion *completion;
252 252
@@ -1114,8 +1114,8 @@ static void submit_flush_bio(struct dm_integrity_c *ic, struct dm_integrity_io *
1114static void do_endio(struct dm_integrity_c *ic, struct bio *bio) 1114static void do_endio(struct dm_integrity_c *ic, struct bio *bio)
1115{ 1115{
1116 int r = dm_integrity_failed(ic); 1116 int r = dm_integrity_failed(ic);
1117 if (unlikely(r) && !bio->bi_error) 1117 if (unlikely(r) && !bio->bi_status)
1118 bio->bi_error = r; 1118 bio->bi_status = errno_to_blk_status(r);
1119 bio_endio(bio); 1119 bio_endio(bio);
1120} 1120}
1121 1121
@@ -1123,7 +1123,7 @@ static void do_endio_flush(struct dm_integrity_c *ic, struct dm_integrity_io *di
1123{ 1123{
1124 struct bio *bio = dm_bio_from_per_bio_data(dio, sizeof(struct dm_integrity_io)); 1124 struct bio *bio = dm_bio_from_per_bio_data(dio, sizeof(struct dm_integrity_io));
1125 1125
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)))
1127 submit_flush_bio(ic, dio); 1127 submit_flush_bio(ic, dio);
1128 else 1128 else
1129 do_endio(ic, bio); 1129 do_endio(ic, bio);
@@ -1142,9 +1142,9 @@ static void dec_in_flight(struct dm_integrity_io *dio)
1142 1142
1143 bio = dm_bio_from_per_bio_data(dio, sizeof(struct dm_integrity_io)); 1143 bio = dm_bio_from_per_bio_data(dio, sizeof(struct dm_integrity_io));
1144 1144
1145 if (unlikely(dio->bi_error) && !bio->bi_error) 1145 if (unlikely(dio->bi_status) && !bio->bi_status)
1146 bio->bi_error = dio->bi_error; 1146 bio->bi_status = dio->bi_status;
1147 if (likely(!bio->bi_error) && unlikely(bio_sectors(bio) != dio->range.n_sectors)) { 1147 if (likely(!bio->bi_status) && unlikely(bio_sectors(bio) != dio->range.n_sectors)) {
1148 dio->range.logical_sector += dio->range.n_sectors; 1148 dio->range.logical_sector += dio->range.n_sectors;
1149 bio_advance(bio, dio->range.n_sectors << SECTOR_SHIFT); 1149 bio_advance(bio, dio->range.n_sectors << SECTOR_SHIFT);
1150 INIT_WORK(&dio->work, integrity_bio_wait); 1150 INIT_WORK(&dio->work, integrity_bio_wait);
@@ -1318,7 +1318,7 @@ skip_io:
1318 dec_in_flight(dio); 1318 dec_in_flight(dio);
1319 return; 1319 return;
1320error: 1320error:
1321 dio->bi_error = r; 1321 dio->bi_status = errno_to_blk_status(r);
1322 dec_in_flight(dio); 1322 dec_in_flight(dio);
1323} 1323}
1324 1324
@@ -1331,7 +1331,7 @@ static int dm_integrity_map(struct dm_target *ti, struct bio *bio)
1331 sector_t area, offset; 1331 sector_t area, offset;
1332 1332
1333 dio->ic = ic; 1333 dio->ic = ic;
1334 dio->bi_error = 0; 1334 dio->bi_status = 0;
1335 1335
1336 if (unlikely(bio->bi_opf & REQ_PREFLUSH)) { 1336 if (unlikely(bio->bi_opf & REQ_PREFLUSH)) {
1337 submit_flush_bio(ic, dio); 1337 submit_flush_bio(ic, dio);