[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] blktap: Fix unused warnings in block-qcow2.c with -D_FORTIFY_SOURCE=2.
# HG changeset patch # User Keir Fraser <keir.fraser@xxxxxxxxxx> # Date 1204204778 0 # Node ID 36529ef3ef23180c52dc14d0571364a46c09a519 # Parent 8612d3d9578adb8d1304aa67b0eafd65f38e6d09 blktap: Fix unused warnings in block-qcow2.c with -D_FORTIFY_SOURCE=2. Signed-off-by: Kevin Wolf <kwolf@xxxxxxx> --- tools/blktap/drivers/block-qcow2.c | 161 ------------------------------------- 1 files changed, 161 deletions(-) diff -r 8612d3d9578a -r 36529ef3ef23 tools/blktap/drivers/block-qcow2.c --- a/tools/blktap/drivers/block-qcow2.c Thu Feb 28 13:18:29 2008 +0000 +++ b/tools/blktap/drivers/block-qcow2.c Thu Feb 28 13:19:38 2008 +0000 @@ -1241,167 +1241,6 @@ static void create_refcount_update(QCowC refcount++; *p = cpu_to_be16(refcount); } -} - -static int qcow2_create(const char *filename, int64_t total_size, - const char *backing_file, int flags) -{ - int fd, header_size, backing_filename_len, l1_size, i, shift, l2_bits; - QCowHeader header; - uint64_t tmp, offset; - QCowCreateState s1, *s = &s1; - - memset(s, 0, sizeof(*s)); - - fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, 0644); - if (fd < 0) - return -1; - memset(&header, 0, sizeof(header)); - header.magic = cpu_to_be32(QCOW_MAGIC); - header.version = cpu_to_be32(QCOW_VERSION); - header.size = cpu_to_be64(total_size * 512); - header_size = sizeof(header); - backing_filename_len = 0; - if (backing_file) { - header.backing_file_offset = cpu_to_be64(header_size); - backing_filename_len = strlen(backing_file); - header.backing_file_size = cpu_to_be32(backing_filename_len); - header_size += backing_filename_len; - } - s->cluster_bits = 12; /* 4 KB clusters */ - s->cluster_size = 1 << s->cluster_bits; - header.cluster_bits = cpu_to_be32(s->cluster_bits); - header_size = (header_size + 7) & ~7; - if (flags & BLOCK_FLAG_ENCRYPT) { - header.crypt_method = cpu_to_be32(QCOW_CRYPT_AES); - } else { - header.crypt_method = cpu_to_be32(QCOW_CRYPT_NONE); - } - l2_bits = s->cluster_bits - 3; - shift = s->cluster_bits + l2_bits; - l1_size = (((total_size * 512) + (1LL << shift) - 1) >> shift); - offset = align_offset(header_size, s->cluster_size); - s->l1_table_offset = offset; - header.l1_table_offset = cpu_to_be64(s->l1_table_offset); - header.l1_size = cpu_to_be32(l1_size); - offset += align_offset(l1_size * sizeof(uint64_t), s->cluster_size); - - s->refcount_table = qemu_mallocz(s->cluster_size); - if (!s->refcount_table) - goto fail; - s->refcount_block = qemu_mallocz(s->cluster_size); - if (!s->refcount_block) - goto fail; - - s->refcount_table_offset = offset; - header.refcount_table_offset = cpu_to_be64(offset); - header.refcount_table_clusters = cpu_to_be32(1); - offset += s->cluster_size; - - s->refcount_table[0] = cpu_to_be64(offset); - s->refcount_block_offset = offset; - offset += s->cluster_size; - - /* update refcounts */ - create_refcount_update(s, 0, header_size); - create_refcount_update(s, s->l1_table_offset, l1_size * sizeof(uint64_t)); - create_refcount_update(s, s->refcount_table_offset, s->cluster_size); - create_refcount_update(s, s->refcount_block_offset, s->cluster_size); - - /* write all the data */ - write(fd, &header, sizeof(header)); - if (backing_file) { - write(fd, backing_file, backing_filename_len); - } - lseek(fd, s->l1_table_offset, SEEK_SET); - tmp = 0; - for(i = 0;i < l1_size; i++) { - write(fd, &tmp, sizeof(tmp)); - } - lseek(fd, s->refcount_table_offset, SEEK_SET); - write(fd, s->refcount_table, s->cluster_size); - - lseek(fd, s->refcount_block_offset, SEEK_SET); - write(fd, s->refcount_block, s->cluster_size); - - qemu_free(s->refcount_table); - qemu_free(s->refcount_block); - close(fd); - return 0; -fail: - qemu_free(s->refcount_table); - qemu_free(s->refcount_block); - close(fd); - return -ENOMEM; -} - -/* XXX: put compressed sectors first, then all the cluster aligned - tables to avoid losing bytes in alignment */ -static int qcow_write_compressed(struct disk_driver *bs, int64_t sector_num, - const uint8_t *buf, int nb_sectors) -{ - BDRVQcowState *s = bs->private; - z_stream strm; - int ret, out_len; - uint8_t *out_buf; - uint64_t cluster_offset; - - if (nb_sectors == 0) { - /* align end of file to a sector boundary to ease reading with - sector based I/Os */ - cluster_offset = 512 * s->total_sectors; - cluster_offset = (cluster_offset + 511) & ~511; - ftruncate(s->fd, cluster_offset); - return 0; - } - - if (nb_sectors != s->cluster_sectors) - return -EINVAL; - - out_buf = qemu_malloc(s->cluster_size + (s->cluster_size / 1000) + 128); - if (!out_buf) - return -ENOMEM; - - /* best compression, small window, no zlib header */ - memset(&strm, 0, sizeof(strm)); - ret = deflateInit2(&strm, Z_DEFAULT_COMPRESSION, - Z_DEFLATED, -12, - 9, Z_DEFAULT_STRATEGY); - if (ret != 0) { - qemu_free(out_buf); - return -1; - } - - strm.avail_in = s->cluster_size; - strm.next_in = (uint8_t *)buf; - strm.avail_out = s->cluster_size; - strm.next_out = out_buf; - - ret = deflate(&strm, Z_FINISH); - if (ret != Z_STREAM_END && ret != Z_OK) { - qemu_free(out_buf); - deflateEnd(&strm); - return -1; - } - out_len = strm.next_out - out_buf; - - deflateEnd(&strm); - - if (ret != Z_STREAM_END || out_len >= s->cluster_size) { - /* could not compress: write normal cluster */ - qcow_write(bs, sector_num, buf, s->cluster_sectors); - } else { - cluster_offset = get_cluster_offset(bs, sector_num << 9, 2, - out_len, 0, 0); - cluster_offset &= s->cluster_offset_mask; - if (bdrv_pwrite(s->fd, cluster_offset, out_buf, out_len) != out_len) { - qemu_free(out_buf); - return -1; - } - } - - qemu_free(out_buf); - return 0; } static int qcow_submit(struct disk_driver *bs) _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |