vmdk.c (f7ad538e1ea130c8b6f3abb06ad6c856242c799e) vmdk.c (4f6fd3491cf0f768b135ed2e242bd1d1d2a2efec)
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

--- 202 unchanged lines hidden (view full) ---

211 VmdkExtent *e;
212
213 for (i = 0; i < s->num_extents; i++) {
214 e = &s->extents[i];
215 g_free(e->l1_table);
216 g_free(e->l2_cache);
217 g_free(e->l1_backup_table);
218 if (e->file != bs->file) {
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

--- 202 unchanged lines hidden (view full) ---

211 VmdkExtent *e;
212
213 for (i = 0; i < s->num_extents; i++) {
214 e = &s->extents[i];
215 g_free(e->l1_table);
216 g_free(e->l2_cache);
217 g_free(e->l1_backup_table);
218 if (e->file != bs->file) {
219 bdrv_delete(e->file);
219 bdrv_unref(e->file);
220 }
221 }
222 g_free(s->extents);
223}
224
225static void vmdk_free_last_extent(BlockDriverState *bs)
226{
227 BDRVVmdkState *s = bs->opaque;

--- 513 unchanged lines hidden (view full) ---

741 if (ret < 0) {
742 return ret;
743 }
744 extent->flat_start_offset = flat_offset << 9;
745 } else if (!strcmp(type, "SPARSE") || !strcmp(type, "VMFSSPARSE")) {
746 /* SPARSE extent and VMFSSPARSE extent are both "COWD" sparse file*/
747 ret = vmdk_open_sparse(bs, extent_file, bs->open_flags);
748 if (ret) {
220 }
221 }
222 g_free(s->extents);
223}
224
225static void vmdk_free_last_extent(BlockDriverState *bs)
226{
227 BDRVVmdkState *s = bs->opaque;

--- 513 unchanged lines hidden (view full) ---

741 if (ret < 0) {
742 return ret;
743 }
744 extent->flat_start_offset = flat_offset << 9;
745 } else if (!strcmp(type, "SPARSE") || !strcmp(type, "VMFSSPARSE")) {
746 /* SPARSE extent and VMFSSPARSE extent are both "COWD" sparse file*/
747 ret = vmdk_open_sparse(bs, extent_file, bs->open_flags);
748 if (ret) {
749 bdrv_delete(extent_file);
749 bdrv_unref(extent_file);
750 return ret;
751 }
752 } else {
753 fprintf(stderr,
754 "VMDK: Not supported extent type \"%s\""".\n", type);
755 return -ENOTSUP;
756 }
757next_line:

--- 873 unchanged lines hidden (view full) ---

1631 if (flat && backing_file) {
1632 /* not supporting backing file for flat image */
1633 return -ENOTSUP;
1634 }
1635 if (backing_file) {
1636 BlockDriverState *bs = bdrv_new("");
1637 ret = bdrv_open(bs, backing_file, NULL, 0, NULL);
1638 if (ret != 0) {
750 return ret;
751 }
752 } else {
753 fprintf(stderr,
754 "VMDK: Not supported extent type \"%s\""".\n", type);
755 return -ENOTSUP;
756 }
757next_line:

--- 873 unchanged lines hidden (view full) ---

1631 if (flat && backing_file) {
1632 /* not supporting backing file for flat image */
1633 return -ENOTSUP;
1634 }
1635 if (backing_file) {
1636 BlockDriverState *bs = bdrv_new("");
1637 ret = bdrv_open(bs, backing_file, NULL, 0, NULL);
1638 if (ret != 0) {
1639 bdrv_delete(bs);
1639 bdrv_unref(bs);
1640 return ret;
1641 }
1642 if (strcmp(bs->drv->format_name, "vmdk")) {
1640 return ret;
1641 }
1642 if (strcmp(bs->drv->format_name, "vmdk")) {
1643 bdrv_delete(bs);
1643 bdrv_unref(bs);
1644 return -EINVAL;
1645 }
1646 parent_cid = vmdk_read_cid(bs, 0);
1644 return -EINVAL;
1645 }
1646 parent_cid = vmdk_read_cid(bs, 0);
1647 bdrv_delete(bs);
1647 bdrv_unref(bs);
1648 snprintf(parent_desc_line, sizeof(parent_desc_line),
1649 "parentFileNameHint=\"%s\"", backing_file);
1650 }
1651
1652 /* Create extents */
1653 filesize = total_size;
1654 while (filesize > 0) {
1655 char desc_line[BUF_SIZE];

--- 197 unchanged lines hidden ---
1648 snprintf(parent_desc_line, sizeof(parent_desc_line),
1649 "parentFileNameHint=\"%s\"", backing_file);
1650 }
1651
1652 /* Create extents */
1653 filesize = total_size;
1654 while (filesize > 0) {
1655 char desc_line[BUF_SIZE];

--- 197 unchanged lines hidden ---