[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 1/3] block-qcow2: keep highest allocated offset
From: |
Luiz Capitulino |
Subject: |
[Qemu-devel] [PATCH 1/3] block-qcow2: keep highest allocated offset |
Date: |
Tue, 9 Mar 2010 19:53:34 -0300 |
From: Uri Lublin <address@hidden>
We want to know the highest allocated offset for qcow2 images.
It can be useful for allocating more diskspace for an image
(e.g. an lvm logical volume) before we run out-of-disk-space.
In this version image refcount table is not scanned.
Also highest-alloc is not kept when the process exits.
Thus it only keeps the highest offset of the current run.
Signed-off-by: Uri Lublin <address@hidden>
Signed-off-by: Luiz Capitulino <address@hidden>
---
block/qcow2-refcount.c | 3 +++
block/qcow2.c | 2 ++
block/qcow2.h | 3 +++
3 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/block/qcow2-refcount.c b/block/qcow2-refcount.c
index 917fc88..9cb38c8 100644
--- a/block/qcow2-refcount.c
+++ b/block/qcow2-refcount.c
@@ -550,6 +550,9 @@ retry:
size,
(s->free_cluster_index - nb_clusters) << s->cluster_bits);
#endif
+ if (s->highest_alloc < s->free_cluster_index) {
+ s->highest_alloc = s->free_cluster_index;
+ }
return (s->free_cluster_index - nb_clusters) << s->cluster_bits;
}
diff --git a/block/qcow2.c b/block/qcow2.c
index 5b6dad9..d9af90b 100644
--- a/block/qcow2.c
+++ b/block/qcow2.c
@@ -230,6 +230,8 @@ static int qcow_open(BlockDriverState *bs, const char
*filename, int flags)
if (qcow_read_extensions(bs, sizeof(header), ext_end))
goto fail;
+ s->highest_alloc = 0;
+
/* read the backing file name */
if (header.backing_file_offset != 0) {
len = header.backing_file_size;
diff --git a/block/qcow2.h b/block/qcow2.h
index de9397a..6cc50e6 100644
--- a/block/qcow2.h
+++ b/block/qcow2.h
@@ -112,6 +112,9 @@ typedef struct BDRVQcowState {
uint32_t crypt_method_header;
AES_KEY aes_encrypt_key;
AES_KEY aes_decrypt_key;
+
+ int64_t highest_alloc; /* highest cluester allocated (in clusters) */
+
uint64_t snapshots_offset;
int snapshots_size;
int nb_snapshots;
--
1.7.0.1
- [Qemu-devel] [PATCH 0/3]: BLOCK_WATERMARK QMP event, Luiz Capitulino, 2010/03/09
- [Qemu-devel] [PATCH 1/3] block-qcow2: keep highest allocated offset,
Luiz Capitulino <=
- [Qemu-devel] [PATCH 2/3] monitor: Introduce block_watermark command, Luiz Capitulino, 2010/03/09
- [Qemu-devel] [PATCH 3/3] QMP: Introduce BLOCK_WATERMARK event, Luiz Capitulino, 2010/03/09
- Re: [Qemu-devel] [PATCH 0/3]: BLOCK_WATERMARK QMP event, Anthony Liguori, 2010/03/09
- Re: [Qemu-devel] [PATCH 0/3]: BLOCK_WATERMARK QMP event, Anthony Liguori, 2010/03/09
- Re: [Qemu-devel] [PATCH 0/3]: BLOCK_WATERMARK QMP event, Anthony Liguori, 2010/03/09