Revert "blktap2: Use RING_COPY_REQUEST"
authorJan Beulich <jbeulich@suse.com>
Thu, 12 May 2016 12:24:39 +0000 (14:24 +0200)
committerJan Beulich <jbeulich@suse.com>
Thu, 12 May 2016 12:24:39 +0000 (14:24 +0200)
This reverts commit 19f6c522a6a9599317ee1d8c4a155d1400d04c89. It
did wrongly get associated with XSA-155, and was (rightfully) never
backported to any of the stable trees. See also
http://lists.xenproject.org/archives/html/xen-devel/2016-03/msg00571.html.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Wei Liu <wei.liu2@citrix.com>
Acked-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Release-acked-by: Wei Liu <wei.liu2@citrix.com>
tools/blktap2/drivers/block-log.c
tools/blktap2/drivers/tapdisk-vbd.c

index 5f3bd3598c6227532d168bc1bdf6a4049d8bb003..5330cdc4363937ffab96e5879c8162d2d51b68fc 100644 (file)
@@ -494,12 +494,11 @@ static int ctl_kick(struct tdlog_state* s, int fd)
   reqstart = s->bring.req_cons;
   reqend = s->sring->req_prod;
 
-  xen_mb();
   BDPRINTF("ctl: ring kicked (start = %u, end = %u)", reqstart, reqend);
 
   while (reqstart != reqend) {
     /* XXX actually submit these! */
-    RING_COPY_REQUEST(&s->bring, reqstart, &req);
+    memcpy(&req, RING_GET_REQUEST(&s->bring, reqstart), sizeof(req));
     BDPRINTF("ctl: read request %"PRIu64":%u", req.sector, req.count);
     s->bring.req_cons = ++reqstart;
 
index e2e9cd5bc9e0dc9a41444b0af9b5ce4b284294ce..fd4999a5ec3ce234c269da88b9a886111f6f6772 100644 (file)
@@ -1555,7 +1555,7 @@ tapdisk_vbd_pull_ring_requests(td_vbd_t *vbd)
        int idx;
        RING_IDX rp, rc;
        td_ring_t *ring;
-       blkif_request_t req;
+       blkif_request_t *req;
        td_vbd_request_t *vreq;
 
        ring = &vbd->ring;
@@ -1566,16 +1566,16 @@ tapdisk_vbd_pull_ring_requests(td_vbd_t *vbd)
        xen_rmb();
 
        for (rc = ring->fe_ring.req_cons; rc != rp; rc++) {
-               RING_COPY_REQUEST(&ring->fe_ring, rc, &req);
+               req = RING_GET_REQUEST(&ring->fe_ring, rc);
                ++ring->fe_ring.req_cons;
 
-               idx  = req.id;
+               idx  = req->id;
                vreq = &vbd->request_list[idx];
 
                ASSERT(list_empty(&vreq->next));
                ASSERT(vreq->secs_pending == 0);
 
-               memcpy(&vreq->req, &req, sizeof(blkif_request_t));
+               memcpy(&vreq->req, req, sizeof(blkif_request_t));
                vbd->received++;
                vreq->vbd = vbd;