qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] cow: make padding in the header explicit


From: shhuiw
Subject: Re: [Qemu-devel] [PATCH] cow: make padding in the header explicit
Date: Thu, 4 Sep 2014 20:57:04 +0800 (CST)


At 2014-09-04 08:07:32, "Eric Blake" <address@hidden> wrote:
>On 09/04/2014 02:58 AM, Stefan Hajnoczi wrote:
>> On-disk structures should be marked packed so the compiler does not
>> insert padding for field alignment.  Padding should be explicit so
>> on-disk layout is obvious and we don't rely on the architecture-specific
>> ABI for alignment rules.
>> 
>> The pahole(1) diff shows that the padding is now explicit and offsets
>> are unchanged:
>> 
>>      char                       backing_file[1024];   /*     8  1024 */
>>      /* --- cacheline 16 boundary (1024 bytes) was 8 bytes ago --- */
>>      int32_t                    mtime;                /*  1032     4 */
>> -
>> -    /* XXX 4 bytes hole, try to pack */
>> -
>> +    uint32_t                   padding;              /*  1036     4 */
>>      uint64_t                   size;                 /*  1040     8 */
>
>Was a 32-bit build also inserting this padding, or do we have historical
>differences where 32-bit and 64-bit cow files are actually different,
>and we may need to be prepared to parse files from both sources?
>

Tried on my x86 32bits computer, and seems the padding is not needed:

struct cow_header_v2 {
        uint32_t                        magic;                  /*     0     4 
*/
        uint32_t                        version;                /*     4     4 
*/
        char                            backing_file[1024];     /*     8  1024 
*/
        /* --- cacheline 16 boundary (1024 bytes) was 8 bytes ago --- */
        int32_t                         mtime;                  /*  1032     4 
*/
        uint64_t                        size;                   /*  1036     8 
*/
        uint32_t                        sectorsize;             /*  1044     4 
*/
        /* size: 1048, cachelines: 17, members: 6 */
        /* last cacheline: 24 bytes */
};


>-- 
>Eric Blake   eblake redhat com    +1-919-301-3266
>Libvirt virtualization library http://libvirt.org
>

Regards,
shhuiw

reply via email to

[Prev in Thread] Current Thread [Next in Thread]