This series fixes a bug I introduced in commit 5634622bcb33 ("file-posix: allow
BLKZEROOUT with -t writeback"). The Linux fallocate(2) and ioctl(BLKZEROOUT)
syscalls require logical block size alignment of the offset and length, even
when the file is opened in buffered I/O mode where read/write operations do not
require alignment.The fix is to populate the pwrite_zeroes_alignment block limits field and to use that limit in create_file_fallback_zero_first_sector(). One issue I want to raise is that pwrite_zeroes_alignment is an "optimal alignment" hint. Hence create_file_fallback_zero_first_sector() had to be modified to honor the limit explicitly. The block layer doesn't automatically apply padding in order to align requests. This is different from how QEMU's block layer pwrite/pread works, where it does automatically apply padding and read/modify/write as necessary. If you want consistency, please let me know. Stefan Hajnoczi (3): file-posix: populate pwrite_zeroes_alignment block: use pwrite_zeroes_alignment when writing first sector iotests: add Linux loop device image creation test include/system/block-backend-io.h | 1 + block.c | 3 +- block/block-backend.c | 11 ++++ block/file-posix.c | 17 ++++++ tests/qemu-iotests/tests/loop-create-file | 59 +++++++++++++++++++ tests/qemu-iotests/tests/loop-create-file.out | 8 +++ 6 files changed, 98 insertions(+), 1 deletion(-) create mode 100755 tests/qemu-iotests/tests/loop-create-file create mode 100644 tests/qemu-iotests/tests/loop-create-file.out -- 2.51.0
