<div dir="ltr"><div class="gmail_quote"><div dir="ltr">On Wed, Jun 13, 2018 at 7:42 PM Eric Blake <<a href="mailto:eblake@redhat.com">eblake@redhat.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Upcoming patches plan to introduce virDomainCheckpointPtr as a new<br>
object for use in incremental backups, along with documentation<br>
how incremental backups differ from snapshots.  But first, we need<br>
to rename any existing mention of a 'system checkpoint' to instead<br>
be a 'full system state snapshot', so that we aren't overloading<br>
the term checkpoint.<br></blockquote><div><br></div><div>I want to refer only to the new concept of checkpoint, compared with snapshot.</div><div><br></div><div>I think checkpoint should refer to the current snapshot. When you perform </div><div>a backup, you should get the changed blocks in the current snapshot.</div><div>When you restore, you want to the restore several complete snapshots,</div><div>and one partial snapshot, based on the backups of that snapshot.</div><div><br></div><div>Lets try to see an example:</div><div><br></div><div>T1</div><div>- user create new vm marked for incremental backup</div><div>- system create base volume (S1)</div><div>- system create new dirty bitmap (B1)</div><div><br></div><div>T2</div><div>- user create a snapshot</div><div>- dirty bitmap in original snapshot deactivated (B1)</div><div>- system create new snapshot (S2)</div><div>- system starts new dirty bitmap in the new snapshot (B2)</div><div><br></div><div>T3</div><div>- user create new checkpoint</div><div>- system deactivate current dirty bitmap (B2)</div><div>- system create new dirty bitmap (B3)</div><div>- user backups data in snapshot S2 using dirty bitmap B2</div><div>- user backups data in snapshot S1 using dirty bitmap B1</div><div><br></div><div>T4</div><div><div><div>- user create new checkpoint</div><div>- system deactivate current dirty bitmap (B3)</div><div>- system create new dirty bitmap (B4)</div><div>- user backups data in snapshot S2 using dirty bitmap B3</div><div><br></div></div><div>Lets say use want to restore to state as it was in T3</div><div><br></div><div>This is the data kept by the backup application:</div><div><br></div><div>- snapshots</div><div>  - S1</div><div>    - checkpoints</div><div>      - B1</div><div>  - S2</div><div>    - checkpoints</div><div>      - B2</div><div>      - B3 </div><div><br></div><div>T5</div><div>- user start restore to state in time T3</div><div>- user create new disk</div><div>- user create empty snapshot S1</div><div>- user upload snapshot S1 data to stoage</div><div>- user create empty snaphost disk S2</div><div>- user upload snapshot S1 data to stoage</div><div><br></div><div>John, are dirty bitmaps implemented in this way in qemu?</div><div><br></div><div>Nir</div><div><br></div><div><br></div><br class="inbox-inbox-Apple-interchange-newline"></div><div><br></div></div></div>