vmdk.c (d8a7b061ae01e5692cc994f05ad6480d8c170125) | vmdk.c (d34682cd4a06efe9ee3fc8cb7e8a0ea445299989) |
---|---|
1/* 2 * Block driver for the VMDK format 3 * 4 * Copyright (c) 2004 Fabrice Bellard 5 * Copyright (c) 2005 Filip Navara 6 * 7 * Permission is hereby granted, free of charge, to any person obtaining a copy 8 * of this software and associated documentation files (the "Software"), to deal --- 414 unchanged lines hidden (view full) --- 423 extent->sectors = sectors; 424 extent->l1_table_offset = l1_offset; 425 extent->l1_backup_table_offset = l1_backup_offset; 426 extent->l1_size = l1_size; 427 extent->l1_entry_sectors = l2_size * cluster_sectors; 428 extent->l2_size = l2_size; 429 extent->cluster_sectors = flat ? sectors : cluster_sectors; 430 | 1/* 2 * Block driver for the VMDK format 3 * 4 * Copyright (c) 2004 Fabrice Bellard 5 * Copyright (c) 2005 Filip Navara 6 * 7 * Permission is hereby granted, free of charge, to any person obtaining a copy 8 * of this software and associated documentation files (the "Software"), to deal --- 414 unchanged lines hidden (view full) --- 423 extent->sectors = sectors; 424 extent->l1_table_offset = l1_offset; 425 extent->l1_backup_table_offset = l1_backup_offset; 426 extent->l1_size = l1_size; 427 extent->l1_entry_sectors = l2_size * cluster_sectors; 428 extent->l2_size = l2_size; 429 extent->cluster_sectors = flat ? sectors : cluster_sectors; 430 |
431 if (!flat) { 432 bs->bl.write_zeroes_alignment = 433 MAX(bs->bl.write_zeroes_alignment, cluster_sectors); 434 } | |
435 if (s->num_extents > 1) { 436 extent->end_sector = (*(extent - 1)).end_sector + extent->sectors; 437 } else { 438 extent->end_sector = extent->sectors; 439 } 440 bs->total_sectors = extent->end_sector; 441 if (new_extent) { 442 *new_extent = extent; --- 454 unchanged lines hidden (view full) --- 897 898fail: 899 g_free(s->create_type); 900 s->create_type = NULL; 901 vmdk_free_extents(bs); 902 return ret; 903} 904 | 431 if (s->num_extents > 1) { 432 extent->end_sector = (*(extent - 1)).end_sector + extent->sectors; 433 } else { 434 extent->end_sector = extent->sectors; 435 } 436 bs->total_sectors = extent->end_sector; 437 if (new_extent) { 438 *new_extent = extent; --- 454 unchanged lines hidden (view full) --- 893 894fail: 895 g_free(s->create_type); 896 s->create_type = NULL; 897 vmdk_free_extents(bs); 898 return ret; 899} 900 |
901 902static int vmdk_refresh_limits(BlockDriverState *bs) 903{ 904 BDRVVmdkState *s = bs->opaque; 905 int i; 906 907 for (i = 0; i < s->num_extents; i++) { 908 if (!s->extents[i].flat) { 909 bs->bl.write_zeroes_alignment = 910 MAX(bs->bl.write_zeroes_alignment, 911 s->extents[i].cluster_sectors); 912 } 913 } 914 915 return 0; 916} 917 |
|
905static int get_whole_cluster(BlockDriverState *bs, 906 VmdkExtent *extent, 907 uint64_t cluster_offset, 908 uint64_t offset, 909 bool allocate) 910{ 911 int ret = VMDK_OK; 912 uint8_t *whole_grain = NULL; --- 1095 unchanged lines hidden (view full) --- 2008 .bdrv_co_write_zeroes = vmdk_co_write_zeroes, 2009 .bdrv_close = vmdk_close, 2010 .bdrv_create = vmdk_create, 2011 .bdrv_co_flush_to_disk = vmdk_co_flush, 2012 .bdrv_co_get_block_status = vmdk_co_get_block_status, 2013 .bdrv_get_allocated_file_size = vmdk_get_allocated_file_size, 2014 .bdrv_has_zero_init = vmdk_has_zero_init, 2015 .bdrv_get_specific_info = vmdk_get_specific_info, | 918static int get_whole_cluster(BlockDriverState *bs, 919 VmdkExtent *extent, 920 uint64_t cluster_offset, 921 uint64_t offset, 922 bool allocate) 923{ 924 int ret = VMDK_OK; 925 uint8_t *whole_grain = NULL; --- 1095 unchanged lines hidden (view full) --- 2021 .bdrv_co_write_zeroes = vmdk_co_write_zeroes, 2022 .bdrv_close = vmdk_close, 2023 .bdrv_create = vmdk_create, 2024 .bdrv_co_flush_to_disk = vmdk_co_flush, 2025 .bdrv_co_get_block_status = vmdk_co_get_block_status, 2026 .bdrv_get_allocated_file_size = vmdk_get_allocated_file_size, 2027 .bdrv_has_zero_init = vmdk_has_zero_init, 2028 .bdrv_get_specific_info = vmdk_get_specific_info, |
2029 .bdrv_refresh_limits = vmdk_refresh_limits, |
|
2016 2017 .create_options = vmdk_create_options, 2018}; 2019 2020static void bdrv_vmdk_init(void) 2021{ 2022 bdrv_register(&bdrv_vmdk); 2023} 2024 2025block_init(bdrv_vmdk_init); | 2030 2031 .create_options = vmdk_create_options, 2032}; 2033 2034static void bdrv_vmdk_init(void) 2035{ 2036 bdrv_register(&bdrv_vmdk); 2037} 2038 2039block_init(bdrv_vmdk_init); |