trans_virtio.c (0b28330e39bbe0ffee4c56b09fc415fcec595ea3) trans_virtio.c (dc3f5e68f846eec38fb31d78f0b6e83633ad375e)
1/*
2 * The Virtio 9p transport driver
3 *
4 * This is a block based transport driver based on the lguest block driver
5 * code.
6 *
7 * Copyright (C) 2007, 2008 Eric Van Hensbergen, IBM Corporation
8 *

--- 123 unchanged lines hidden (view full) ---

132{
133 struct virtio_chan *chan = vq->vdev->priv;
134 struct p9_fcall *rc;
135 unsigned int len;
136 struct p9_req_t *req;
137
138 P9_DPRINTK(P9_DEBUG_TRANS, ": request done\n");
139
1/*
2 * The Virtio 9p transport driver
3 *
4 * This is a block based transport driver based on the lguest block driver
5 * code.
6 *
7 * Copyright (C) 2007, 2008 Eric Van Hensbergen, IBM Corporation
8 *

--- 123 unchanged lines hidden (view full) ---

132{
133 struct virtio_chan *chan = vq->vdev->priv;
134 struct p9_fcall *rc;
135 unsigned int len;
136 struct p9_req_t *req;
137
138 P9_DPRINTK(P9_DEBUG_TRANS, ": request done\n");
139
140 while ((rc = chan->vq->vq_ops->get_buf(chan->vq, &len)) != NULL) {
140 while ((rc = virtqueue_get_buf(chan->vq, &len)) != NULL) {
141 P9_DPRINTK(P9_DEBUG_TRANS, ": rc %p\n", rc);
142 P9_DPRINTK(P9_DEBUG_TRANS, ": lookup tag %d\n", rc->tag);
143 req = p9_tag_lookup(chan->client, rc->tag);
144 req->status = REQ_STATUS_RCVD;
145 p9_client_cb(chan->client, req);
146 }
147}
148

--- 55 unchanged lines hidden (view full) ---

204
205 out = pack_sg_list(chan->sg, 0, VIRTQUEUE_NUM, req->tc->sdata,
206 req->tc->size);
207 in = pack_sg_list(chan->sg, out, VIRTQUEUE_NUM-out, rdata,
208 client->msize);
209
210 req->status = REQ_STATUS_SENT;
211
141 P9_DPRINTK(P9_DEBUG_TRANS, ": rc %p\n", rc);
142 P9_DPRINTK(P9_DEBUG_TRANS, ": lookup tag %d\n", rc->tag);
143 req = p9_tag_lookup(chan->client, rc->tag);
144 req->status = REQ_STATUS_RCVD;
145 p9_client_cb(chan->client, req);
146 }
147}
148

--- 55 unchanged lines hidden (view full) ---

204
205 out = pack_sg_list(chan->sg, 0, VIRTQUEUE_NUM, req->tc->sdata,
206 req->tc->size);
207 in = pack_sg_list(chan->sg, out, VIRTQUEUE_NUM-out, rdata,
208 client->msize);
209
210 req->status = REQ_STATUS_SENT;
211
212 if (chan->vq->vq_ops->add_buf(chan->vq, chan->sg, out, in, req->tc) < 0) {
212 if (virtqueue_add_buf(chan->vq, chan->sg, out, in, req->tc) < 0) {
213 P9_DPRINTK(P9_DEBUG_TRANS,
214 "9p debug: virtio rpc add_buf returned failure");
215 return -EIO;
216 }
217
213 P9_DPRINTK(P9_DEBUG_TRANS,
214 "9p debug: virtio rpc add_buf returned failure");
215 return -EIO;
216 }
217
218 chan->vq->vq_ops->kick(chan->vq);
218 virtqueue_kick(chan->vq);
219
220 P9_DPRINTK(P9_DEBUG_TRANS, "9p debug: virtio request kicked\n");
221 return 0;
222}
223
224static ssize_t p9_mount_tag_show(struct device *dev,
225 struct device_attribute *attr, char *buf)
226{

--- 203 unchanged lines hidden ---
219
220 P9_DPRINTK(P9_DEBUG_TRANS, "9p debug: virtio request kicked\n");
221 return 0;
222}
223
224static ssize_t p9_mount_tag_show(struct device *dev,
225 struct device_attribute *attr, char *buf)
226{

--- 203 unchanged lines hidden ---