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