[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v5 0/7] eliminate data write in bdrv_write_zeroes on
From: |
Denis V. Lunev |
Subject: |
[Qemu-devel] [PATCH v5 0/7] eliminate data write in bdrv_write_zeroes on Linux in raw-posix.c |
Date: |
Wed, 28 Jan 2015 21:38:51 +0300 |
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 v4:
- comments to patches are improved by Max Reitz suggestions
- replaced 'return ret' with 'return -ENOTSUP' handle_aiocb_write_zeroes
The idea is that we can reach that point only if original ret was
equal to -ENOTSUP
- added has_fallocate flag to indicate that fallocate is working for
given BDS
- checked file length with bdrv_getlength
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 <address@hidden>
CC: Max Reitz <address@hidden>
CC: Kevin Wolf <address@hidden>
CC: Stefan Hajnoczi <address@hidden>
CC: Peter Lieven <address@hidden>
CC: Fam Zheng <address@hidden>
- [Qemu-devel] [PATCH v5 0/7] eliminate data write in bdrv_write_zeroes on Linux in raw-posix.c,
Denis V. Lunev <=
- [Qemu-devel] [PATCH 7/7] block/raw-posix: set max_write_zeroes to INT_MAX for regular files, Denis V. Lunev, 2015/01/28
- [Qemu-devel] [PATCH 3/7] block/raw-posix: refactor handle_aiocb_write_zeroes a bit, Denis V. Lunev, 2015/01/28
- [Qemu-devel] [PATCH 5/7] block: use fallocate(FALLOC_FL_PUNCH_HOLE) & fallocate(0) to write zeroes, Denis V. Lunev, 2015/01/28
- [Qemu-devel] [PATCH 6/7] block/raw-posix: call plain fallocate in handle_aiocb_write_zeroes, Denis V. Lunev, 2015/01/28
- [Qemu-devel] [PATCH 2/7] block/raw-posix: create do_fallocate helper, Denis V. Lunev, 2015/01/28
- [Qemu-devel] [PATCH 4/7] block: use fallocate(FALLOC_FL_ZERO_RANGE) in handle_aiocb_write_zeroes, Denis V. Lunev, 2015/01/28