On 06/08/2015 09:21 AM, Vladimir Sementsov-Ogievskiy wrote: > From: Vladimir Sementsov-Ogievskiy > > Persistent dirty bitmaps will be saved into qcow2 files. It may be used > as 'internal' bitmaps (for qcow2 drives) or as 'external' bitmaps for > other drives (there may be qcow2 file with zero disk size but with > several dirty bitmaps for other drives). > > Signed-off-by: Vladimir Sementsov-Ogievskiy > --- > docs/specs/qcow2.txt | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 66 insertions(+) > > +== Dirty bitmaps == > + > +Dirty bitmaps is an optional header extension. It provides a possibility of > +storing dirty bitmaps in qcow2 image. The fields are: > + > + 0 - 3: nb_dirty_bitmaps > + Number of dirty bitmaps contained in the image > + > + 4 - 11: dirty_bitmaps_offset > + Offset into the image file at which the dirty bitmaps table > + starts. Must be aligned to a cluster boundary. To date, all 8-byte fields in qcow2 have been 8-byte aligned; this would break that nice feature. You could keep that nice property by swapping the order of these two fields. [Note that the spec on header extensions already requires clients to recognize that a header extension of 12 bytes implicitly pads out an additional 4 bytes, so that the next header extension type field once again lands on 8-byte alignment] > +== Dirty bitmaps == > + > +The feature supports storing several dirty bitmaps in the qcow2 file. Is it possible to have a qcow2 file that stores JUST dirty bitmap(s) and no guest data (that is, no L1 table, no backing file)? It might make sense, if we intend to allow persistent bitmap files that can be associated with a raw disk. But right now, the spec seems to require that l1_table_offset must be non-zero. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org