On Tue 14 Jan 2020 03:15:48 PM CET, Max Reitz wrote: >> @@ -219,7 +219,7 @@ static int l2_load(BlockDriverState *bs, uint64_t offset, >> * Writes one sector of the L1 table to the disk (can't update single >> entries >> * and we really don't want bdrv_pread to perform a read-modify-write) >> */ >> -#define L1_ENTRIES_PER_SECTOR (512 / 8) >> +#define L1_ENTRIES_PER_SECTOR (BDRV_SECTOR_SIZE / 8) >> int qcow2_write_l1_entry(BlockDriverState *bs, int l1_index) > > Here it’s because the comment is wrong: “Can’t update single entries” – > yes, we can. We’d just have to do a bdrv_pwrite() to a single entry.
What's the point of qcow2_write_l1_entry() then? >> @@ -3836,7 +3837,7 @@ qcow2_co_copy_range_from(BlockDriverState *bs, >> case QCOW2_CLUSTER_NORMAL: >> child = s->data_file; >> copy_offset += offset_into_cluster(s, src_offset); >> - if ((copy_offset & 511) != 0) { >> + if (!QEMU_IS_ALIGNED(copy_offset, BDRV_SECTOR_SIZE)) { > > Hm. I don’t get this one. Checking the code (e.g. block_copy_do_copy()) it seems that the whole chunk must be cluster aligned so I don't get this one either. Berto