From c794aed063d1101ecc76e49780952b6d27ae933f Mon Sep 17 00:00:00 2001 From: Jeffrey Cody 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 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 RH-Acked-by: Marcelo Tosatti RH-Acked-by: Kevin Wolf From: Stefan Hajnoczi This reverts commit 0685e8ea85e203facdac1891c6233259864f32aa. Signed-off-by: Anthony Liguori Signed-off-by: Jeff Cody --- block/qed.c | 35 ++--------------------------------- block/qed.h | 3 +-- trace-events | 1 - 3 files changed, 3 insertions(+), 36 deletions(-) Signed-off-by: Michal Novotny --- 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