diff options
author | bellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162> | 2006-08-06 13:35:09 +0000 |
---|---|---|
committer | bellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162> | 2006-08-06 13:35:09 +0000 |
commit | d15a771da15513560371443bd361abbcf51f70b8 (patch) | |
tree | fab5d442d7f396b46603e577c980674a2d123d85 | |
parent | a946592212874f1e214e0db365c29e8de1179847 (diff) | |
download | qemu-d15a771da15513560371443bd361abbcf51f70b8.zip qemu-d15a771da15513560371443bd361abbcf51f70b8.tar.gz qemu-d15a771da15513560371443bd361abbcf51f70b8.tar.bz2 |
qcow2 is now used for '-snapshot' - keep BlockDriverState.total_sectors
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2094 c046a42c-6fe2-441c-8c8c-71466251a162
-rw-r--r-- | block.c | 12 | ||||
-rw-r--r-- | block_int.h | 3 |
2 files changed, 7 insertions, 8 deletions
@@ -296,7 +296,7 @@ int bdrv_open2(BlockDriverState *bs, const char *filename, int flags, bdrv_delete(bs1); get_tmp_filename(tmp_filename, sizeof(tmp_filename)); - if (bdrv_create(&bdrv_qcow, tmp_filename, + if (bdrv_create(&bdrv_qcow2, tmp_filename, total_size, filename, 0) < 0) { return -1; } @@ -335,7 +335,9 @@ int bdrv_open2(BlockDriverState *bs, const char *filename, int flags, qemu_free(bs->opaque); return ret; } - + if (drv->bdrv_getlength) { + bs->total_sectors = bdrv_getlength(bs) >> SECTOR_BITS; + } #ifndef _WIN32 if (bs->is_temporary) { unlink(filename); @@ -647,11 +649,7 @@ int64_t bdrv_getlength(BlockDriverState *bs) void bdrv_get_geometry(BlockDriverState *bs, int64_t *nb_sectors_ptr) { - int64_t size; - size = bdrv_getlength(bs); - if (size < 0) - size = 0; - *nb_sectors_ptr = size >> SECTOR_BITS; + *nb_sectors_ptr = bs->total_sectors; } /* force a given boot sector. */ diff --git a/block_int.h b/block_int.h index b3bc5b3..26cc4ff 100644 --- a/block_int.h +++ b/block_int.h @@ -73,7 +73,8 @@ struct BlockDriver { }; struct BlockDriverState { - int64_t total_sectors; /* XXX: will be suppressed */ + int64_t total_sectors; /* if we are reading a disk image, give its + size in sectors */ int read_only; /* if true, the media is read only */ int inserted; /* if true, the media is present */ int removable; /* if true, the media can be removed */ |