Revision 5e5557d9
b/block/qcow.c | ||
---|---|---|
273 | 273 |
/* update the L1 entry */ |
274 | 274 |
s->l1_table[l1_index] = l2_offset; |
275 | 275 |
tmp = cpu_to_be64(l2_offset); |
276 |
if (bdrv_pwrite(bs->file, s->l1_table_offset + l1_index * sizeof(tmp), |
|
277 |
&tmp, sizeof(tmp)) != sizeof(tmp)) |
|
276 |
if (bdrv_pwrite_sync(bs->file, |
|
277 |
s->l1_table_offset + l1_index * sizeof(tmp), |
|
278 |
&tmp, sizeof(tmp)) < 0) |
|
278 | 279 |
return 0; |
279 | 280 |
new_l2_table = 1; |
280 | 281 |
} |
... | ... | |
302 | 303 |
l2_table = s->l2_cache + (min_index << s->l2_bits); |
303 | 304 |
if (new_l2_table) { |
304 | 305 |
memset(l2_table, 0, s->l2_size * sizeof(uint64_t)); |
305 |
if (bdrv_pwrite(bs->file, l2_offset, l2_table, s->l2_size * sizeof(uint64_t)) !=
|
|
306 |
s->l2_size * sizeof(uint64_t))
|
|
306 |
if (bdrv_pwrite_sync(bs->file, l2_offset, l2_table,
|
|
307 |
s->l2_size * sizeof(uint64_t)) < 0)
|
|
307 | 308 |
return 0; |
308 | 309 |
} else { |
309 | 310 |
if (bdrv_pread(bs->file, l2_offset, l2_table, s->l2_size * sizeof(uint64_t)) != |
... | ... | |
368 | 369 |
/* update L2 table */ |
369 | 370 |
tmp = cpu_to_be64(cluster_offset); |
370 | 371 |
l2_table[l2_index] = tmp; |
371 |
if (bdrv_pwrite(bs->file,
|
|
372 |
l2_offset + l2_index * sizeof(tmp), &tmp, sizeof(tmp)) != sizeof(tmp))
|
|
372 |
if (bdrv_pwrite_sync(bs->file, l2_offset + l2_index * sizeof(tmp),
|
|
373 |
&tmp, sizeof(tmp)) < 0)
|
|
373 | 374 |
return 0; |
374 | 375 |
} |
375 | 376 |
return cluster_offset; |
... | ... | |
835 | 836 |
int ret; |
836 | 837 |
|
837 | 838 |
memset(s->l1_table, 0, l1_length); |
838 |
if (bdrv_pwrite(bs->file, s->l1_table_offset, s->l1_table, l1_length) < 0) |
|
839 |
return -1; |
|
839 |
if (bdrv_pwrite_sync(bs->file, s->l1_table_offset, s->l1_table, |
|
840 |
l1_length) < 0) |
|
841 |
return -1; |
|
840 | 842 |
ret = bdrv_truncate(bs->file, s->l1_table_offset + l1_length); |
841 | 843 |
if (ret < 0) |
842 | 844 |
return ret; |
Also available in: Unified diff