file-posix: Handle `EINVAL` fallocate return value
commitbae127d4dcf6158c5042e2eee9582430839a9967
authorAntoine Damhet <antoine.damhet@blade-group.com>
Fri, 17 Jul 2020 13:56:04 +0000 (17 15:56 +0200)
committerKevin Wolf <kwolf@redhat.com>
Tue, 21 Jul 2020 14:28:57 +0000 (21 16:28 +0200)
tree6919befe979e743830757f1d820baa06831f98bb
parent90218a9a393c7925f330e7dcc08658e2a01d3bd4
file-posix: Handle `EINVAL` fallocate return value

The `detect-zeroes=unmap` option may issue unaligned
`FALLOC_FL_PUNCH_HOLE` requests, raw block devices can (and will) return
`EINVAL`, qemu should then write the zeroes to the blockdev instead of
issuing an `IO_ERROR`.

The problem can be reprodced like this:

$ qemu-io -c 'write -P 0 42 1234' --image-opts driver=host_device,filename=/dev/loop0,detect-zeroes=unmap
write failed: Invalid argument

Signed-off-by: Antoine Damhet <antoine.damhet@blade-group.com>
Message-Id: <20200717135603.51180-1-antoine.damhet@blade-group.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
block/file-posix.c