Commit 1e388ae0 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Jens Axboe

nbd: don't use req->errors

Add a nbd-specific field instead.
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarJosef Bacik <jbacik@fb.com>
Signed-off-by: default avatarJens Axboe <axboe@fb.com>
parent 8fc77980
...@@ -115,6 +115,7 @@ struct nbd_cmd { ...@@ -115,6 +115,7 @@ struct nbd_cmd {
int index; int index;
int cookie; int cookie;
struct completion send_complete; struct completion send_complete;
int status;
}; };
#if IS_ENABLED(CONFIG_DEBUG_FS) #if IS_ENABLED(CONFIG_DEBUG_FS)
...@@ -244,16 +245,14 @@ static void nbd_size_set(struct nbd_device *nbd, loff_t blocksize, ...@@ -244,16 +245,14 @@ static void nbd_size_set(struct nbd_device *nbd, loff_t blocksize,
nbd_size_update(nbd); nbd_size_update(nbd);
} }
static void nbd_end_request(struct nbd_cmd *cmd) static void nbd_complete_rq(struct request *req)
{ {
struct nbd_device *nbd = cmd->nbd; struct nbd_cmd *cmd = blk_mq_rq_to_pdu(req);
struct request *req = blk_mq_rq_from_pdu(cmd);
int error = req->errors ? -EIO : 0;
dev_dbg(nbd_to_dev(nbd), "request %p: %s\n", cmd, dev_dbg(nbd_to_dev(cmd->nbd), "request %p: %s\n", cmd,
error ? "failed" : "done"); cmd->status ? "failed" : "done");
blk_mq_complete_request(req, error); blk_mq_end_request(req, cmd->status);
} }
/* /*
...@@ -286,7 +285,7 @@ static enum blk_eh_timer_return nbd_xmit_timeout(struct request *req, ...@@ -286,7 +285,7 @@ static enum blk_eh_timer_return nbd_xmit_timeout(struct request *req,
struct nbd_config *config; struct nbd_config *config;
if (!refcount_inc_not_zero(&nbd->config_refs)) { if (!refcount_inc_not_zero(&nbd->config_refs)) {
req->errors = -EIO; cmd->status = -EIO;
return BLK_EH_HANDLED; return BLK_EH_HANDLED;
} }
...@@ -331,7 +330,7 @@ static enum blk_eh_timer_return nbd_xmit_timeout(struct request *req, ...@@ -331,7 +330,7 @@ static enum blk_eh_timer_return nbd_xmit_timeout(struct request *req,
"Connection timed out\n"); "Connection timed out\n");
} }
set_bit(NBD_TIMEDOUT, &config->runtime_flags); set_bit(NBD_TIMEDOUT, &config->runtime_flags);
req->errors = -EIO; cmd->status = -EIO;
sock_shutdown(nbd); sock_shutdown(nbd);
nbd_config_put(nbd); nbd_config_put(nbd);
...@@ -574,7 +573,7 @@ static struct nbd_cmd *nbd_read_stat(struct nbd_device *nbd, int index) ...@@ -574,7 +573,7 @@ static struct nbd_cmd *nbd_read_stat(struct nbd_device *nbd, int index)
if (ntohl(reply.error)) { if (ntohl(reply.error)) {
dev_err(disk_to_dev(nbd->disk), "Other side returned error (%d)\n", dev_err(disk_to_dev(nbd->disk), "Other side returned error (%d)\n",
ntohl(reply.error)); ntohl(reply.error));
req->errors = -EIO; cmd->status = -EIO;
return cmd; return cmd;
} }
...@@ -599,7 +598,7 @@ static struct nbd_cmd *nbd_read_stat(struct nbd_device *nbd, int index) ...@@ -599,7 +598,7 @@ static struct nbd_cmd *nbd_read_stat(struct nbd_device *nbd, int index)
*/ */
if (nbd_disconnected(config) || if (nbd_disconnected(config) ||
config->num_connections <= 1) { config->num_connections <= 1) {
req->errors = -EIO; cmd->status = -EIO;
return cmd; return cmd;
} }
return ERR_PTR(-EIO); return ERR_PTR(-EIO);
...@@ -636,7 +635,7 @@ static void recv_work(struct work_struct *work) ...@@ -636,7 +635,7 @@ static void recv_work(struct work_struct *work)
break; break;
} }
nbd_end_request(cmd); blk_mq_complete_request(blk_mq_rq_from_pdu(cmd), 0);
} }
atomic_dec(&config->recv_threads); atomic_dec(&config->recv_threads);
wake_up(&config->recv_wq); wake_up(&config->recv_wq);
...@@ -651,8 +650,8 @@ static void nbd_clear_req(struct request *req, void *data, bool reserved) ...@@ -651,8 +650,8 @@ static void nbd_clear_req(struct request *req, void *data, bool reserved)
if (!blk_mq_request_started(req)) if (!blk_mq_request_started(req))
return; return;
cmd = blk_mq_rq_to_pdu(req); cmd = blk_mq_rq_to_pdu(req);
req->errors = -EIO; cmd->status = -EIO;
nbd_end_request(cmd); blk_mq_complete_request(req, 0);
} }
static void nbd_clear_que(struct nbd_device *nbd) static void nbd_clear_que(struct nbd_device *nbd)
...@@ -740,7 +739,7 @@ static int nbd_handle_cmd(struct nbd_cmd *cmd, int index) ...@@ -740,7 +739,7 @@ static int nbd_handle_cmd(struct nbd_cmd *cmd, int index)
nbd_config_put(nbd); nbd_config_put(nbd);
return -EINVAL; return -EINVAL;
} }
req->errors = 0; cmd->status = 0;
again: again:
nsock = config->socks[index]; nsock = config->socks[index];
mutex_lock(&nsock->tx_lock); mutex_lock(&nsock->tx_lock);
...@@ -1408,6 +1407,7 @@ static int nbd_init_request(void *data, struct request *rq, ...@@ -1408,6 +1407,7 @@ static int nbd_init_request(void *data, struct request *rq,
static const struct blk_mq_ops nbd_mq_ops = { static const struct blk_mq_ops nbd_mq_ops = {
.queue_rq = nbd_queue_rq, .queue_rq = nbd_queue_rq,
.complete = nbd_complete_rq,
.init_request = nbd_init_request, .init_request = nbd_init_request,
.timeout = nbd_xmit_timeout, .timeout = nbd_xmit_timeout,
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment