| LIVE BLOCK OPERATIONS | 
 | ===================== | 
 |  | 
 | High level description of live block operations. Note these are not | 
 | supported for use with the raw format at the moment. | 
 |  | 
 | Snapshot live merge | 
 | =================== | 
 |  | 
 | Given a snapshot chain, described in this document in the following | 
 | format: | 
 |  | 
 | [A] -> [B] -> [C] -> [D] | 
 |  | 
 | Where the rightmost object ([D] in the example) described is the current | 
 | image which the guest OS has write access to. To the left of it is its base | 
 | image, and so on accordingly until the leftmost image, which has no | 
 | base. | 
 |  | 
 | The snapshot live merge operation transforms such a chain into a | 
 | smaller one with fewer elements, such as this transformation relative | 
 | to the first example: | 
 |  | 
 | [A] -> [D] | 
 |  | 
 | Currently only forward merge with target being the active image is | 
 | supported, that is, data copy is performed in the right direction with | 
 | destination being the rightmost image. | 
 |  | 
 | The operation is implemented in QEMU through image streaming facilities. | 
 |  | 
 | The basic idea is to execute 'block_stream virtio0' while the guest is | 
 | running. Progress can be monitored using 'info block-jobs'. When the | 
 | streaming operation completes it raises a QMP event. 'block_stream' | 
 | copies data from the backing file(s) into the active image. When finished, | 
 | it adjusts the backing file pointer. | 
 |  | 
 | The 'base' parameter specifies an image which data need not be streamed from. | 
 | This image will be used as the backing file for the active image when the | 
 | operation is finished. | 
 |  | 
 | In the example above, the command would be: | 
 |  | 
 | (qemu) block_stream virtio0 A | 
 |  | 
 |  | 
 | Live block copy | 
 | =============== | 
 |  | 
 | To copy an in use image to another destination in the filesystem, one | 
 | should create a live snapshot in the desired destination, then stream | 
 | into that image. Example: | 
 |  | 
 | (qemu) snapshot_blkdev ide0-hd0 /new-path/disk.img qcow2 | 
 |  | 
 | (qemu) block_stream ide0-hd0 | 
 |  | 
 |  |