From c794aed063d1101ecc76e49780952b6d27ae933f Mon Sep 17 00:00:00 2001
From: Jeffrey Cody <jcody@redhat.com>
Date: Wed, 21 Mar 2012 21:54:35 +0100
Subject: [PATCH 08/55] Revert "qed: add support for copy-on-read"

RH-Author: Jeffrey Cody <jcody@redhat.com>
Message-id: <3902d452314bbfbaeb2a43e1bd38c299c98a2c8d.1332362400.git.jcody@redhat.com>
Patchwork-id: 38858
O-Subject: [RHEL6.3 qemu-kvm PATCH v8 08/54] Revert "qed: add support for copy-on-read"
Bugzilla: 582475
RH-Acked-by: Paolo Bonzini <pbonzini@redhat.com>
RH-Acked-by: Marcelo Tosatti <mtosatti@redhat.com>
RH-Acked-by: Kevin Wolf <kwolf@redhat.com>

From: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>

This reverts commit 0685e8ea85e203facdac1891c6233259864f32aa.

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Signed-off-by: Jeff Cody <jcody@redhat.com>
---
 block/qed.c  |   35 ++---------------------------------
 block/qed.h  |    3 +--
 trace-events |    1 -
 3 files changed, 3 insertions(+), 36 deletions(-)

Signed-off-by: Michal Novotny <minovotn@redhat.com>
---
 block/qed.c  |   35 ++---------------------------------
 block/qed.h  |    3 +--
 trace-events |    1 -
 3 files changed, 3 insertions(+), 36 deletions(-)

diff --git a/block/qed.c b/block/qed.c
index 916ddd6..efb22c5 100644
--- a/block/qed.c
+++ b/block/qed.c
@@ -1173,25 +1173,6 @@ static void qed_aio_write_data(void *opaque, int ret,
 }
 
 /**
- * Copy on read callback
- *
- * Write data from backing file to QED that's been read if CoR is enabled.
- */
-static void qed_copy_on_read_cb(void *opaque, int ret)
-{
-    QEDAIOCB *acb = opaque;
-
-    trace_qed_copy_on_read_cb(acb, ret);
-
-    if (ret < 0) {
-        qed_aio_complete(acb, ret);
-        return;
-    }
-
-    qed_aio_write_alloc(acb);
-}
-
-/**
  * Read data cluster
  *
  * @opaque:     Read request
@@ -1219,7 +1200,6 @@ static void qed_aio_read_data(void *opaque, int ret,
         goto err;
     }
 
-    acb->find_cluster_ret = ret;
     qemu_iovec_copy(&acb->cur_qiov, acb->qiov, acb->qiov_offset, len);
 
     /* Handle zero cluster and backing file reads */
@@ -1228,17 +1208,8 @@ static void qed_aio_read_data(void *opaque, int ret,
         qed_aio_next_io(acb, 0);
         return;
     } else if (ret != QED_CLUSTER_FOUND) {
-        BlockDriverCompletionFunc *cb = qed_aio_next_io;
-
-        if (bs->backing_hd && (acb->flags & QED_AIOCB_COPY_ON_READ)) {
-            if (!qed_start_allocating_write(acb)) {
-                qemu_iovec_reset(&acb->cur_qiov);
-                return; /* wait for current allocating write to complete */
-            }
-            cb = qed_copy_on_read_cb;
-        }
         qed_read_backing_file(s, acb->cur_pos, &acb->cur_qiov,
-                              cb, acb);
+                              qed_aio_next_io, acb);
         return;
     }
 
@@ -1322,9 +1293,7 @@ static BlockDriverAIOCB *bdrv_qed_aio_readv(BlockDriverState *bs,
                                             BlockDriverCompletionFunc *cb,
                                             void *opaque)
 {
-    int flags = bs->copy_on_read ? QED_AIOCB_COPY_ON_READ : 0;
-
-    return qed_aio_setup(bs, sector_num, qiov, nb_sectors, cb, opaque, flags);
+    return qed_aio_setup(bs, sector_num, qiov, nb_sectors, cb, opaque, 0);
 }
 
 static BlockDriverAIOCB *bdrv_qed_aio_writev(BlockDriverState *bs,
diff --git a/block/qed.h b/block/qed.h
index 16f4bd9..dbc00be 100644
--- a/block/qed.h
+++ b/block/qed.h
@@ -124,8 +124,7 @@ typedef struct QEDRequest {
 } QEDRequest;
 
 enum {
-    QED_AIOCB_WRITE = 0x0001,           /* read or write? */
-    QED_AIOCB_COPY_ON_READ = 0x0002,
+    QED_AIOCB_WRITE = 0x0001,       /* read or write? */
 };
 
 typedef struct QEDAIOCB {
diff --git a/trace-events b/trace-events
index bb9f332..95dccd4 100644
--- a/trace-events
+++ b/trace-events
@@ -163,7 +163,6 @@ disable qed_aio_complete(void *s, void *acb, int ret) "s %p acb %p ret %d"
 disable qed_aio_setup(void *s, void *acb, int64_t sector_num, int nb_sectors, void *opaque, int flags) "s %p acb %p sector_num %"PRId64" nb_sectors %d opaque %p flags %#x"
 disable qed_aio_next_io(void *s, void *acb, int ret, uint64_t cur_pos) "s %p acb %p ret %d cur_pos %"PRIu64""
 disable qed_aio_read_data(void *s, void *acb, int ret, uint64_t offset, size_t len) "s %p acb %p ret %d offset %"PRIu64" len %zu"
-disable qed_copy_on_read_cb(void *acb, int ret) "acb %p ret %d"
 disable qed_aio_write_data(void *s, void *acb, int ret, uint64_t offset, size_t len) "s %p acb %p ret %d offset %"PRIu64" len %zu"
 disable qed_aio_write_prefill(void *s, void *acb, uint64_t start, size_t len, uint64_t offset) "s %p acb %p start %"PRIu64" len %zu offset %"PRIu64""
 disable qed_aio_write_postfill(void *s, void *acb, uint64_t start, size_t len, uint64_t offset) "s %p acb %p start %"PRIu64" len %zu offset %"PRIu64""
-- 
1.7.7.6

