Commit c47c33b098302d2c94db22e76ef5745aab05a7c8
1 parent
e70332b3
block API change
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2088 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
15 additions
and
16 deletions
block-qcow.c
| @@ -350,7 +350,7 @@ static uint64_t get_cluster_offset(BlockDriverState *bs, | @@ -350,7 +350,7 @@ static uint64_t get_cluster_offset(BlockDriverState *bs, | ||
| 350 | (n_end - n_start) < s->cluster_sectors) { | 350 | (n_end - n_start) < s->cluster_sectors) { |
| 351 | uint64_t start_sect; | 351 | uint64_t start_sect; |
| 352 | start_sect = (offset & ~(s->cluster_size - 1)) >> 9; | 352 | start_sect = (offset & ~(s->cluster_size - 1)) >> 9; |
| 353 | - memset(s->cluster_data + 512, 0xaa, 512); | 353 | + memset(s->cluster_data + 512, 0x00, 512); |
| 354 | for(i = 0; i < s->cluster_sectors; i++) { | 354 | for(i = 0; i < s->cluster_sectors; i++) { |
| 355 | if (i < n_start || i >= n_end) { | 355 | if (i < n_start || i >= n_end) { |
| 356 | encrypt_sectors(s, start_sect + i, | 356 | encrypt_sectors(s, start_sect + i, |
| @@ -813,7 +813,7 @@ static int qcow_create(const char *filename, int64_t total_size, | @@ -813,7 +813,7 @@ static int qcow_create(const char *filename, int64_t total_size, | ||
| 813 | return 0; | 813 | return 0; |
| 814 | } | 814 | } |
| 815 | 815 | ||
| 816 | -int qcow_make_empty(BlockDriverState *bs) | 816 | +static int qcow_make_empty(BlockDriverState *bs) |
| 817 | { | 817 | { |
| 818 | BDRVQcowState *s = bs->opaque; | 818 | BDRVQcowState *s = bs->opaque; |
| 819 | uint32_t l1_length = s->l1_size * sizeof(uint64_t); | 819 | uint32_t l1_length = s->l1_size * sizeof(uint64_t); |
| @@ -833,18 +833,10 @@ int qcow_make_empty(BlockDriverState *bs) | @@ -833,18 +833,10 @@ int qcow_make_empty(BlockDriverState *bs) | ||
| 833 | return 0; | 833 | return 0; |
| 834 | } | 834 | } |
| 835 | 835 | ||
| 836 | -int qcow_get_cluster_size(BlockDriverState *bs) | ||
| 837 | -{ | ||
| 838 | - BDRVQcowState *s = bs->opaque; | ||
| 839 | - if (bs->drv != &bdrv_qcow) | ||
| 840 | - return -1; | ||
| 841 | - return s->cluster_size; | ||
| 842 | -} | ||
| 843 | - | ||
| 844 | /* XXX: put compressed sectors first, then all the cluster aligned | 836 | /* XXX: put compressed sectors first, then all the cluster aligned |
| 845 | tables to avoid losing bytes in alignment */ | 837 | tables to avoid losing bytes in alignment */ |
| 846 | -int qcow_compress_cluster(BlockDriverState *bs, int64_t sector_num, | ||
| 847 | - const uint8_t *buf) | 838 | +static int qcow_write_compressed(BlockDriverState *bs, int64_t sector_num, |
| 839 | + const uint8_t *buf, int nb_sectors) | ||
| 848 | { | 840 | { |
| 849 | BDRVQcowState *s = bs->opaque; | 841 | BDRVQcowState *s = bs->opaque; |
| 850 | z_stream strm; | 842 | z_stream strm; |
| @@ -852,8 +844,8 @@ int qcow_compress_cluster(BlockDriverState *bs, int64_t sector_num, | @@ -852,8 +844,8 @@ int qcow_compress_cluster(BlockDriverState *bs, int64_t sector_num, | ||
| 852 | uint8_t *out_buf; | 844 | uint8_t *out_buf; |
| 853 | uint64_t cluster_offset; | 845 | uint64_t cluster_offset; |
| 854 | 846 | ||
| 855 | - if (bs->drv != &bdrv_qcow) | ||
| 856 | - return -1; | 847 | + if (nb_sectors != s->cluster_sectors) |
| 848 | + return -EINVAL; | ||
| 857 | 849 | ||
| 858 | out_buf = qemu_malloc(s->cluster_size + (s->cluster_size / 1000) + 128); | 850 | out_buf = qemu_malloc(s->cluster_size + (s->cluster_size / 1000) + 128); |
| 859 | if (!out_buf) | 851 | if (!out_buf) |
| @@ -907,6 +899,13 @@ static void qcow_flush(BlockDriverState *bs) | @@ -907,6 +899,13 @@ static void qcow_flush(BlockDriverState *bs) | ||
| 907 | bdrv_flush(s->hd); | 899 | bdrv_flush(s->hd); |
| 908 | } | 900 | } |
| 909 | 901 | ||
| 902 | +static int qcow_get_info(BlockDriverState *bs, BlockDriverInfo *bdi) | ||
| 903 | +{ | ||
| 904 | + BDRVQcowState *s = bs->opaque; | ||
| 905 | + bdi->cluster_size = s->cluster_size; | ||
| 906 | + return 0; | ||
| 907 | +} | ||
| 908 | + | ||
| 910 | BlockDriver bdrv_qcow = { | 909 | BlockDriver bdrv_qcow = { |
| 911 | "qcow", | 910 | "qcow", |
| 912 | sizeof(BDRVQcowState), | 911 | sizeof(BDRVQcowState), |
| @@ -926,6 +925,6 @@ BlockDriver bdrv_qcow = { | @@ -926,6 +925,6 @@ BlockDriver bdrv_qcow = { | ||
| 926 | .bdrv_aio_write = qcow_aio_write, | 925 | .bdrv_aio_write = qcow_aio_write, |
| 927 | .bdrv_aio_cancel = qcow_aio_cancel, | 926 | .bdrv_aio_cancel = qcow_aio_cancel, |
| 928 | .bdrv_aio_delete = qcow_aio_delete, | 927 | .bdrv_aio_delete = qcow_aio_delete, |
| 928 | + .bdrv_write_compressed = qcow_write_compressed, | ||
| 929 | + .bdrv_get_info = qcow_get_info, | ||
| 929 | }; | 930 | }; |
| 930 | - | ||
| 931 | - |