These patches eliminate data writes completely on Linux if fallocate FALLOC_FL_ZERO_RANGE or FALLOC_FL_PUNCH_HOLE are supported on underlying filesystem.
I have performed several tests with non-aligned fallocate calls and in all cases (with non-aligned fallocates) Linux performs fine, i.e. areas are zeroed correctly. Checks were made on Linux 3.16.0-28-generic #38-Ubuntu SMP This should seriously increase performance of bdrv_write_zeroes Changes from v3: - dropped original patch 1, equivalent stuff was merged already - reordered patches as suggested by Fam - fixes spelling errors as suggested by Fam - fixed not initialized value in handle_aiocb_write_zeroes - fixed wrong error processing from do_fallocate(FALLOC_FL_ZERO_RANGE) Changes from v2: - added Peter Lieven to CC - added CONFIG_FALLOCATE check to call do_fallocate in patch 7 - dropped patch 1 as NACK-ed - added processing of very large data areas in bdrv_co_write_zeroes (new patch 1) - set bl.max_write_zeroes to INT_MAX in raw-posix.c for regular files (new patch 8) Signed-off-by: Denis V. Lunev <d...@openvz.org> CC: Kevin Wolf <kw...@redhat.com> CC: Stefan Hajnoczi <stefa...@redhat.com> CC: Peter Lieven <p...@kamp.de> CC: Fam Zheng <f...@redhat.com>