Revision fb8fa77c
b/block/qcow2-cluster.c | ||
---|---|---|
67 | 67 |
/* set new table */ |
68 | 68 |
cpu_to_be32w((uint32_t*)data, new_l1_size); |
69 | 69 |
cpu_to_be64w((uint64_t*)(data + 4), new_l1_table_offset); |
70 |
if (bdrv_pwrite(s->hd, offsetof(QCowHeader, l1_size), data,
|
|
71 |
sizeof(data)) != sizeof(data))
|
|
70 |
ret = bdrv_pwrite(s->hd, offsetof(QCowHeader, l1_size), data,sizeof(data));
|
|
71 |
if (ret != sizeof(data)) {
|
|
72 | 72 |
goto fail; |
73 |
} |
|
73 | 74 |
qemu_free(s->l1_table); |
74 | 75 |
qcow2_free_clusters(bs, s->l1_table_offset, s->l1_size * sizeof(uint64_t)); |
75 | 76 |
s->l1_table_offset = new_l1_table_offset; |
... | ... | |
77 | 78 |
s->l1_size = new_l1_size; |
78 | 79 |
return 0; |
79 | 80 |
fail: |
80 |
qemu_free(s->l1_table); |
|
81 |
return -EIO; |
|
81 |
qemu_free(new_l1_table); |
|
82 |
qcow2_free_clusters(bs, new_l1_table_offset, new_l1_size2); |
|
83 |
return ret < 0 ? ret : -EIO; |
|
82 | 84 |
} |
83 | 85 |
|
84 | 86 |
void qcow2_l2_cache_reset(BlockDriverState *bs) |
Also available in: Unified diff