Hi, https://gitlab.com/qemu-project/qemu/-/issues/1507 reports a bug in FUSE exports: fallocate(PUNCH_HOLE) is implemented with blk_pdiscard(), but its man page documents that a successful call will result in the data being read as zero. blk_pdiscard() does not guarantee this, so we must use blk_pwrite_zeroes() instead (with MAY_UNMAP | NO_FALLBACK, which differentiates it from fallocate(ZERO_RANGE)).
Patch 2 adds a regression test. Hanna Czenczek (2): block/fuse: Let PUNCH_HOLE write zeroes iotests/308: Add test for 'write -zu' block/export/fuse.c | 11 +++++++++- tests/qemu-iotests/308 | 43 ++++++++++++++++++++++++++++++++++++++ tests/qemu-iotests/308.out | 35 +++++++++++++++++++++++++++++++ 3 files changed, 88 insertions(+), 1 deletion(-) -- 2.39.1