@@ -1015,22 +1015,6 @@ static void dm_complete_request(struct request *clone, int error)
}
/*
- * Complete the not-mapped clone and the original request with the error status
- * through softirq context.
- * Target's rq_end_io() function isn't called.
- * This may be used when the target's map_rq() function fails.
- */
-void dm_kill_unmapped_request(struct request *clone, int error)
-{
- struct dm_rq_target_io *tio = clone->end_io_data;
- struct request *rq = tio->orig;
-
- rq->cmd_flags |= REQ_FAILED;
- dm_complete_request(clone, error);
-}
-EXPORT_SYMBOL_GPL(dm_kill_unmapped_request);
-
-/*
* Called with the queue lock held
*/
static void end_clone_request(struct request *clone, int error)
@@ -1631,7 +1615,8 @@ static int map_request(struct dm_target *ti, struct request *clone,
}
/* The target wants to complete the I/O */
- dm_kill_unmapped_request(clone, r);
+ rq->cmd_flags |= REQ_FAILED;
+ dm_complete_request(clone, r);
break;
}
@@ -1691,11 +1676,12 @@ static void dm_request_fn(struct request_queue *q)
if (!dm_target_is_valid(ti)) {
/*
* Must perform setup, that dm_done() requires,
- * before calling dm_kill_unmapped_request
+ * before calling dm_complete_request
*/
DMERR_LIMIT("request attempted access beyond the end of device");
clone = dm_start_request(md, rq);
- dm_kill_unmapped_request(clone, -EIO);
+ rq->cmd_flags |= REQ_FAILED;
+ dm_complete_request(clone, -EIO);
continue;
}
@@ -604,7 +604,6 @@ static inline unsigned long to_bytes(sector_t n)
*---------------------------------------------------------------*/
void dm_dispatch_request(struct request *rq);
void dm_requeue_unmapped_request(struct request *rq);
-void dm_kill_unmapped_request(struct request *rq, int error);
int dm_underlying_device_busy(struct request_queue *q);
#endif /* _LINUX_DEVICE_MAPPER_H */
Signed-off-by: Hannes Reinecke <hare@suse.de> --- drivers/md/dm.c | 24 +++++------------------- include/linux/device-mapper.h | 1 - 2 files changed, 5 insertions(+), 20 deletions(-)