block: introduce preallocate filter

It's intended to be inserted between format and protocol nodes to
preallocate additional space (expanding protocol file) on writes
crossing EOF. It improves performance for file-systems with slow
allocation.

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Message-Id: <20201021145859.11201-9-vsementsov@virtuozzo.com>
Reviewed-by: Max Reitz <mreitz@redhat.com>
[mreitz: Two comment fixes, and bumped the version from 5.2 to 6.0]
Signed-off-by: Max Reitz <mreitz@redhat.com>
This commit is contained in:
Vladimir Sementsov-Ogievskiy 2020-10-21 17:58:46 +03:00 committed by Max Reitz
parent 9530a25b8b
commit 33fa2222eb
4 changed files with 605 additions and 1 deletions

View file

@ -952,3 +952,29 @@ on host and see if there are locks held by the QEMU process on the image file.
More than one byte could be locked by the QEMU instance, each byte of which
reflects a particular permission that is acquired or protected by the running
block driver.
Filter drivers
~~~~~~~~~~~~~~
QEMU supports several filter drivers, which don't store any data, but perform
some additional tasks, hooking io requests.
.. program:: filter-drivers
.. option:: preallocate
The preallocate filter driver is intended to be inserted between format
and protocol nodes and preallocates some additional space
(expanding the protocol file) when writing past the files end. This can be
useful for file-systems with slow allocation.
Supported options:
.. program:: preallocate
.. option:: prealloc-align
On preallocation, align the file length to this value (in bytes), default 1M.
.. program:: preallocate
.. option:: prealloc-size
How much to preallocate (in bytes), default 128M.