Also, does the 4KB block size get "passed-through" to the guest somehow
so that the guest knows it needs to use 4KB blocks, or does that need to
be explicitly specified via virtio-blk-pci.logical_block_size and/or
virtio-blk-pci.physical_block_size parameters? (Assuming I'm using
virtio-blk-pci.)
Again, qemu should be passing the advertisement of host properties down
to the guest insofar as possible (so a good guest will see that the
hardware is 4k only and will not try to make 512-byte requests), but at
the same time, qemu should handle guests that are so old that they are
blissfully unaware of the hardware advertisements and send 512-byte
requests anyway. Of course, such guests are penalized with
read-modify-write delays when submitting 512-byte IO. But explicitly
stating available parameters is always the wisest course of action, if
you don't want to rely on defaults changing underneath you.