Revision 16372ff0

b/block/vmdk.c
716 716
        return -errno;
717 717
    magic = cpu_to_be32(VMDK4_MAGIC);
718 718
    memset(&header, 0, sizeof(header));
719
    header.version = cpu_to_le32(1);
720
    header.flags = cpu_to_le32(3); /* ?? */
721
    header.capacity = cpu_to_le64(total_size);
722
    header.granularity = cpu_to_le64(128);
723
    header.num_gtes_per_gte = cpu_to_le32(512);
719
    header.version = 1;
720
    header.flags = 3; /* ?? */
721
    header.capacity = total_size;
722
    header.granularity = 128;
723
    header.num_gtes_per_gte = 512;
724 724

  
725 725
    grains = (total_size + header.granularity - 1) / header.granularity;
726 726
    gt_size = ((header.num_gtes_per_gte * sizeof(uint32_t)) + 511) >> 9;
......
736 736
         header.granularity - 1) / header.granularity) *
737 737
        header.granularity;
738 738

  
739
    /* swap endianness for all header fields */
740
    header.version = cpu_to_le32(header.version);
741
    header.flags = cpu_to_le32(header.flags);
742
    header.capacity = cpu_to_le64(header.capacity);
743
    header.granularity = cpu_to_le64(header.granularity);
744
    header.num_gtes_per_gte = cpu_to_le32(header.num_gtes_per_gte);
739 745
    header.desc_offset = cpu_to_le64(header.desc_offset);
740 746
    header.desc_size = cpu_to_le64(header.desc_size);
741 747
    header.rgd_offset = cpu_to_le64(header.rgd_offset);
......
759 765
        goto exit;
760 766
    }
761 767

  
762
    ret = ftruncate(fd, header.grain_offset << 9);
768
    ret = ftruncate(fd, le64_to_cpu(header.grain_offset) << 9);
763 769
    if (ret < 0) {
764 770
        ret = -errno;
765 771
        goto exit;
......
767 773

  
768 774
    /* write grain directory */
769 775
    lseek(fd, le64_to_cpu(header.rgd_offset) << 9, SEEK_SET);
770
    for (i = 0, tmp = header.rgd_offset + gd_size;
776
    for (i = 0, tmp = le64_to_cpu(header.rgd_offset) + gd_size;
771 777
         i < gt_count; i++, tmp += gt_size) {
772 778
        ret = qemu_write_full(fd, &tmp, sizeof(tmp));
773 779
        if (ret != sizeof(tmp)) {
......
778 784

  
779 785
    /* write backup grain directory */
780 786
    lseek(fd, le64_to_cpu(header.gd_offset) << 9, SEEK_SET);
781
    for (i = 0, tmp = header.gd_offset + gd_size;
787
    for (i = 0, tmp = le64_to_cpu(header.gd_offset) + gd_size;
782 788
         i < gt_count; i++, tmp += gt_size) {
783 789
        ret = qemu_write_full(fd, &tmp, sizeof(tmp));
784 790
        if (ret != sizeof(tmp)) {

Also available in: Unified diff