Hello,
I'm using checkpoints to back up Libvirt domains. I'm using the "virsh 
backup-begin" tool and specifying the dombackup and checkpoint XML files. 
Everything works correctly (I perform full and incremental backups) without any 
issues.

When I list the checkpoints using the "virsh checkpoint-list DOMAIN --parent 
--topological" tool, it correctly shows me the entire chain of full and 
incremental backups.

However, when I perform a differential backup, setting the parent of that 
checkpoint to the last full checkpoint, I have problems when listing them. It 
tells me that the parent of the differential checkpoint is the last incremental 
checkpoint, instead of the full checkpoint. And I don't understand why, because 
when I perform the backup-begin, I specify the full checkpoint in the 
"incremental" label, and the bitmap generated from the disk is all the data 
from the full checkpoint on.


I put the xmls that I used:
FULL BACKUP:
dombackup.xml:
```
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<domainbackup mode="pull">
    <server name="localhost" port="10809"/>
    <disks>
        <disk name="vda" type="file">
            <scratch file="/tmp/libvirt-full-30-vda-debian12.scratch"/>
        </disk>
        <disk name="vdb" type="file">
            <scratch file="/tmp/libvirt-full-30-vdb-debian12.scratch"/>
        </disk>
    </disks>
</domainbackup>
```
checkpoint.xml
```
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<domaincheckpoint>
    <name>Full-30-Debian12</name>
    <disks>
        <disk name="vda" bitmap="Full-30-Debian12" checkpoint="bitmap"/>
        <disk name="vdb" bitmap="Full-30-Debian12" checkpoint="bitmap"/>
        <disk name="sda" checkpoint="no"/>
    </disks>
</domaincheckpoint>
```
--------------------------------------------------------
INCREMENTAL BACKUP:
dombackup.xml
```
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<domainbackup mode="pull">
    <server name="localhost" port="10809"/>
    <incremental>Full-30-Debian12</incremental>
    <disks>
        <disk name="vda" type="file">
            <scratch file="/tmp/libvirt-incremental-35-vda-debian12.scratch"/>
        </disk>
        <disk name="vdb" type="file">
            <scratch file="/tmp/libvirt-incremental-35-vdb-debian12.scratch"/>
        </disk>
    </disks>
</domainbackup>
```
checkpoint.xml
```
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<domaincheckpoint>
    <name>Incremental-31-Debian12</name>
    <parent>
        <name>Full-30-Debian12</name>
    </parent>
    <disks>
        <disk name="vda" bitmap="Incremental-31-Debian12" checkpoint="bitmap"/>
        <disk name="vdb" bitmap="Incremental-31-Debian12" checkpoint="bitmap"/>
        <disk name="sda" checkpoint="no"/>
    </disks>
</domaincheckpoint>
```
-----------------------------------------------------------------
DIFFERENTIAL BACKUP:
dombackup.xml
```
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<domainbackup mode="pull">
    <server name="localhost" port="10809"/>
    <incremental>Full-30-Debian12</incremental>
    <disks>
        <disk name="vda" type="file">
            <scratch file="/tmp/libvirt-differential-36-vda-debian12.scratch"/>
        </disk>
        <disk name="vdb" type="file">
            <scratch file="/tmp/libvirt-differential-36-vdb-debian12.scratch"/>
        </disk>
    </disks>
</domainbackup>
```

checkpoint.xml
```
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<domaincheckpoint>
    <name>Differential-32-Debian12</name>
    <parent>
        <name>Full-30-Debian12</name>
    </parent>
    <disks>
        <disk name="vda" bitmap="Differential-32-Debian12" checkpoint="bitmap"/>
        <disk name="vdb" bitmap="Differential-32-Debian12" checkpoint="bitmap"/>
        <disk name="sda" checkpoint="no"/>
    </disks>
</domaincheckpoint>
```
-----------------------------------------------------------------------

After apply several "virsh backup-begin" with these files:
```
virsh checkpoint-list debian12  --topological --parent          
 Name                                              Creation Time                
                 Parent
--------------------------------------------------------------------------------------------------------------------------------
 Full-30-Debian12                         2025-07-09 17:08:31 +0200   
 Incremental-31-Debian12            2025-07-09 17:34:56 +0200    
Full-30-Debian12
 Differential-32-Debian12             2025-07-09 17:37:51 +0200     
Incremental-31-Debian12
```


I do not know why the parent of "Differential-32-Debian12" is 
"Incremental-31-Debian12" instead of "Full-30-Debian12". Any ideas?

Reply via email to