Commit c47c33b098302d2c94db22e76ef5745aab05a7c8

Authored by bellard
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 -