Lines Matching refs:req
113 static void nbd_end_request(struct nbd_device *nbd, struct request *req) in nbd_end_request() argument
115 int error = req->errors ? -EIO : 0; in nbd_end_request()
116 struct request_queue *q = req->q; in nbd_end_request()
119 dev_dbg(nbd_to_dev(nbd), "request %p: %s\n", req, in nbd_end_request()
123 __blk_end_request_all(req, error); in nbd_end_request()
236 static int nbd_send_req(struct nbd_device *nbd, struct request *req) in nbd_send_req() argument
240 unsigned long size = blk_rq_bytes(req); in nbd_send_req()
243 if (req->cmd_type == REQ_TYPE_DRV_PRIV) in nbd_send_req()
245 else if (req->cmd_flags & REQ_DISCARD) in nbd_send_req()
247 else if (req->cmd_flags & REQ_FLUSH) in nbd_send_req()
249 else if (rq_data_dir(req) == WRITE) in nbd_send_req()
258 request.from = cpu_to_be64((u64)blk_rq_pos(req) << 9); in nbd_send_req()
261 memcpy(request.handle, &req, sizeof(req)); in nbd_send_req()
264 req, nbdcmd_to_ascii(type), in nbd_send_req()
265 (unsigned long long)blk_rq_pos(req) << 9, blk_rq_bytes(req)); in nbd_send_req()
281 rq_for_each_segment(bvec, req, iter) { in nbd_send_req()
286 req, bvec.bv_len); in nbd_send_req()
302 struct request *req, *tmp; in nbd_find_request() local
310 list_for_each_entry_safe(req, tmp, &nbd->queue_head, queuelist) { in nbd_find_request()
311 if (req != xreq) in nbd_find_request()
313 list_del_init(&req->queuelist); in nbd_find_request()
315 return req; in nbd_find_request()
337 struct request *req; in nbd_read_stat() local
353 req = nbd_find_request(nbd, *(struct request **)reply.handle); in nbd_read_stat()
354 if (IS_ERR(req)) { in nbd_read_stat()
355 result = PTR_ERR(req); in nbd_read_stat()
367 req->errors++; in nbd_read_stat()
368 return req; in nbd_read_stat()
371 dev_dbg(nbd_to_dev(nbd), "request %p: got reply\n", req); in nbd_read_stat()
372 if (rq_data_dir(req) != WRITE) { in nbd_read_stat()
376 rq_for_each_segment(bvec, req, iter) { in nbd_read_stat()
381 req->errors++; in nbd_read_stat()
382 return req; in nbd_read_stat()
385 req, bvec.bv_len); in nbd_read_stat()
388 return req; in nbd_read_stat()
407 struct request *req; in nbd_thread_recv() local
431 req = nbd_read_stat(nbd); in nbd_thread_recv()
432 if (IS_ERR(req)) { in nbd_thread_recv()
433 ret = PTR_ERR(req); in nbd_thread_recv()
437 nbd_end_request(nbd, req); in nbd_thread_recv()
461 struct request *req; in nbd_clear_que() local
477 req = list_entry(nbd->queue_head.next, struct request, in nbd_clear_que()
479 list_del_init(&req->queuelist); in nbd_clear_que()
480 req->errors++; in nbd_clear_que()
481 nbd_end_request(nbd, req); in nbd_clear_que()
485 req = list_entry(nbd->waiting_queue.next, struct request, in nbd_clear_que()
487 list_del_init(&req->queuelist); in nbd_clear_que()
488 req->errors++; in nbd_clear_que()
489 nbd_end_request(nbd, req); in nbd_clear_que()
495 static void nbd_handle_req(struct nbd_device *nbd, struct request *req) in nbd_handle_req() argument
497 if (req->cmd_type != REQ_TYPE_FS) in nbd_handle_req()
500 if (rq_data_dir(req) == WRITE && in nbd_handle_req()
507 req->errors = 0; in nbd_handle_req()
517 nbd->active_req = req; in nbd_handle_req()
522 if (nbd_send_req(nbd, req) != 0) { in nbd_handle_req()
524 req->errors++; in nbd_handle_req()
525 nbd_end_request(nbd, req); in nbd_handle_req()
528 list_add_tail(&req->queuelist, &nbd->queue_head); in nbd_handle_req()
539 req->errors++; in nbd_handle_req()
540 nbd_end_request(nbd, req); in nbd_handle_req()
546 struct request *req; in nbd_thread_send() local
576 req = list_entry(nbd->waiting_queue.next, struct request, in nbd_thread_send()
578 list_del_init(&req->queuelist); in nbd_thread_send()
582 nbd_handle_req(nbd, req); in nbd_thread_send()
606 struct request *req; in nbd_request_handler() local
608 while ((req = blk_fetch_request(q)) != NULL) { in nbd_request_handler()
613 nbd = req->rq_disk->private_data; in nbd_request_handler()
618 req, req->cmd_type); in nbd_request_handler()
623 req->errors++; in nbd_request_handler()
624 nbd_end_request(nbd, req); in nbd_request_handler()
630 list_add_tail(&req->queuelist, &nbd->waiting_queue); in nbd_request_handler()