null_blk: create a helper for mem-backed ops

This patch creates a helper for handling requests when null_blk is
memory backed in the null_handle_cmd(). Although the helper is very
simple right now, it makes the code flow consistent with the rest of
code in the null_handle_cmd() and provides a uniform code structure
for future code.

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:
Chaitanya Kulkarni 2019-08-22 21:45:17 -07:00 committed by Jens Axboe
parent 8f94d1c1dc
commit 7ea88e229e
1 changed files with 16 additions and 9 deletions

View File

@ -1168,13 +1168,26 @@ static inline blk_status_t null_handle_badblocks(struct nullb_cmd *cmd,
return BLK_STS_OK; return BLK_STS_OK;
} }
static inline blk_status_t null_handle_memory_backed(struct nullb_cmd *cmd,
enum req_opf op)
{
struct nullb_device *dev = cmd->nq->dev;
int err;
if (dev->queue_mode == NULL_Q_BIO)
err = null_handle_bio(cmd);
else
err = null_handle_rq(cmd);
return errno_to_blk_status(err);
}
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)
{ {
struct nullb_device *dev = cmd->nq->dev; struct nullb_device *dev = cmd->nq->dev;
struct nullb *nullb = dev->nullb; struct nullb *nullb = dev->nullb;
blk_status_t sts; blk_status_t sts;
int err = 0;
if (test_bit(NULLB_DEV_FL_THROTTLED, &dev->flags)) { if (test_bit(NULLB_DEV_FL_THROTTLED, &dev->flags)) {
sts = null_handle_throttled(cmd); sts = null_handle_throttled(cmd);
@ -1193,14 +1206,8 @@ static blk_status_t null_handle_cmd(struct nullb_cmd *cmd, sector_t sector,
goto out; goto out;
} }
if (dev->memory_backed) { if (dev->memory_backed)
if (dev->queue_mode == NULL_Q_BIO) cmd->error = null_handle_memory_backed(cmd, op);
err = null_handle_bio(cmd);
else
err = null_handle_rq(cmd);
}
cmd->error = errno_to_blk_status(err);
if (!cmd->error && dev->zoned) { if (!cmd->error && dev->zoned) {
if (op == REQ_OP_WRITE) if (op == REQ_OP_WRITE)