diff options
Diffstat (limited to 'drivers/md/dm-integrity.c')
-rw-r--r-- | drivers/md/dm-integrity.c | 18 |
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 * | |||
1114 | static void do_endio(struct dm_integrity_c *ic, struct bio *bio) | 1114 | static 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; |
1320 | error: | 1320 | error: |
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); |