From: J. Eric Ivancich Date: Mon, 11 Oct 2021 20:17:46 +0000 (-0400) Subject: rgw: during "bucket check --fix" set index entry pool id correctly X-Git-Tag: v16.2.8~99^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F45455%2Fhead;p=ceph.git rgw: during "bucket check --fix" set index entry pool id correctly The current code sets the pool id of bucket index entries to the bucket index pool rather than the data pool. This fixes that. Signed-off-by: J. Eric Ivancich (cherry picked from commit 4c2ac79621c7d110d9b3664ef5ce2027d817560c) Conflicts: src/rgw/rgw_rados.cc Cherry-pick notes: - if condition under changes did not use braces in Pacific but does in later releases --- diff --git a/src/rgw/rgw_rados.cc b/src/rgw/rgw_rados.cc index b9f3e08f59e06..160098af1b18b 100644 --- a/src/rgw/rgw_rados.cc +++ b/src/rgw/rgw_rados.cc @@ -8954,6 +8954,7 @@ int RGWRados::check_disk_state(const DoutPrefixProvider *dpp, * non-bad ways this could happen (there probably are, but annoying * to handle!) */ } + // encode a suggested removal of that key list_state.ver.epoch = io_ctx.get_last_version(); list_state.ver.pool = io_ctx.get_id(); @@ -9009,16 +9010,29 @@ int RGWRados::check_disk_state(const DoutPrefixProvider *dpp, object.meta.owner_display_name = owner.get_display_name(); // encode suggested updates - list_state.ver.pool = io_ctx.get_id(); - list_state.ver.epoch = astate->epoch; + list_state.meta.size = object.meta.size; list_state.meta.accounted_size = object.meta.accounted_size; list_state.meta.mtime = object.meta.mtime; list_state.meta.category = main_category; list_state.meta.etag = etag; list_state.meta.content_type = content_type; - if (astate->obj_tag.length() > 0) + + librados::IoCtx head_obj_ctx; // initialize to data pool so we can get pool id + const bool head_pool_found = + get_obj_head_ioctx(dpp, bucket_info, obj, &head_obj_ctx); + if (head_pool_found) { + list_state.ver.pool = head_obj_ctx.get_id(); + list_state.ver.epoch = astate->epoch; + } else { + ldpp_dout(dpp, 0) << __PRETTY_FUNCTION__ << + " WARNING: unable to find head object data pool for \"" << + obj << "\", not updating version pool/epoch" << dendl; + } + + if (astate->obj_tag.length() > 0) { list_state.tag = astate->obj_tag.c_str(); + } list_state.meta.owner = owner.get_id().to_str(); list_state.meta.owner_display_name = owner.get_display_name();