From: Ilya Dryomov Date: Sat, 11 Nov 2023 13:15:49 +0000 (+0100) Subject: librados/snap_set_diff: set end_size only if end object exists X-Git-Tag: v16.2.15~57^2~7 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=df8ecf3dda1b6b6eaa79f8f82f5470c0c4e2cc2b;p=ceph.git 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 (cherry picked from commit c0747922040841c371dbe2706354c08c73d8e59f) --- diff --git a/src/librados/snap_set_diff.cc b/src/librados/snap_set_diff.cc index b42ad9bcd5519..c5159195f464e 100644 --- a/src/librados/snap_set_diff.cc +++ b/src/librados/snap_set_diff.cc @@ -75,7 +75,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; @@ -87,6 +86,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 87c3cd7dd5289..b395ad687a4cc 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) {