Hi, Some of you are already aware but for the benefit of the open list, this mail is regarding the task mentioned Here -> http://wiki.qemu-project.org/ToDo/Block/DmgChunkSizeIndependence
I had a chat with Fam regarding this and he suggested a solution where we fix the output buffer size to a max of say "64K" and keep inflating until we reach the end of the input stream. We extract the required data when we enter the desired range and discard the rest. Fam however termed this as only a "quick fix". The ideal fix would obviously be if we can somehow predict the exact location inside the compressed stream relative to the desired offset in the output decompressed stream, such as a specific sector in a chunk. Unfortunately this is not possible without doing a first pass over the decompressed stream as answered on the zlib FAQ page Here -> http://zlib.net/zlib_faq.html#faq28 AFAICT after reading the zran.c example in zlib, the above mentioned ideal fix would ultimately lead us to decompress the whole chunk in steps at least once to maintain an access point lookup table. This solution is better if we get several random access requests over different read requests, otherwise it ends up being equal to the fix suggested by Fam plus some extra effort needed in building and maintaining access points. I have not explored the bzip2 compressed chunks yet but have naively assumed that we will face the same situation there? I would like the community's opinion on this and add their suggestions if possible to give me some new thinking points. Thanks Ashijeet