From patchwork Thu Apr 27 08:06:31 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ashijeet Acharya X-Patchwork-Id: 9702483 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id BD960602CC for ; Thu, 27 Apr 2017 08:09:13 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id B16FD26E73 for ; Thu, 27 Apr 2017 08:09:13 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id A518F285F3; Thu, 27 Apr 2017 08:09:13 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_HI, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 50B0026E73 for ; Thu, 27 Apr 2017 08:09:12 +0000 (UTC) Received: from localhost ([::1]:59295 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d3eUB-0005HU-GJ for patchwork-qemu-devel@patchwork.kernel.org; Thu, 27 Apr 2017 04:09:11 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56341) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d3eRI-0003Fr-Qr for qemu-devel@nongnu.org; Thu, 27 Apr 2017 04:06:13 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d3eRC-00085I-UK for qemu-devel@nongnu.org; Thu, 27 Apr 2017 04:06:12 -0400 Received: from mail-pf0-x243.google.com ([2607:f8b0:400e:c00::243]:35547) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1d3eRC-00083k-OZ; Thu, 27 Apr 2017 04:06:06 -0400 Received: by mail-pf0-x243.google.com with SMTP id a188so7471426pfa.2; Thu, 27 Apr 2017 01:06:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=IlnxF6kfjqlPCG3CQGlgRbUb7F2oQkuehDnoRyUmjOE=; b=BS/zyxSJWer263ti18NVrujk66OzNrswmeckyYsA3supPSvfRlvdZshFDkmgdEJf1y KGqK80qbsG5WuzV/0p91+0g5TSA19s3uulWFC3rZy51AP5YtQsnQdVpCTos8J+isb5oH fiSQOlKy+RSY2A+aGH+IykUeR7wd44hRRUun7doZiowuTdqGHtd6Jatay9pVdGVVtZbJ daMRrLfE7/p/B7kmAbwnBuvYTnrUjZUUa7KV2LnGogIV4AQK9kD0uSpLVZkQbqmRvWBE KLa+EaDe0WNIb/jLxnfFUO1E0YEnhOvrhV5HSfBJTCZ4x7xxmVApXvASay6vz+fUNOw1 92Xg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=IlnxF6kfjqlPCG3CQGlgRbUb7F2oQkuehDnoRyUmjOE=; b=MGeHrJbMdNtu+O1w7wKKNkzOS1Wck9GIMegmBrFK49pBDwIyaNm4cI/jRsSM1Ux1MZ MymtL63iKxaIpXYOKXDK8XLyEiS0sCvd5ip/QmgmuPrRuNknN9zHrdpF4chUMd2Qah+Y jVbrGKd0p9RjI2puoMqdJ5UPhk9k0y/yenrf7cYW4WthwlEkOb4gqLa04VMvfPnfAODO MwKb7ZSAZxvCRyDnOzRFYRW2SbXqxggSZrTSqL1m67PXMafClDz+qs8P3KvBfsmDELUJ dJ05FbufM8rhYwI8JMBNFIY+FuV0NkXisEBt1runJ/UPFlbpdLSqaYHbE+/lni1olC8F 2pHQ== X-Gm-Message-State: AN3rC/7LDO05R8UJ78eM/361xwkHuXIIKFuvQnXxJurALlc4K/j1TgMS OrlThUSaj/y0BA== X-Received: by 10.84.194.37 with SMTP id g34mr5532975pld.182.1493280365984; Thu, 27 Apr 2017 01:06:05 -0700 (PDT) Received: from linux.local ([157.51.104.251]) by smtp.gmail.com with ESMTPSA id 12sm3295277pgb.35.2017.04.27.01.06.01 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 27 Apr 2017 01:06:05 -0700 (PDT) From: Ashijeet Acharya To: stefanha@gmail.com Date: Thu, 27 Apr 2017 13:36:31 +0530 Message-Id: <1493280397-9622-2-git-send-email-ashijeetacharya@gmail.com> X-Mailer: git-send-email 2.6.2 In-Reply-To: <1493280397-9622-1-git-send-email-ashijeetacharya@gmail.com> References: <1493280397-9622-1-git-send-email-ashijeetacharya@gmail.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400e:c00::243 Subject: [Qemu-devel] [PATCH v2 1/7] dmg: Introduce a new struct to cache random access points X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, famz@redhat.com, qemu-block@nongnu.org, qemu-devel@nongnu.org, mreitz@redhat.com, peter@lekensteyn.nl, Ashijeet Acharya , jsnow@redhat.com Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP 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 --- 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 +/* 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,