Index: block-qcow.c =================================================================== RCS file: /sources/qemu/qemu/block-qcow.c,v retrieving revision 1.6 diff -u -p -r1.6 block-qcow.c --- block-qcow.c 18 Dec 2005 18:28:15 -0000 1.6 +++ block-qcow.c 27 Feb 2006 21:07:09 -0000 @@ -458,6 +458,15 @@ static int qcow_read(BlockDriverState *b int ret, index_in_cluster, n; uint64_t cluster_offset; + static BlockDriverState *bs_first=NULL; + if (!bs_first) + bs_first=bs; + if (bs==bs_first && sector_num) { +fprintf(stderr,"%p:%lld+%d: %s\n",bs,(long long)sector_num,nb_sectors,bs->filename); +puts("fail"); + return -1; + } + while (nb_sectors > 0) { cluster_offset = get_cluster_offset(bs, sector_num << 9, 0, 0, 0, 0); index_in_cluster = sector_num & (s->cluster_sectors - 1); Index: block.c =================================================================== RCS file: /sources/qemu/qemu/block.c,v retrieving revision 1.25 diff -u -p -r1.25 block.c --- block.c 18 Dec 2005 18:28:15 -0000 1.25 +++ block.c 27 Feb 2006 21:07:10 -0000 @@ -709,6 +709,25 @@ static int raw_read(BlockDriverState *bs BDRVRawState *s = bs->opaque; int ret; + static BlockDriverState *bs_first=NULL; + if (!bs_first) + bs_first=bs; + if (!strcmp(bs->filename,"/tmp/sda-head.bin") && bs==bs_first && sector_num) { +fprintf(stderr,"%p:%lld+%d: %s\n",bs,(long long)sector_num,nb_sectors,bs->filename); +puts("fail"); + return -1; + } +#if 0 + fprintf(stderr,"%p:%lld+%d: %s\n",bs,(long long)sector_num,nb_sectors,bs->filename); + if (!strcmp(bs->filename,"/tmp/sda-head.bin") && bs==bs_first && ((sector_num/63)&1)) { +puts("fail"); + return -1; + } + if (!strcmp(bs->filename,"/tmp/sda-head.bin") && bs!=bs_first && !((sector_num/63)&1)) { +puts("fail"); + return -1; + } +#endif lseek(s->fd, sector_num * 512, SEEK_SET); ret = read(s->fd, buf, nb_sectors * 512); if (ret != nb_sectors * 512)