Lines Matching refs:cmd

180 static void nbd_requeue_cmd(struct nbd_cmd *cmd)  in nbd_requeue_cmd()  argument
182 struct request *req = blk_mq_rq_from_pdu(cmd); in nbd_requeue_cmd()
184 if (!test_and_set_bit(NBD_CMD_REQUEUED, &cmd->flags)) in nbd_requeue_cmd()
190 static u64 nbd_cmd_handle(struct nbd_cmd *cmd) in nbd_cmd_handle() argument
192 struct request *req = blk_mq_rq_from_pdu(cmd); in nbd_cmd_handle()
194 u64 cookie = cmd->cmd_cookie; in nbd_cmd_handle()
209 static const char *nbdcmd_to_ascii(int cmd) in nbdcmd_to_ascii() argument
211 switch (cmd) { in nbdcmd_to_ascii()
353 struct nbd_cmd *cmd = blk_mq_rq_to_pdu(req); in nbd_complete_rq() local
355 dev_dbg(nbd_to_dev(cmd->nbd), "request %p: %s\n", req, in nbd_complete_rq()
356 cmd->status ? "failed" : "done"); in nbd_complete_rq()
358 blk_mq_end_request(req, cmd->status); in nbd_complete_rq()
417 struct nbd_cmd *cmd = blk_mq_rq_to_pdu(req); in nbd_xmit_timeout() local
418 struct nbd_device *nbd = cmd->nbd; in nbd_xmit_timeout()
421 if (!mutex_trylock(&cmd->lock)) in nbd_xmit_timeout()
424 if (!test_bit(NBD_CMD_INFLIGHT, &cmd->flags)) { in nbd_xmit_timeout()
425 mutex_unlock(&cmd->lock); in nbd_xmit_timeout()
431 cmd->status = BLK_STS_TIMEOUT; in nbd_xmit_timeout()
432 __clear_bit(NBD_CMD_INFLIGHT, &cmd->flags); in nbd_xmit_timeout()
433 mutex_unlock(&cmd->lock); in nbd_xmit_timeout()
450 if (cmd->index < config->num_connections) { in nbd_xmit_timeout()
452 config->socks[cmd->index]; in nbd_xmit_timeout()
460 if (cmd->cookie == nsock->cookie) in nbd_xmit_timeout()
464 mutex_unlock(&cmd->lock); in nbd_xmit_timeout()
465 nbd_requeue_cmd(cmd); in nbd_xmit_timeout()
476 struct nbd_sock *nsock = config->socks[cmd->index]; in nbd_xmit_timeout()
477 cmd->retries++; in nbd_xmit_timeout()
481 blk_rq_bytes(req), (req->timeout / HZ) * cmd->retries); in nbd_xmit_timeout()
484 if (cmd->cookie != nsock->cookie) { in nbd_xmit_timeout()
485 nbd_requeue_cmd(cmd); in nbd_xmit_timeout()
487 mutex_unlock(&cmd->lock); in nbd_xmit_timeout()
492 mutex_unlock(&cmd->lock); in nbd_xmit_timeout()
499 cmd->status = BLK_STS_IOERR; in nbd_xmit_timeout()
500 __clear_bit(NBD_CMD_INFLIGHT, &cmd->flags); in nbd_xmit_timeout()
501 mutex_unlock(&cmd->lock); in nbd_xmit_timeout()
576 static int nbd_send_cmd(struct nbd_device *nbd, struct nbd_cmd *cmd, int index) in nbd_send_cmd() argument
578 struct request *req = blk_mq_rq_from_pdu(cmd); in nbd_send_cmd()
592 lockdep_assert_held(&cmd->lock); in nbd_send_cmd()
620 handle = nbd_cmd_handle(cmd); in nbd_send_cmd()
626 cmd->cmd_cookie++; in nbd_send_cmd()
628 cmd->index = index; in nbd_send_cmd()
629 cmd->cookie = nsock->cookie; in nbd_send_cmd()
630 cmd->retries = 0; in nbd_send_cmd()
636 handle = nbd_cmd_handle(cmd); in nbd_send_cmd()
639 trace_nbd_send_request(&request, nbd->index, blk_mq_rq_from_pdu(cmd)); in nbd_send_cmd()
658 set_bit(NBD_CMD_REQUEUED, &cmd->flags); in nbd_send_cmd()
699 set_bit(NBD_CMD_REQUEUED, &cmd->flags); in nbd_send_cmd()
756 struct nbd_cmd *cmd; in nbd_handle_reply() local
775 cmd = blk_mq_rq_to_pdu(req); in nbd_handle_reply()
777 mutex_lock(&cmd->lock); in nbd_handle_reply()
778 if (!test_bit(NBD_CMD_INFLIGHT, &cmd->flags)) { in nbd_handle_reply()
780 tag, cmd->status, cmd->flags); in nbd_handle_reply()
784 if (cmd->index != index) { in nbd_handle_reply()
786 tag, index, cmd->index); in nbd_handle_reply()
790 if (cmd->cmd_cookie != nbd_handle_to_cookie(handle)) { in nbd_handle_reply()
792 req, cmd->cmd_cookie, nbd_handle_to_cookie(handle)); in nbd_handle_reply()
796 if (cmd->status != BLK_STS_OK) { in nbd_handle_reply()
802 if (test_bit(NBD_CMD_REQUEUED, &cmd->flags)) { in nbd_handle_reply()
811 cmd->status = BLK_STS_IOERR; in nbd_handle_reply()
834 cmd->status = BLK_STS_IOERR; in nbd_handle_reply()
846 mutex_unlock(&cmd->lock); in nbd_handle_reply()
847 return ret ? ERR_PTR(ret) : cmd; in nbd_handle_reply()
859 struct nbd_cmd *cmd; in recv_work() local
880 cmd = nbd_handle_reply(nbd, args->index, &reply); in recv_work()
881 if (IS_ERR(cmd)) { in recv_work()
886 rq = blk_mq_rq_from_pdu(cmd); in recv_work()
890 mutex_lock(&cmd->lock); in recv_work()
892 &cmd->flags); in recv_work()
893 mutex_unlock(&cmd->lock); in recv_work()
912 struct nbd_cmd *cmd = blk_mq_rq_to_pdu(req); in nbd_clear_req() local
918 mutex_lock(&cmd->lock); in nbd_clear_req()
919 if (!__test_and_clear_bit(NBD_CMD_INFLIGHT, &cmd->flags)) { in nbd_clear_req()
920 mutex_unlock(&cmd->lock); in nbd_clear_req()
923 cmd->status = BLK_STS_IOERR; in nbd_clear_req()
924 mutex_unlock(&cmd->lock); in nbd_clear_req()
997 static blk_status_t nbd_handle_cmd(struct nbd_cmd *cmd, int index) in nbd_handle_cmd() argument
999 struct request *req = blk_mq_rq_from_pdu(cmd); in nbd_handle_cmd()
1000 struct nbd_device *nbd = cmd->nbd; in nbd_handle_cmd()
1005 lockdep_assert_held(&cmd->lock); in nbd_handle_cmd()
1020 cmd->status = BLK_STS_OK; in nbd_handle_cmd()
1053 nbd_requeue_cmd(cmd); in nbd_handle_cmd()
1061 ret = nbd_send_cmd(nbd, cmd, index); in nbd_handle_cmd()
1067 __set_bit(NBD_CMD_INFLIGHT, &cmd->flags); in nbd_handle_cmd()
1072 nbd_requeue_cmd(cmd); in nbd_handle_cmd()
1084 struct nbd_cmd *cmd = blk_mq_rq_to_pdu(bd->rq); in nbd_queue_rq() local
1096 mutex_lock(&cmd->lock); in nbd_queue_rq()
1097 clear_bit(NBD_CMD_REQUEUED, &cmd->flags); in nbd_queue_rq()
1104 ret = nbd_handle_cmd(cmd, hctx->queue_num); in nbd_queue_rq()
1105 mutex_unlock(&cmd->lock); in nbd_queue_rq()
1482 unsigned int cmd, unsigned long arg) in __nbd_ioctl() argument
1487 switch (cmd) { in __nbd_ioctl()
1529 unsigned int cmd, unsigned long arg) in nbd_ioctl() argument
1541 if (_IOC_TYPE(cmd) != 0xab) in nbd_ioctl()
1550 (cmd == NBD_DISCONNECT || cmd == NBD_CLEAR_SOCK)) in nbd_ioctl()
1551 error = __nbd_ioctl(bdev, nbd, cmd, arg); in nbd_ioctl()
1777 struct nbd_cmd *cmd = blk_mq_rq_to_pdu(rq); in nbd_init_request() local
1778 cmd->nbd = set->driver_data; in nbd_init_request()
1779 cmd->flags = 0; in nbd_init_request()
1780 mutex_init(&cmd->lock); in nbd_init_request()
2339 .cmd = NBD_CMD_CONNECT,
2344 .cmd = NBD_CMD_DISCONNECT,
2349 .cmd = NBD_CMD_RECONFIGURE,
2354 .cmd = NBD_CMD_STATUS,