qemu-e2k/qapi
Vladimir Sementsov-Ogievskiy 1c14eaabdb block: introduce snapshot-access block driver
The new block driver simply utilizes snapshot-access API of underlying
block node.

In further patches we want to use it like this:

[guest]                   [NBD export]
   |                            |
   | root                       | root
   v                 file       v
[copy-before-write]<------[snapshot-access]
   |           |
   | file      | target
   v           v
[active-disk] [temp.img]

This way, NBD client will be able to read snapshotted state of active
disk, when active disk is continued to be written by guest. This is
known as "fleecing", and currently uses another scheme based on qcow2
temporary image which backing file is active-disk. New scheme comes
with benefits - see next commit.

The other possible application is exporting internal snapshots of
qcow2, like this:

[guest]          [NBD export]
   |                  |
   | root             | root
   v       file       v
[qcow2]<---------[snapshot-access]

For this, we'll need to implement snapshot-access API handlers in
qcow2 driver, and improve snapshot-access block driver (and API) to
make it possible to select snapshot by name. Another thing to improve
is size of snapshot. Now for simplicity we just use size of bs->file,
which is OK for backup, but for qcow2 snapshots export we'll need to
imporve snapshot-access API to get size of snapshot.

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Message-Id: <20220303194349.2304213-12-vsementsov@virtuozzo.com>
[hreitz: Rebased on block GS/IO split]
Signed-off-by: Hanna Reitz <hreitz@redhat.com>
2022-03-07 09:33:31 +01:00
..
acpi.json
audio.json schemas: add missing vim modeline 2022-01-27 11:20:50 +01:00
authz.json
block-core.json block: introduce snapshot-access block driver 2022-03-07 09:33:31 +01:00
block-export.json qapi/block: Cosmetic change in BlockExportType schema 2022-01-28 16:50:43 -06:00
block.json
char.json ui/dbus: add chardev backend & interface 2021-12-21 10:50:22 +04:00
common.json
compat.json qapi: Belatedly adjust limitations documentation 2022-02-28 11:39:35 +01:00
control.json
crypto.json
dump.json
error.json
introspect.json
job.json
machine-target.json
machine.json qapi: Cleanup SGX related comments and restore @section-size 2022-01-28 11:13:33 +01:00
meson.build qapi: generate trace events by default 2022-01-27 15:17:35 +01:00
migration.json qapi/migration: Fix examples document wrong field name for arguments 2022-02-28 11:39:35 +01:00
misc-target.json qapi: Move RTC_CHANGE back out of target schema 2022-02-28 11:39:35 +01:00
misc.json rtc: Have event RTC_CHANGE identify the RTC by QOM path 2022-02-28 11:39:35 +01:00
net.json
opts-visitor.c
pci.json
pragma.json
qapi-clone-visitor.c
qapi-dealloc-visitor.c
qapi-forward-visitor.c
qapi-schema.json
qapi-type-helpers.c
qapi-util.c qapi: Fix stale reference to scripts/qapi.py in a comment 2022-02-28 11:39:35 +01:00
qapi-visit-core.c
qdev.json softmmu: fix device deletion events with -device JSON syntax 2022-01-14 12:03:16 +01:00
qmp-dispatch.c
qmp-event.c
qmp-registry.c
qobject-input-visitor.c
qobject-output-visitor.c
qom.json
rdma.json
replay.json schemas: add missing vim modeline 2022-01-27 11:20:50 +01:00
rocker.json
run-state.json
sockets.json
string-input-visitor.c
string-output-visitor.c
tpm.json
trace-events
trace.h
trace.json schemas: add missing vim modeline 2022-01-27 11:20:50 +01:00
transaction.json
ui.json qapi/monitor: allow VNC display id in set/expire_password 2022-03-02 18:12:40 +00:00
yank.json