From 1fe844efaf324ed7b9b64c21f1c3f8af9f616738 Mon Sep 17 00:00:00 2001 From: Xiaojun Liao Date: Thu, 22 Jun 2017 19:54:01 +0800 Subject: [PATCH] Fix ceph incremental backup fail Cinder _rbd_diff_transfer() uses "import-diff" and "export-diff" cmdline to do a incremental backup, it will fail without a ceph-conf file. Delay to delete temporary ceph-conf file in class RBDConnector during ceph volume backup. Change-Id: Ib74c85266b8c812f7a40dac293847a28768eae9a Partial-Bug: #1578036 --- os_brick/initiator/connectors/rbd.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/os_brick/initiator/connectors/rbd.py b/os_brick/initiator/connectors/rbd.py index e6bdc59..58fa6a8 100644 --- a/os_brick/initiator/connectors/rbd.py +++ b/os_brick/initiator/connectors/rbd.py @@ -120,8 +120,9 @@ class RBDConnector(base.BaseLinuxConnector): rbd_volume = linuxrbd.RBDVolume(rbd_client, volume) rbd_handle = linuxrbd.RBDVolumeIOWrapper( linuxrbd.RBDImageMetadata(rbd_volume, pool, user, conf)) - finally: + except Exception: fileutils.delete_if_exists(conf) + raise return rbd_handle @@ -223,6 +224,7 @@ class RBDConnector(base.BaseLinuxConnector): if device_info: rbd_handle = device_info.get('path', None) if rbd_handle is not None: + fileutils.delete_if_exists(rbd_handle.rbd_conf) rbd_handle.close() def check_valid_device(self, path, run_as_root=True):