[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 03/15] qcow: move some blocks of code to avoid us
From: |
Frediano Ziglio |
Subject: |
[Qemu-devel] [PATCH v2 03/15] qcow: move some blocks of code to avoid useless variable initialization |
Date: |
Tue, 9 Aug 2011 09:46:38 +0200 |
Signed-off-by: Frediano Ziglio <address@hidden>
---
block/qcow.c | 53 ++++++++++++++++++++++++++---------------------------
1 files changed, 26 insertions(+), 27 deletions(-)
diff --git a/block/qcow.c b/block/qcow.c
index f0b1599..e17f9c5 100644
--- a/block/qcow.c
+++ b/block/qcow.c
@@ -520,35 +520,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);
@@ -573,7 +556,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 ? */
@@ -582,7 +564,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;
@@ -600,6 +581,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;
}
@@ -631,16 +629,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;
@@ -683,6 +677,11 @@ redo:
if (ret < 0) {
return ret;
}
+
+ acb->nb_sectors -= n;
+ acb->sector_num += n;
+ acb->buf += n * 512;
+
goto redo;
}
--
1.7.1
- [Qemu-devel] [PATCH v2 00/15] qcow/qcow2 cleanups, Frediano Ziglio, 2011/08/09
- [Qemu-devel] [PATCH v2 01/15] qcow: allocate QCowAIOCB structure using stack, Frediano Ziglio, 2011/08/09
- [Qemu-devel] [PATCH v2 02/15] qcow: QCowAIOCB field cleanup, Frediano Ziglio, 2011/08/09
- [Qemu-devel] [PATCH v2 03/15] qcow: move some blocks of code to avoid useless variable initialization,
Frediano Ziglio <=
- [Qemu-devel] [PATCH v2 04/15] qcow: embed qcow_aio_read_cb into qcow_co_readv and qcow_aio_write_cb into qcow_co_writev, Frediano Ziglio, 2011/08/09
- [Qemu-devel] [PATCH v2 05/15] qcow: remove old #undefined code, Frediano Ziglio, 2011/08/09
- [Qemu-devel] [PATCH v2 06/15] qcow2: removed unused fields, Frediano Ziglio, 2011/08/09
- [Qemu-devel] [PATCH v2 07/15] qcow2: removed cur_nr_sectors field in QCowAIOCB, Frediano Ziglio, 2011/08/09
- [Qemu-devel] [PATCH v2 08/15] qcow2: remove l2meta from QCowAIOCB, Frediano Ziglio, 2011/08/09
- [Qemu-devel] [PATCH v2 09/15] qcow2: remove cluster_offset from QCowAIOCB, Frediano Ziglio, 2011/08/09
- [Qemu-devel] [PATCH v2 11/15] qcow2: reindent and use while before the big jump, Frediano Ziglio, 2011/08/09
- [Qemu-devel] [PATCH v2 10/15] qcow2: remove common from QCowAIOCB, Frediano Ziglio, 2011/08/09
- [Qemu-devel] [PATCH v2 13/15] qcow2: remove memory leak, Frediano Ziglio, 2011/08/09
- [Qemu-devel] [PATCH v2 12/15] qcow2: removed QCowAIOCB entirely, Frediano Ziglio, 2011/08/09