diff options
author | Christoph Hellwig <hch@lst.de> | 2017-06-03 03:38:02 -0400 |
---|---|---|
committer | Jens Axboe <axboe@fb.com> | 2017-06-09 11:27:32 -0400 |
commit | 846785e6a5725de4f0788e78e101961566a77d2a (patch) | |
tree | 4dd5c24f6ebb9e4adb4ab920a6bdd99531e1300c /drivers/md/dm-raid1.c | |
parent | 14ef1e48269dde9b78efe4b112fa78e9ced72bc1 (diff) |
dm: don't return errnos from ->map
Instead use the special DM_MAPIO_KILL return value to return -EIO just
like we do for the request based path. Note that dm-log-writes returned
-ENOMEM in a few places, which now becomes -EIO instead. No consumer
treats -ENOMEM special so this shouldn't be an issue (and it should
use a mempool to start with to make guaranteed progress).
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
Diffstat (limited to 'drivers/md/dm-raid1.c')
-rw-r--r-- | drivers/md/dm-raid1.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/md/dm-raid1.c b/drivers/md/dm-raid1.c index 5e30b08b91d9..d9c0c6a77eb5 100644 --- a/drivers/md/dm-raid1.c +++ b/drivers/md/dm-raid1.c | |||
@@ -1207,14 +1207,14 @@ static int mirror_map(struct dm_target *ti, struct bio *bio) | |||
1207 | 1207 | ||
1208 | r = log->type->in_sync(log, dm_rh_bio_to_region(ms->rh, bio), 0); | 1208 | r = log->type->in_sync(log, dm_rh_bio_to_region(ms->rh, bio), 0); |
1209 | if (r < 0 && r != -EWOULDBLOCK) | 1209 | if (r < 0 && r != -EWOULDBLOCK) |
1210 | return r; | 1210 | return DM_MAPIO_KILL; |
1211 | 1211 | ||
1212 | /* | 1212 | /* |
1213 | * If region is not in-sync queue the bio. | 1213 | * If region is not in-sync queue the bio. |
1214 | */ | 1214 | */ |
1215 | if (!r || (r == -EWOULDBLOCK)) { | 1215 | if (!r || (r == -EWOULDBLOCK)) { |
1216 | if (bio->bi_opf & REQ_RAHEAD) | 1216 | if (bio->bi_opf & REQ_RAHEAD) |
1217 | return -EIO; | 1217 | return DM_MAPIO_KILL; |
1218 | 1218 | ||
1219 | queue_bio(ms, bio, rw); | 1219 | queue_bio(ms, bio, rw); |
1220 | return DM_MAPIO_SUBMITTED; | 1220 | return DM_MAPIO_SUBMITTED; |
@@ -1226,7 +1226,7 @@ static int mirror_map(struct dm_target *ti, struct bio *bio) | |||
1226 | */ | 1226 | */ |
1227 | m = choose_mirror(ms, bio->bi_iter.bi_sector); | 1227 | m = choose_mirror(ms, bio->bi_iter.bi_sector); |
1228 | if (unlikely(!m)) | 1228 | if (unlikely(!m)) |
1229 | return -EIO; | 1229 | return DM_MAPIO_KILL; |
1230 | 1230 | ||
1231 | dm_bio_record(&bio_record->details, bio); | 1231 | dm_bio_record(&bio_record->details, bio); |
1232 | bio_record->m = m; | 1232 | bio_record->m = m; |