[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [Qemu-block] [PATCH 0/5] Discrad blocks during block-st
From: |
Andrey Shinkevich |
Subject: |
Re: [Qemu-devel] [Qemu-block] [PATCH 0/5] Discrad blocks during block-stream operation |
Date: |
Fri, 23 Nov 2018 14:01:48 +0000 |
Dear Peter,
Thank you for your response.
The 'discard' option is useful when pulling a huge file. That will save
a disk
space significantly.
The 'commit' operation would be useful as well but it is harder to implement
due to concurrent writes of a guest. Which command to use, 'pull' or
'commit',
depends on an image to merge that can incur the performance issue.
Currently, the 'discard' option works for streaming into the active
layer only.
There is a serious trouble with the child's WRITE permission while streaming
into an inactive layer. Once resolved, it will work right away with the
current
version. So, the existent child permission mechanism is a headache we kindly
ask all of you to advise how to cope with it. Please refer to the
descriptions and
comments in the patch files for details.
Kindly,
Andrey Shinkevich
On 23.11.2018 10:45, Peter Krempa wrote:
> On Thu, Nov 22, 2018 at 21:48:02 +0300, Andrey Shinkevich wrote:
>> Hello everyone!
>>
>> The given feature discards blocks with copy-on-read operation while the
>> streaming process runs. Adding the 'discard' argument to the QMP block-stream
>> command allows dropping a block in the backing chain after it has been copied
>> to the active layer. That will elude the block duplication in the
>> intermediate
>> backing file. It saves the disk space while external snapshots are being
>> merged.
> So you specifically want to merge the snapshot by pulling rather than
> commiting? Do you have any specific reasons for that? I'm curious
> because I plan to finally finish external snapshots in libvirt.
>
> Allowing to pull into intermediate layers will be (or is?) very welcome
> by libvirt since I plan to do external snapshot deletion/merging and
> that will be greatly simplified by pulling.
>
> On the other hand libvirt will not be able to always use 'discard' as
> libvirt's API allows creating alternate histories for a VM and in such
> case when merging a snapshot at a branching point we'll need to pull it
> into multiple images. The 'discard' optimization can then be used only
> with the last branch.
>
> Libvirt's reasons for using 'block-stream' are mostly as it corresponds
> to the operations necessary for not messing up the relationship between
> the snapshot and which files on disk belong to it.
- [Qemu-devel] [PATCH 0/5] Discrad blocks during block-stream operation, Andrey Shinkevich, 2018/11/22
- [Qemu-devel] [PATCH 3/5] iotests: allow resume_drive by node name, Andrey Shinkevich, 2018/11/22
- [Qemu-devel] [PATCH 4/5] iotests: prepare 030 for graph change, Andrey Shinkevich, 2018/11/22
- [Qemu-devel] [PATCH 1/5] Discard blocks while copy-on-read, Andrey Shinkevich, 2018/11/22
- [Qemu-devel] [PATCH 5/5] iotests: 030 with block-stream discard, Andrey Shinkevich, 2018/11/22
- [Qemu-devel] [PATCH 2/5] The discard flag for block stream operation, Andrey Shinkevich, 2018/11/22
- Re: [Qemu-devel] [Qemu-block] [PATCH 0/5] Discrad blocks during block-stream operation, Peter Krempa, 2018/11/23
- Re: [Qemu-devel] [Qemu-block] [PATCH 0/5] Discrad blocks during block-stream operation,
Andrey Shinkevich <=