[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 06/20] qcow2: Prepare qcow2_get_cluster_type() for e
From: |
Kevin Wolf |
Subject: |
[Qemu-devel] [PATCH 06/20] qcow2: Prepare qcow2_get_cluster_type() for external data file |
Date: |
Wed, 27 Feb 2019 18:22:42 +0100 |
Signed-off-by: Kevin Wolf <address@hidden>
---
block/qcow2.h | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/block/qcow2.h b/block/qcow2.h
index 7a34bd0c53..8fe2d55005 100644
--- a/block/qcow2.h
+++ b/block/qcow2.h
@@ -521,7 +521,15 @@ static inline QCow2ClusterType
qcow2_get_cluster_type(BlockDriverState *bs,
}
return QCOW2_CLUSTER_ZERO_PLAIN;
} else if (!(l2_entry & L2E_OFFSET_MASK)) {
- return QCOW2_CLUSTER_UNALLOCATED;
+ /* Offset 0 generally means unallocated, but it is ambiguous with
+ * external data files because 0 is a valid offset there. However, all
+ * clusters in external data files always have refcount 1, so we can
+ * rely on QCOW_OFLAG_COPIED to disambiguate. */
+ if (has_data_file(bs) && (l2_entry & QCOW_OFLAG_COPIED)) {
+ return QCOW2_CLUSTER_NORMAL;
+ } else {
+ return QCOW2_CLUSTER_UNALLOCATED;
+ }
} else {
return QCOW2_CLUSTER_NORMAL;
}
--
2.20.1
- [Qemu-devel] [PATCH 00/20] qcow2: External data files, Kevin Wolf, 2019/02/27
- [Qemu-devel] [PATCH 01/20] qemu-iotests: Test qcow2 preallocation modes, Kevin Wolf, 2019/02/27
- [Qemu-devel] [PATCH 03/20] qcow2: Extend spec for external data files, Kevin Wolf, 2019/02/27
- [Qemu-devel] [PATCH 05/20] qcow2: Pass bs to qcow2_get_cluster_type(), Kevin Wolf, 2019/02/27
- [Qemu-devel] [PATCH 06/20] qcow2: Prepare qcow2_get_cluster_type() for external data file,
Kevin Wolf <=
- [Qemu-devel] [PATCH 18/20] qemu-iotests: Preallocation with external data file, Kevin Wolf, 2019/02/27
- [Qemu-devel] [PATCH 14/20] qcow2: Add basic data-file infrastructure, Kevin Wolf, 2019/02/27
- [Qemu-devel] [PATCH 09/20] qcow2: Return 0/-errno in qcow2_alloc_compressed_cluster_offset(), Kevin Wolf, 2019/02/27
- [Qemu-devel] [PATCH 02/20] qcow2: Simplify preallocation code, Kevin Wolf, 2019/02/27
- [Qemu-devel] [PATCH 13/20] qcow2: Support external data file in qemu-img check, Kevin Wolf, 2019/02/27
- [Qemu-devel] [PATCH 07/20] qcow2: Prepare count_contiguous_clusters() for external data file, Kevin Wolf, 2019/02/27
- [Qemu-devel] [PATCH 10/20] qcow2: Prepare qcow2_co_block_status() for data file, Kevin Wolf, 2019/02/27
- [Qemu-devel] [PATCH 08/20] qcow2: Don't assume 0 is an invalid cluster offset, Kevin Wolf, 2019/02/27
- [Qemu-devel] [PATCH 20/20] qemu-iotests: amend with external data file, Kevin Wolf, 2019/02/27
- [Qemu-devel] [PATCH 15/20] qcow2: Creating images with external data file, Kevin Wolf, 2019/02/27