diff --git a/cinder/backup/drivers/ceph.py b/cinder/backup/drivers/ceph.py index 65970d2f15b..6410ae3d88c 100644 --- a/cinder/backup/drivers/ceph.py +++ b/cinder/backup/drivers/ceph.py @@ -283,7 +283,7 @@ class CephBackupDriver(driver.BackupDriver): if self._file_is_rbd(volume): volume.rbd_image.discard(offset, length) else: - zeroes = '\0' * length + zeroes = '\0' * self.chunk_size chunks = int(length / self.chunk_size) for chunk in range(0, chunks): LOG.debug("Writing zeroes chunk %d", chunk) diff --git a/cinder/tests/unit/backup/drivers/test_backup_ceph.py b/cinder/tests/unit/backup/drivers/test_backup_ceph.py index 93af0ce1058..bb3815af5f9 100644 --- a/cinder/tests/unit/backup/drivers/test_backup_ceph.py +++ b/cinder/tests/unit/backup/drivers/test_backup_ceph.py @@ -667,8 +667,12 @@ class BackupCephTestCase(test.TestCase): self.assertEqual(2, image.write.call_count) self.assertEqual(2, image.flush.call_count) self.assertFalse(image.discard.called) + zeroes = '\0' * self.service.chunk_size + image.write.assert_has_calls([mock.call(zeroes, 0), + mock.call(zeroes, self.chunk_size)]) image.reset_mock() + image.write.reset_mock() # Now test with a remainder. with mock.patch.object(self.service, '_file_is_rbd') as \ @@ -681,6 +685,12 @@ class BackupCephTestCase(test.TestCase): self.assertEqual(3, image.write.call_count) self.assertEqual(3, image.flush.call_count) self.assertFalse(image.discard.called) + image.write.assert_has_calls([mock.call(zeroes, + self.chunk_size * 2), + mock.call(zeroes, + self.chunk_size * 3), + mock.call('\0', + self.chunk_size * 4)]) @common_mocks def test_delete_backup_snapshot(self):