Revision 0b919fae block/qcow2-cluster.c
b/block/qcow2-cluster.c | ||
---|---|---|
1377 | 1377 |
|
1378 | 1378 |
nb_clusters = size_to_clusters(s, end_offset - offset); |
1379 | 1379 |
|
1380 |
s->cache_discards = true; |
|
1381 |
|
|
1380 | 1382 |
/* Each L2 table is handled by its own loop iteration */ |
1381 | 1383 |
while (nb_clusters > 0) { |
1382 | 1384 |
ret = discard_single_l2(bs, offset, nb_clusters); |
1383 | 1385 |
if (ret < 0) { |
1384 |
return ret;
|
|
1386 |
goto fail;
|
|
1385 | 1387 |
} |
1386 | 1388 |
|
1387 | 1389 |
nb_clusters -= ret; |
1388 | 1390 |
offset += (ret * s->cluster_size); |
1389 | 1391 |
} |
1390 | 1392 |
|
1391 |
return 0; |
|
1393 |
ret = 0; |
|
1394 |
fail: |
|
1395 |
s->cache_discards = false; |
|
1396 |
qcow2_process_discards(bs, ret); |
|
1397 |
|
|
1398 |
return ret; |
|
1392 | 1399 |
} |
1393 | 1400 |
|
1394 | 1401 |
/* |
... | ... | |
1450 | 1457 |
/* Each L2 table is handled by its own loop iteration */ |
1451 | 1458 |
nb_clusters = size_to_clusters(s, nb_sectors << BDRV_SECTOR_BITS); |
1452 | 1459 |
|
1460 |
s->cache_discards = true; |
|
1461 |
|
|
1453 | 1462 |
while (nb_clusters > 0) { |
1454 | 1463 |
ret = zero_single_l2(bs, offset, nb_clusters); |
1455 | 1464 |
if (ret < 0) { |
1456 |
return ret;
|
|
1465 |
goto fail;
|
|
1457 | 1466 |
} |
1458 | 1467 |
|
1459 | 1468 |
nb_clusters -= ret; |
1460 | 1469 |
offset += (ret * s->cluster_size); |
1461 | 1470 |
} |
1462 | 1471 |
|
1463 |
return 0; |
|
1472 |
ret = 0; |
|
1473 |
fail: |
|
1474 |
s->cache_discards = false; |
|
1475 |
qcow2_process_discards(bs, ret); |
|
1476 |
|
|
1477 |
return ret; |
|
1464 | 1478 |
} |
Also available in: Unified diff