From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60873) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YPwXE-0000dw-4u for qemu-devel@nongnu.org; Mon, 23 Feb 2015 12:11:13 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YPwXA-0006re-8b for qemu-devel@nongnu.org; Mon, 23 Feb 2015 12:11:08 -0500 Message-ID: <54EB5F16.9090409@redhat.com> Date: Mon, 23 Feb 2015 12:10:46 -0500 From: Max Reitz MIME-Version: 1.0 References: <1424703692-21364-1-git-send-email-pl@kamp.de> In-Reply-To: <1424703692-21364-1-git-send-email-pl@kamp.de> Content-Type: text/plain; charset=iso-8859-15; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH] block/vpc: fix get_sector_offset for vpc_read List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Peter Lieven , qemu-devel@nongnu.org Cc: kwolf@redhat.com, carnold@suse.com, jcody@redhat.com, qemu-stable@nongnu.org, stefanha@redhat.com On 2015-02-23 at 10:01, Peter Lieven wrote: > VHD images contain a bitmap at the beginning of each data block > to indicate the allocation status of each sector in the data block. > > vpc_read currently checks the allocation status of the first sector > in a data block it is going to read and then assumes the same allocation > status for the whole remainder of the data block. This might end up > in incorrect zero sectors if the first sector is unallocated. > > To fix this indiciate a sector is allocated as soon as its > data block has a valid page table index. Hm, as far as I can see, this patch just removes unused code. How does this correspond to the commit message? Max > CC: qemu-stable@nongnu.org > Signed-off-by: Peter Lieven > --- > block/vpc.c | 32 -------------------------------- > 1 file changed, 32 deletions(-) > > diff --git a/block/vpc.c b/block/vpc.c > index 46803b1..9a75334 100644 > --- a/block/vpc.c > +++ b/block/vpc.c > @@ -376,38 +376,6 @@ static inline int64_t get_sector_offset(BlockDriverState *bs, > bdrv_pwrite_sync(bs->file, bitmap_offset, bitmap, s->bitmap_size); > } > > -// printf("sector: %" PRIx64 ", index: %x, offset: %x, bioff: %" PRIx64 ", bloff: %" PRIx64 "\n", > -// sector_num, pagetable_index, pageentry_index, > -// bitmap_offset, block_offset); > - > -// disabled by reason > -#if 0 > -#ifdef CACHE > - if (bitmap_offset != s->last_bitmap) > - { > - lseek(s->fd, bitmap_offset, SEEK_SET); > - > - s->last_bitmap = bitmap_offset; > - > - // Scary! Bitmap is stored as big endian 32bit entries, > - // while we used to look it up byte by byte > - read(s->fd, s->pageentry_u8, 512); > - for (i = 0; i < 128; i++) > - be32_to_cpus(&s->pageentry_u32[i]); > - } > - > - if ((s->pageentry_u8[pageentry_index / 8] >> (pageentry_index % 8)) & 1) > - return -1; > -#else > - lseek(s->fd, bitmap_offset + (pageentry_index / 8), SEEK_SET); > - > - read(s->fd, &bitmap_entry, 1); > - > - if ((bitmap_entry >> (pageentry_index % 8)) & 1) > - return -1; // not allocated > -#endif > -#endif > - > return block_offset; > } >