qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Kevin Wolf <kwolf@redhat.com>
To: anthony@codemonkey.ws
Cc: kwolf@redhat.com, qemu-devel@nongnu.org
Subject: [Qemu-devel] [PULL 15/30] block: vpc - use QEMU_PACKED for on-disk structures
Date: Fri, 27 Sep 2013 17:39:15 +0200	[thread overview]
Message-ID: <1380296370-14523-16-git-send-email-kwolf@redhat.com> (raw)
In-Reply-To: <1380296370-14523-1-git-send-email-kwolf@redhat.com>

From: Jeff Cody <jcody@redhat.com>

The VHD footer and header structs (vhd_footer and vhd_dyndisk_header)
are on-disk structures for the image format, and as such should be
packed.

Go ahead and make these typedefs as well, with the preferred QEMU
naming convention, so that the packed attribute is used consistently
with the struct.

Signed-off-by: Jeff Cody <jcody@redhat.com>
Reviewed-by: Richard Henderson <rth@twiddle.net>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
 block/vpc.c | 28 ++++++++++++++--------------
 1 file changed, 14 insertions(+), 14 deletions(-)

diff --git a/block/vpc.c b/block/vpc.c
index db61274..b5dca39 100644
--- a/block/vpc.c
+++ b/block/vpc.c
@@ -46,7 +46,7 @@ enum vhd_type {
 #define VHD_TIMESTAMP_BASE 946684800
 
 // always big-endian
-struct vhd_footer {
+typedef struct vhd_footer {
     char        creator[8]; // "conectix"
     uint32_t    features;
     uint32_t    version;
@@ -79,9 +79,9 @@ struct vhd_footer {
     uint8_t     uuid[16];
 
     uint8_t     in_saved_state;
-};
+} QEMU_PACKED VHDFooter;
 
-struct vhd_dyndisk_header {
+typedef struct vhd_dyndisk_header {
     char        magic[8]; // "cxsparse"
 
     // Offset of next header structure, 0xFFFFFFFF if none
@@ -111,7 +111,7 @@ struct vhd_dyndisk_header {
         uint32_t    reserved;
         uint64_t    data_offset;
     } parent_locator[8];
-};
+} QEMU_PACKED VHDDynDiskHeader;
 
 typedef struct BDRVVPCState {
     CoMutex lock;
@@ -160,8 +160,8 @@ static int vpc_open(BlockDriverState *bs, QDict *options, int flags,
 {
     BDRVVPCState *s = bs->opaque;
     int i;
-    struct vhd_footer* footer;
-    struct vhd_dyndisk_header* dyndisk_header;
+    VHDFooter *footer;
+    VHDDynDiskHeader *dyndisk_header;
     uint8_t buf[HEADER_SIZE];
     uint32_t checksum;
     int disk_type = VHD_DYNAMIC;
@@ -172,7 +172,7 @@ static int vpc_open(BlockDriverState *bs, QDict *options, int flags,
         goto fail;
     }
 
-    footer = (struct vhd_footer*) s->footer_buf;
+    footer = (VHDFooter *) s->footer_buf;
     if (strncmp(footer->creator, "conectix", 8)) {
         int64_t offset = bdrv_getlength(bs->file);
         if (offset < 0) {
@@ -224,7 +224,7 @@ static int vpc_open(BlockDriverState *bs, QDict *options, int flags,
             goto fail;
         }
 
-        dyndisk_header = (struct vhd_dyndisk_header *) buf;
+        dyndisk_header = (VHDDynDiskHeader *) buf;
 
         if (strncmp(dyndisk_header->magic, "cxsparse", 8)) {
             ret = -EINVAL;
@@ -446,7 +446,7 @@ static int vpc_read(BlockDriverState *bs, int64_t sector_num,
     int ret;
     int64_t offset;
     int64_t sectors, sectors_per_block;
-    struct vhd_footer *footer = (struct vhd_footer *) s->footer_buf;
+    VHDFooter *footer = (VHDFooter *) s->footer_buf;
 
     if (cpu_to_be32(footer->type) == VHD_FIXED) {
         return bdrv_read(bs->file, sector_num, buf, nb_sectors);
@@ -495,7 +495,7 @@ static int vpc_write(BlockDriverState *bs, int64_t sector_num,
     int64_t offset;
     int64_t sectors, sectors_per_block;
     int ret;
-    struct vhd_footer *footer =  (struct vhd_footer *) s->footer_buf;
+    VHDFooter *footer =  (VHDFooter *) s->footer_buf;
 
     if (cpu_to_be32(footer->type) == VHD_FIXED) {
         return bdrv_write(bs->file, sector_num, buf, nb_sectors);
@@ -597,8 +597,8 @@ static int calculate_geometry(int64_t total_sectors, uint16_t* cyls,
 
 static int create_dynamic_disk(int fd, uint8_t *buf, int64_t total_sectors)
 {
-    struct vhd_dyndisk_header* dyndisk_header =
-        (struct vhd_dyndisk_header*) buf;
+    VHDDynDiskHeader *dyndisk_header =
+        (VHDDynDiskHeader *) buf;
     size_t block_size, num_bat_entries;
     int i;
     int ret = -EIO;
@@ -688,7 +688,7 @@ static int vpc_create(const char *filename, QEMUOptionParameter *options,
                       Error **errp)
 {
     uint8_t buf[1024];
-    struct vhd_footer *footer = (struct vhd_footer *) buf;
+    VHDFooter *footer = (VHDFooter *) buf;
     QEMUOptionParameter *disk_type_param;
     int fd, i;
     uint16_t cyls = 0;
@@ -791,7 +791,7 @@ static int vpc_create(const char *filename, QEMUOptionParameter *options,
 static int vpc_has_zero_init(BlockDriverState *bs)
 {
     BDRVVPCState *s = bs->opaque;
-    struct vhd_footer *footer =  (struct vhd_footer *) s->footer_buf;
+    VHDFooter *footer =  (VHDFooter *) s->footer_buf;
 
     if (cpu_to_be32(footer->type) == VHD_FIXED) {
         return bdrv_has_zero_init(bs->file);
-- 
1.8.1.4

  parent reply	other threads:[~2013-09-27 15:40 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-09-27 15:39 [Qemu-devel] [PULL 00/30] Block patches Kevin Wolf
2013-09-27 15:39 ` [Qemu-devel] [PULL 01/30] block: fix backing file overriding Kevin Wolf
2013-09-27 15:39 ` [Qemu-devel] [PULL 02/30] qemu-iotests: add test for " Kevin Wolf
2013-09-27 15:39 ` [Qemu-devel] [PULL 03/30] qemu-iotests: Do not execute 052 with -nocache Kevin Wolf
2013-09-27 15:39 ` [Qemu-devel] [PULL 04/30] qcow2: Don't shadow return value Kevin Wolf
2013-09-27 15:39 ` [Qemu-devel] [PULL 05/30] block/get_block_status: set *pnum = 0 on error Kevin Wolf
2013-09-27 15:39 ` [Qemu-devel] [PULL 06/30] block/get_block_status: avoid segfault if there is no backing_hd Kevin Wolf
2013-09-27 15:39 ` [Qemu-devel] [PULL 07/30] vmdk: fix cluster size check for flat extents Kevin Wolf
2013-09-27 15:39 ` [Qemu-devel] [PULL 08/30] qemu-iotests: fix test case 059 Kevin Wolf
2013-09-27 15:39 ` [Qemu-devel] [PULL 09/30] qemu-iotests: add monolithicFlat creation test to 059 Kevin Wolf
2013-09-27 15:39 ` [Qemu-devel] [PULL 10/30] block: introduce BlockDriver.bdrv_needs_filename to enable some drivers Kevin Wolf
2013-09-27 15:39 ` [Qemu-devel] [PULL 11/30] block: Fix compiler warning (-Werror=uninitialized) Kevin Wolf
2013-09-27 15:39 ` [Qemu-devel] [PULL 12/30] qdict: Extract qdict_extract_subqdict Kevin Wolf
2013-09-27 15:39 ` [Qemu-devel] [PULL 13/30] rbd: avoid qemu_rbd_snap_list() memory leaks Kevin Wolf
2013-09-27 15:39 ` [Qemu-devel] [PULL 14/30] block: vdi - use QEMU_PACKED for on-disk structures Kevin Wolf
2013-09-27 15:39 ` Kevin Wolf [this message]
2013-09-27 15:39 ` [Qemu-devel] [PULL 16/30] block: qcow2 - used " Kevin Wolf
2013-09-27 15:39 ` [Qemu-devel] [PULL 17/30] block: qed - use " Kevin Wolf
2013-09-27 15:39 ` [Qemu-devel] [PULL 18/30] qcow2: Assert against currently impossible overflow Kevin Wolf
2013-09-27 15:39 ` [Qemu-devel] [PULL 19/30] block: use DIV_ROUND_UP in bdrv_co_do_readv Kevin Wolf
2013-09-27 15:39 ` [Qemu-devel] [PULL 20/30] qemu-iotests: fix qmp.py search path Kevin Wolf
2013-09-27 15:39 ` [Qemu-devel] [PULL 21/30] qemu-iotests: Add basic ability to use binary sample images Kevin Wolf
2013-09-27 15:39 ` [Qemu-devel] [PULL 22/30] qemu-iotests: Quote $TEST_IMG* and $TEST_DIR usage Kevin Wolf
2013-09-27 15:39 ` [Qemu-devel] [PULL 24/30] qemu-iotests: Preallocated zero clusters in 061 Kevin Wolf
2013-09-27 15:39 ` [Qemu-devel] [PULL 25/30] qcow2: Don't put invalid L2 table into cache Kevin Wolf
2013-09-27 15:39 ` [Qemu-devel] [PULL 26/30] qcow2: Always use error path in l2_allocate Kevin Wolf
2013-09-27 15:39 ` [Qemu-devel] [PULL 27/30] qcow2: Free only newly allocated clusters on error Kevin Wolf
2013-09-27 15:39 ` [Qemu-devel] [PULL 28/30] qcow2: count_contiguous_clusters and compression Kevin Wolf
2013-09-27 15:39 ` [Qemu-devel] [PULL 29/30] qcow2: COMPRESSED on count_contiguous_clusters Kevin Wolf
2013-09-27 15:39 ` [Qemu-devel] [PULL 30/30] qcow2: Remove useless count_contiguous_clusters() parameter Kevin Wolf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1380296370-14523-16-git-send-email-kwolf@redhat.com \
    --to=kwolf@redhat.com \
    --cc=anthony@codemonkey.ws \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).