null_blk: create a helper for req completion
This patch creates a helper function for handling the request completion in the null_handle_cmd(). Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
fceb5d1b19
commit
a3d7d67403
@ -1182,6 +1182,32 @@ static inline blk_status_t null_handle_memory_backed(struct nullb_cmd *cmd,
|
|||||||
return errno_to_blk_status(err);
|
return errno_to_blk_status(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void nullb_complete_cmd(struct nullb_cmd *cmd)
|
||||||
|
{
|
||||||
|
/* Complete IO by inline, softirq or timer */
|
||||||
|
switch (cmd->nq->dev->irqmode) {
|
||||||
|
case NULL_IRQ_SOFTIRQ:
|
||||||
|
switch (cmd->nq->dev->queue_mode) {
|
||||||
|
case NULL_Q_MQ:
|
||||||
|
blk_mq_complete_request(cmd->rq);
|
||||||
|
break;
|
||||||
|
case NULL_Q_BIO:
|
||||||
|
/*
|
||||||
|
* XXX: no proper submitting cpu information available.
|
||||||
|
*/
|
||||||
|
end_cmd(cmd);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case NULL_IRQ_NONE:
|
||||||
|
end_cmd(cmd);
|
||||||
|
break;
|
||||||
|
case NULL_IRQ_TIMER:
|
||||||
|
null_cmd_end_timer(cmd);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static blk_status_t null_handle_cmd(struct nullb_cmd *cmd, sector_t sector,
|
static blk_status_t null_handle_cmd(struct nullb_cmd *cmd, sector_t sector,
|
||||||
sector_t nr_sectors, enum req_opf op)
|
sector_t nr_sectors, enum req_opf op)
|
||||||
{
|
{
|
||||||
@ -1213,28 +1239,7 @@ static blk_status_t null_handle_cmd(struct nullb_cmd *cmd, sector_t sector,
|
|||||||
cmd->error = null_handle_zoned(cmd, op, sector, nr_sectors);
|
cmd->error = null_handle_zoned(cmd, op, sector, nr_sectors);
|
||||||
|
|
||||||
out:
|
out:
|
||||||
/* Complete IO by inline, softirq or timer */
|
nullb_complete_cmd(cmd);
|
||||||
switch (dev->irqmode) {
|
|
||||||
case NULL_IRQ_SOFTIRQ:
|
|
||||||
switch (dev->queue_mode) {
|
|
||||||
case NULL_Q_MQ:
|
|
||||||
blk_mq_complete_request(cmd->rq);
|
|
||||||
break;
|
|
||||||
case NULL_Q_BIO:
|
|
||||||
/*
|
|
||||||
* XXX: no proper submitting cpu information available.
|
|
||||||
*/
|
|
||||||
end_cmd(cmd);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case NULL_IRQ_NONE:
|
|
||||||
end_cmd(cmd);
|
|
||||||
break;
|
|
||||||
case NULL_IRQ_TIMER:
|
|
||||||
null_cmd_end_timer(cmd);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return BLK_STS_OK;
|
return BLK_STS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user