On 09/05/2016 11:45 PM, Chen Hanxiao wrote:
From: Chen Hanxiao <chenhanxiao(a)gmail.com>
We try to find a snapshot that had no different between
the current state of RBD image.
If we failed in rbd_diff_iterate, just continue for the
next search iteration.
Signed-off-by: Chen Hanxiao <chenhanxiao(a)gmail.com>
---
src/storage/storage_backend_rbd.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
Do you have an example where failing in rbd_diff_iterate[2] should be
allowed to continue?
AFAICT the code is designed to use the 'diff' variable to determine if
two "objects" are different. If they aren't, then next one is attempted.
If rbd_diff_iterate[2] returns a failure code, then something else is
wrong and the message displayed.
If you're seeing something different, then perhaps there's a bug in
rbd_diff_iterate[2]
John
diff --git a/src/storage/storage_backend_rbd.c
b/src/storage/storage_backend_rbd.c
index 4dd4b24..2756c83 100644
--- a/src/storage/storage_backend_rbd.c
+++ b/src/storage/storage_backend_rbd.c
@@ -831,9 +831,10 @@ virStorageBackendRBDSnapshotFindNoDiff(rbd_image_t image,
#endif
if (r < 0) {
- virReportSystemError(-r, _("failed to iterate RBD snapshot
%s@%s"),
- imgname, snaps[i].name);
- goto cleanup;
+ VIR_DEBUG("failed to iterate RBD snapshot %s@%s,"
+ " rbd_diff return %d",
+ imgname, snaps[i].name, r);
+ continue;
}
/* If diff is still set to zero we found a snapshot without deltas */