forked from Minki/linux
dm: remove dm_dispatch_clone_request
Fold dm_dispatch_clone_request into it's only caller, and use a switch statement to single dispatch for the handling of the different return values from blk_insert_cloned_request. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Mike Snitzer <snitzer@redhat.com> Link: https://lore.kernel.org/r/20220215100540.3892965-6-hch@lst.de Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
8803c89f36
commit
9f9adea718
@ -303,17 +303,6 @@ static void end_clone_request(struct request *clone, blk_status_t error)
|
||||
dm_complete_request(tio->orig, error);
|
||||
}
|
||||
|
||||
static blk_status_t dm_dispatch_clone_request(struct request *clone, struct request *rq)
|
||||
{
|
||||
blk_status_t r;
|
||||
|
||||
r = blk_insert_cloned_request(clone);
|
||||
if (r != BLK_STS_OK && r != BLK_STS_RESOURCE && r != BLK_STS_DEV_RESOURCE)
|
||||
/* must complete clone in terms of original request */
|
||||
dm_complete_request(rq, r);
|
||||
return r;
|
||||
}
|
||||
|
||||
static int dm_rq_bio_constructor(struct bio *bio, struct bio *bio_orig,
|
||||
void *data)
|
||||
{
|
||||
@ -394,13 +383,20 @@ static int map_request(struct dm_rq_target_io *tio)
|
||||
/* The target has remapped the I/O so dispatch it */
|
||||
trace_block_rq_remap(clone, disk_devt(dm_disk(md)),
|
||||
blk_rq_pos(rq));
|
||||
ret = dm_dispatch_clone_request(clone, rq);
|
||||
if (ret == BLK_STS_RESOURCE || ret == BLK_STS_DEV_RESOURCE) {
|
||||
ret = blk_insert_cloned_request(clone);
|
||||
switch (ret) {
|
||||
case BLK_STS_OK:
|
||||
break;
|
||||
case BLK_STS_RESOURCE:
|
||||
case BLK_STS_DEV_RESOURCE:
|
||||
blk_rq_unprep_clone(clone);
|
||||
blk_mq_cleanup_rq(clone);
|
||||
tio->ti->type->release_clone_rq(clone, &tio->info);
|
||||
tio->clone = NULL;
|
||||
return DM_MAPIO_REQUEUE;
|
||||
default:
|
||||
/* must complete clone in terms of original request */
|
||||
dm_complete_request(rq, ret);
|
||||
}
|
||||
break;
|
||||
case DM_MAPIO_REQUEUE:
|
||||
|
Loading…
Reference in New Issue
Block a user