[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 14/30] qcow: move some blocks of code to avoid usele
From: |
Kevin Wolf |
Subject: |
[Qemu-devel] [PATCH 14/30] qcow: move some blocks of code to avoid useless variable initialization |
Date: |
Mon, 29 Aug 2011 16:53:22 +0200 |
From: Frediano Ziglio <address@hidden>
Signed-off-by: Frediano Ziglio <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>
---
block/qcow.c | 53 ++++++++++++++++++++++++++---------------------------
1 files changed, 26 insertions(+), 27 deletions(-)
diff --git a/block/qcow.c b/block/qcow.c
index 7727604..8c559e2 100644
--- a/block/qcow.c
+++ b/block/qcow.c
@@ -522,35 +522,18 @@ static int qcow_aio_read_cb(QCowAIOCB *acb)
BlockDriverState *bs = acb->bs;
BDRVQcowState *s = bs->opaque;
int index_in_cluster;
- int ret, n = 0;
- uint64_t cluster_offset = 0;
+ int ret, n;
+ uint64_t cluster_offset;
struct iovec hd_iov;
QEMUIOVector hd_qiov;
redo:
- /* post process the read buffer */
- if (!cluster_offset) {
- /* nothing to do */
- } else if (cluster_offset & QCOW_OFLAG_COMPRESSED) {
- /* nothing to do */
- } else {
- if (s->crypt_method) {
- encrypt_sectors(s, acb->sector_num, acb->buf, acb->buf,
- n, 0,
- &s->aes_decrypt_key);
- }
- }
-
- acb->nb_sectors -= n;
- acb->sector_num += n;
- acb->buf += n * 512;
-
if (acb->nb_sectors == 0) {
/* request completed */
return 0;
}
- /* prepare next AIO request */
+ /* prepare next request */
cluster_offset = get_cluster_offset(bs, acb->sector_num << 9,
0, 0, 0, 0);
index_in_cluster = acb->sector_num & (s->cluster_sectors - 1);
@@ -575,7 +558,6 @@ static int qcow_aio_read_cb(QCowAIOCB *acb)
} else {
/* Note: in this case, no need to wait */
memset(acb->buf, 0, 512 * n);
- goto redo;
}
} else if (cluster_offset & QCOW_OFLAG_COMPRESSED) {
/* add AIO support for compressed blocks ? */
@@ -584,7 +566,6 @@ static int qcow_aio_read_cb(QCowAIOCB *acb)
}
memcpy(acb->buf,
s->cluster_cache + index_in_cluster * 512, 512 * n);
- goto redo;
} else {
if ((cluster_offset & 511) != 0) {
return -EIO;
@@ -602,6 +583,23 @@ static int qcow_aio_read_cb(QCowAIOCB *acb)
}
}
+ /* post process the read buffer */
+ if (!cluster_offset) {
+ /* nothing to do */
+ } else if (cluster_offset & QCOW_OFLAG_COMPRESSED) {
+ /* nothing to do */
+ } else {
+ if (s->crypt_method) {
+ encrypt_sectors(s, acb->sector_num, acb->buf, acb->buf,
+ n, 0,
+ &s->aes_decrypt_key);
+ }
+ }
+
+ acb->nb_sectors -= n;
+ acb->sector_num += n;
+ acb->buf += n * 512;
+
goto redo;
}
@@ -633,16 +631,12 @@ static int qcow_aio_write_cb(QCowAIOCB *acb)
int index_in_cluster;
uint64_t cluster_offset;
const uint8_t *src_buf;
- int ret, n = 0;
+ int ret, n;
uint8_t *cluster_data = NULL;
struct iovec hd_iov;
QEMUIOVector hd_qiov;
redo:
- acb->nb_sectors -= n;
- acb->sector_num += n;
- acb->buf += n * 512;
-
if (acb->nb_sectors == 0) {
/* request completed */
return 0;
@@ -685,6 +679,11 @@ redo:
if (ret < 0) {
return ret;
}
+
+ acb->nb_sectors -= n;
+ acb->sector_num += n;
+ acb->buf += n * 512;
+
goto redo;
}
--
1.7.6
- [Qemu-devel] [PATCH 04/30] qcow2: Fix DEBUG_* compilation, (continued)
- [Qemu-devel] [PATCH 04/30] qcow2: Fix DEBUG_* compilation, Kevin Wolf, 2011/08/29
- [Qemu-devel] [PATCH 05/30] qemu-img: Use qemu_blockalign, Kevin Wolf, 2011/08/29
- [Qemu-devel] [PATCH 09/30] block/curl: Handle failed reads gracefully., Kevin Wolf, 2011/08/29
- [Qemu-devel] [PATCH 11/30] posix-aio-compat: fix latency issues, Kevin Wolf, 2011/08/29
- [Qemu-devel] [PATCH 10/30] block: include flush requests in info blockstats, Kevin Wolf, 2011/08/29
- [Qemu-devel] [PATCH 12/30] qcow/qcow2: Allocate QCowAIOCB structure using stack, Kevin Wolf, 2011/08/29
- [Qemu-devel] [PATCH 19/30] qcow2: remove l2meta from QCowAIOCB, Kevin Wolf, 2011/08/29
- [Qemu-devel] [PATCH 13/30] qcow: QCowAIOCB field cleanup, Kevin Wolf, 2011/08/29
- [Qemu-devel] [PATCH 08/30] qemu-img: print error codes when convert fails, Kevin Wolf, 2011/08/29
- [Qemu-devel] [PATCH 15/30] qcow: Remove QCowAIOCB, Kevin Wolf, 2011/08/29
- [Qemu-devel] [PATCH 14/30] qcow: move some blocks of code to avoid useless variable initialization,
Kevin Wolf <=
- [Qemu-devel] [PATCH 20/30] qcow2: remove cluster_offset from QCowAIOCB, Kevin Wolf, 2011/08/29
- [Qemu-devel] [PATCH 21/30] qcow2: remove common from QCowAIOCB, Kevin Wolf, 2011/08/29
- [Qemu-devel] [PATCH 25/30] sheepdog: use coroutines, Kevin Wolf, 2011/08/29
- [Qemu-devel] [PATCH 16/30] qcow: remove old #undefined code, Kevin Wolf, 2011/08/29
- [Qemu-devel] [PATCH 17/30] qcow2: Removed unused AIOCB fields, Kevin Wolf, 2011/08/29
- [Qemu-devel] [PATCH 18/30] qcow2: removed cur_nr_sectors field in QCowAIOCB, Kevin Wolf, 2011/08/29
- [Qemu-devel] [PATCH 22/30] qcow2: reindent and use while before the big jump, Kevin Wolf, 2011/08/29
- [Qemu-devel] [PATCH 23/30] qcow2: Removed QCowAIOCB entirely, Kevin Wolf, 2011/08/29
- [Qemu-devel] [PATCH 30/30] qemu-img: Require larger zero areas for sparse handling, Kevin Wolf, 2011/08/29
- [Qemu-devel] [PATCH 27/30] qcow2: remove unused qcow2_create_refcount_update function, Kevin Wolf, 2011/08/29