Lines Matching refs:cluster_offset

96 decompress_cluster(BlockDriverState *bs, uint64_t cluster_offset);
366 uint64_t *l2_table, cluster_offset, tmp; in get_cluster_offset() local
437 cluster_offset = be64_to_cpu(l2_table[l2_index]); in get_cluster_offset()
438 if (!cluster_offset || in get_cluster_offset()
439 ((cluster_offset & QCOW_OFLAG_COMPRESSED) && allocate == 1)) { in get_cluster_offset()
445 if ((cluster_offset & QCOW_OFLAG_COMPRESSED) && in get_cluster_offset()
450 if (decompress_cluster(bs, cluster_offset) < 0) { in get_cluster_offset()
453 cluster_offset = bdrv_co_getlength(bs->file->bs); in get_cluster_offset()
454 if ((int64_t) cluster_offset < 0) { in get_cluster_offset()
455 return cluster_offset; in get_cluster_offset()
457 cluster_offset = QEMU_ALIGN_UP(cluster_offset, s->cluster_size); in get_cluster_offset()
460 ret = bdrv_co_pwrite(bs->file, cluster_offset, s->cluster_size, in get_cluster_offset()
466 cluster_offset = bdrv_co_getlength(bs->file->bs); in get_cluster_offset()
467 if ((int64_t) cluster_offset < 0) { in get_cluster_offset()
468 return cluster_offset; in get_cluster_offset()
472 cluster_offset = QEMU_ALIGN_UP(cluster_offset, s->cluster_size); in get_cluster_offset()
473 if (cluster_offset + s->cluster_size > INT64_MAX) { in get_cluster_offset()
477 cluster_offset + s->cluster_size, in get_cluster_offset()
500 ret = bdrv_co_pwrite(bs->file, cluster_offset + i, in get_cluster_offset()
510 cluster_offset |= QCOW_OFLAG_COMPRESSED | in get_cluster_offset()
515 tmp = cpu_to_be64(cluster_offset); in get_cluster_offset()
528 *result = cluster_offset; in get_cluster_offset()
540 uint64_t cluster_offset; in qcow_co_block_status() local
543 ret = get_cluster_offset(bs, offset, 0, 0, 0, 0, &cluster_offset); in qcow_co_block_status()
554 if (!cluster_offset) { in qcow_co_block_status()
557 if (cluster_offset & QCOW_OFLAG_COMPRESSED) { in qcow_co_block_status()
563 *map = cluster_offset | index_in_cluster; in qcow_co_block_status()
596 decompress_cluster(BlockDriverState *bs, uint64_t cluster_offset) in decompress_cluster() argument
602 coffset = cluster_offset & s->cluster_offset_mask; in decompress_cluster()
604 csize = cluster_offset >> (63 - s->cluster_bits); in decompress_cluster()
635 uint64_t cluster_offset; in qcow_co_preadv() local
653 ret = get_cluster_offset(bs, offset, 0, 0, 0, 0, &cluster_offset); in qcow_co_preadv()
663 if (!cluster_offset) { in qcow_co_preadv()
678 } else if (cluster_offset & QCOW_OFLAG_COMPRESSED) { in qcow_co_preadv()
680 if (decompress_cluster(bs, cluster_offset) < 0) { in qcow_co_preadv()
686 if ((cluster_offset & 511) != 0) { in qcow_co_preadv()
692 ret = bdrv_co_pread(bs->file, cluster_offset + offset_in_cluster, in qcow_co_preadv()
730 uint64_t cluster_offset; in qcow_co_pwritev() local
759 offset_in_cluster + n, &cluster_offset); in qcow_co_pwritev()
763 if (!cluster_offset || (cluster_offset & 511) != 0) { in qcow_co_pwritev()
777 ret = bdrv_co_pwrite(bs->file, cluster_offset + offset_in_cluster, in qcow_co_pwritev()
1062 uint64_t cluster_offset; in qcow_co_pwritev_compressed() local
1113 ret = get_cluster_offset(bs, offset, 2, out_len, 0, 0, &cluster_offset); in qcow_co_pwritev_compressed()
1118 if (cluster_offset == 0) { in qcow_co_pwritev_compressed()
1122 cluster_offset &= s->cluster_offset_mask; in qcow_co_pwritev_compressed()
1125 ret = bdrv_co_pwrite(bs->file, cluster_offset, out_len, out_buf, 0); in qcow_co_pwritev_compressed()