[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v1 1/8] dmg: Introduce a new struct to cache random
From: |
Ashijeet Acharya |
Subject: |
[Qemu-devel] [PATCH v1 1/8] dmg: Introduce a new struct to cache random access points |
Date: |
Wed, 26 Apr 2017 01:29:04 +0530 |
We need to cache the random access point while performing partial
decompression so that we can resume decompression from that point
onwards in our next sequential read request. Introduce a new struct
DMGReadState which will help us do this.
Signed-off-by: Ashijeet Acharya <address@hidden>
---
block/dmg.h | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/block/dmg.h b/block/dmg.h
index b592d6f..ee67ae1 100644
--- a/block/dmg.h
+++ b/block/dmg.h
@@ -31,6 +31,15 @@
#include "block/block_int.h"
#include <zlib.h>
+/* used to cache current position in compressed input stream */
+typedef struct DMGReadState {
+ uint8_t *saved_next_in;
+ int64_t saved_avail_in;
+ int32_t saved_chunk_type;
+ int64_t sectors_read; /* possible sectors read in each cycle */
+ int32_t sector_offset_in_chunk;
+} DMGReadState;
+
typedef struct BDRVDMGState {
CoMutex lock;
/* each chunk contains a certain number of sectors,
@@ -51,6 +60,7 @@ typedef struct BDRVDMGState {
uint8_t *compressed_chunk;
uint8_t *uncompressed_chunk;
z_stream zstream;
+ DMGReadState *drs;
} BDRVDMGState;
extern int (*dmg_uncompress_bz2)(char *next_in, unsigned int avail_in,
--
2.6.2
- [Qemu-devel] [PATCH v1 0/8] Refactor DMG driver to have chunk size independence, Ashijeet Acharya, 2017/04/25
- [Qemu-devel] [PATCH v1 4/8] dmg: Refactor and prepare dmg_read_chunk() to cache random access points, Ashijeet Acharya, 2017/04/25
- [Qemu-devel] [PATCH v1 5/8] dmg: Handle zlib compressed chunks, Ashijeet Acharya, 2017/04/25
- [Qemu-devel] [PATCH v1 6/8] dmg: Handle bz2 compressed/raw/zeroed chunks, Ashijeet Acharya, 2017/04/25
- [Qemu-devel] [PATCH v1 7/8] dmg: Refactor dmg_co_preadv() to start reading multiple sectors, Ashijeet Acharya, 2017/04/25