In master there are at least two independent errors which prevent differential ceph-backups. Each is masqueraded as exception.BackupRBDOperationFailed in the CephBackupDriver. Each forces the full backup.
1. CephBackupDriver._snap_exists:
...
if snap.name == snap_name: # => AttributeError: 'dict' object has no attribute 'name'
...
2. CephBackupDriver.backup is called with wrong 'volume_file' argument: the volume_file.rbd_conf provides pathname of unexistent ceph-conf file of source volume. As a result the _rbd_diff_transfer fails. Reason is in the os_brick/initiator/connectors/rbd.py: RBDConnector._create_ceph_conf writes the conf to a temp file and deletes this file right after.
After these bugs were fixed in my devstack, I'm able to create the increment backups without problems. My patches are in attachment. I hope it'll help you.
Hi, Shubham.
In master there are at least two independent errors which prevent differential ceph-backups. Each is masqueraded as exception. BackupRBDOperat ionFailed in the CephBackupDriver. Each forces the full backup.
1. CephBackupDrive r._snap_ exists:
...
if snap.name == snap_name: # => AttributeError: 'dict' object has no attribute 'name'
...
2. CephBackupDrive r.backup is called with wrong 'volume_file' argument: the volume_ file.rbd_ conf provides pathname of unexistent ceph-conf file of source volume. As a result the _rbd_diff_transfer fails. Reason is in the os_brick/ initiator/ connectors/ rbd.py: RBDConnector. _create_ ceph_conf writes the conf to a temp file and deletes this file right after.
After these bugs were fixed in my devstack, I'm able to create the increment backups without problems. My patches are in attachment. I hope it'll help you.