Lines Matching refs:req
132 struct p9_req_t *req;
139 while ((req = virtqueue_get_buf(chan->vq, &len)) != NULL) {
146 req->rc.size = len;
147 p9_client_cb(chan->client, req, REQ_STATUS_RCVD);
193 static int p9_virtio_cancel(struct p9_client *client, struct p9_req_t *req)
198 /* Reply won't come, so drop req ref */
199 static int p9_virtio_cancelled(struct p9_client *client, struct p9_req_t *req)
201 p9_req_put(client, req);
250 * @req: request to be issued
255 p9_virtio_request(struct p9_client *client, struct p9_req_t *req)
265 WRITE_ONCE(req->status, REQ_STATUS_SENT);
272 VIRTQUEUE_NUM, req->tc.sdata, req->tc.size);
277 VIRTQUEUE_NUM, req->rc.sdata, req->rc.capacity);
281 err = virtqueue_add_sgs(chan->vq, sgs, out_sgs, in_sgs, req,
380 static void handle_rerror(struct p9_req_t *req, int in_hdr_len,
384 void *to = req->rc.sdata + in_hdr_len;
387 if (req->rc.size < in_hdr_len || !pages)
394 if (unlikely(req->rc.size > P9_ZC_HDR_SZ))
395 req->rc.size = P9_ZC_HDR_SZ;
398 size = req->rc.size - in_hdr_len;
412 * @req: request to be issued
421 p9_virtio_zc_request(struct p9_client *client, struct p9_req_t *req,
448 memcpy(&req->tc.sdata[req->tc.size - 4], &v, 4);
455 sz = cpu_to_le32(req->tc.size + outlen);
456 memcpy(&req->tc.sdata[0], &sz, sizeof(sz));
467 memcpy(&req->tc.sdata[req->tc.size - 4], &v, 4);
471 WRITE_ONCE(req->status, REQ_STATUS_SENT);
479 VIRTQUEUE_NUM, req->tc.sdata, req->tc.size);
498 VIRTQUEUE_NUM, req->rc.sdata, in_hdr_len);
509 err = virtqueue_add_sgs(chan->vq, sgs, out_sgs, in_sgs, req,
534 err = wait_event_killable(req->wq,
535 READ_ONCE(req->status) >= REQ_STATUS_RCVD);
537 if (READ_ONCE(req->status) == REQ_STATUS_RCVD &&
538 unlikely(req->rc.sdata[4] == P9_RERROR))
539 handle_rerror(req, in_hdr_len, offs, in_pages);
561 p9_req_put(client, req);