Revision a40f1c2a block/qcow2.h
b/block/qcow2.h | ||
---|---|---|
289 | 289 |
QCOW2_CLUSTER_ZERO |
290 | 290 |
}; |
291 | 291 |
|
292 |
typedef enum QCow2MetadataOverlap { |
|
293 |
QCOW2_OL_MAIN_HEADER_BITNR = 0, |
|
294 |
QCOW2_OL_ACTIVE_L1_BITNR = 1, |
|
295 |
QCOW2_OL_ACTIVE_L2_BITNR = 2, |
|
296 |
QCOW2_OL_REFCOUNT_TABLE_BITNR = 3, |
|
297 |
QCOW2_OL_REFCOUNT_BLOCK_BITNR = 4, |
|
298 |
QCOW2_OL_SNAPSHOT_TABLE_BITNR = 5, |
|
299 |
QCOW2_OL_INACTIVE_L1_BITNR = 6, |
|
300 |
QCOW2_OL_INACTIVE_L2_BITNR = 7, |
|
301 |
|
|
302 |
QCOW2_OL_MAX_BITNR = 8, |
|
303 |
|
|
304 |
QCOW2_OL_NONE = 0, |
|
305 |
QCOW2_OL_MAIN_HEADER = (1 << QCOW2_OL_MAIN_HEADER_BITNR), |
|
306 |
QCOW2_OL_ACTIVE_L1 = (1 << QCOW2_OL_ACTIVE_L1_BITNR), |
|
307 |
QCOW2_OL_ACTIVE_L2 = (1 << QCOW2_OL_ACTIVE_L2_BITNR), |
|
308 |
QCOW2_OL_REFCOUNT_TABLE = (1 << QCOW2_OL_REFCOUNT_TABLE_BITNR), |
|
309 |
QCOW2_OL_REFCOUNT_BLOCK = (1 << QCOW2_OL_REFCOUNT_BLOCK_BITNR), |
|
310 |
QCOW2_OL_SNAPSHOT_TABLE = (1 << QCOW2_OL_SNAPSHOT_TABLE_BITNR), |
|
311 |
QCOW2_OL_INACTIVE_L1 = (1 << QCOW2_OL_INACTIVE_L1_BITNR), |
|
312 |
/* NOTE: Checking overlaps with inactive L2 tables will result in bdrv |
|
313 |
* reads. */ |
|
314 |
QCOW2_OL_INACTIVE_L2 = (1 << QCOW2_OL_INACTIVE_L2_BITNR), |
|
315 |
} QCow2MetadataOverlap; |
|
316 |
|
|
317 |
/* Perform all overlap checks which don't require disk access */ |
|
318 |
#define QCOW2_OL_CACHED \ |
|
319 |
(QCOW2_OL_MAIN_HEADER | QCOW2_OL_ACTIVE_L1 | QCOW2_OL_ACTIVE_L2 | \ |
|
320 |
QCOW2_OL_REFCOUNT_TABLE | QCOW2_OL_REFCOUNT_BLOCK | \ |
|
321 |
QCOW2_OL_SNAPSHOT_TABLE | QCOW2_OL_INACTIVE_L1) |
|
322 |
|
|
323 |
/* The default checks to perform */ |
|
324 |
#define QCOW2_OL_DEFAULT QCOW2_OL_CACHED |
|
325 |
|
|
292 | 326 |
#define L1E_OFFSET_MASK 0x00ffffffffffff00ULL |
293 | 327 |
#define L2E_OFFSET_MASK 0x00ffffffffffff00ULL |
294 | 328 |
#define L2E_COMPRESSED_OFFSET_SIZE_MASK 0x3fffffffffffffffULL |
... | ... | |
390 | 424 |
|
391 | 425 |
void qcow2_process_discards(BlockDriverState *bs, int ret); |
392 | 426 |
|
427 |
int qcow2_check_metadata_overlap(BlockDriverState *bs, int chk, int64_t offset, |
|
428 |
int64_t size); |
|
429 |
int qcow2_pre_write_overlap_check(BlockDriverState *bs, int chk, int64_t offset, |
|
430 |
int64_t size); |
|
431 |
|
|
393 | 432 |
/* qcow2-cluster.c functions */ |
394 | 433 |
int qcow2_grow_l1_table(BlockDriverState *bs, uint64_t min_size, |
395 | 434 |
bool exact_size); |
Also available in: Unified diff