From c0747922040841c371dbe2706354c08c73d8e59f Mon Sep 17 00:00:00 2001 From: Ilya Dryomov Date: Sat, 11 Nov 2023 14:15:49 +0100 Subject: [PATCH] librados/snap_set_diff: set end_size only if end object exists Since commit 73f50a13109f ("rbd-mirror: use generalized deep copy for image sync"), the only user of calc_snap_set_diff() immediately unsets end_size otherwise. calc_snap_set_diff() semantics are clearer if end_size is set together with end_exists and clone_end_snap_id. Signed-off-by: Ilya Dryomov --- src/librados/snap_set_diff.cc | 2 +- src/librbd/io/ObjectRequest.cc | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/librados/snap_set_diff.cc b/src/librados/snap_set_diff.cc index 06f76b02345f0..f80105b44ae10 100644 --- a/src/librados/snap_set_diff.cc +++ b/src/librados/snap_set_diff.cc @@ -76,7 +76,6 @@ void calc_snap_set_diff(CephContext *cct, const librados::snap_set_t& snap_set, saw_start = true; } - *end_size = r->size; if (end < a) { ldout(cct, 20) << " past end " << end << ", end object does not exist" << dendl; *end_exists = false; @@ -88,6 +87,7 @@ void calc_snap_set_diff(CephContext *cct, const librados::snap_set_t& snap_set, } if (end <= b) { ldout(cct, 20) << " end" << dendl; + *end_size = r->size; *end_exists = true; *clone_end_snap_id = b; break; diff --git a/src/librbd/io/ObjectRequest.cc b/src/librbd/io/ObjectRequest.cc index 827f551d1f79d..4bd5562bd8741 100644 --- a/src/librbd/io/ObjectRequest.cc +++ b/src/librbd/io/ObjectRequest.cc @@ -842,8 +842,6 @@ void ObjectListSnapsRequest::handle_list_snaps(int r) { diff.insert(0, image_ctx->layout.object_size); end_size = image_ctx->layout.object_size; clone_end_snap_id = end_snap_id; - } else if (!exists) { - end_size = 0; } if (exists) { -- 2.39.5