cls/rgw: preserve olh entry's name on last unlink #36015
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
When rgw_bucket_unlink_instance removes the last instance of a name, it also clears the value of rgw_bucket_olh_entry.key. However, bucket index resharding uses this key when choosing its shard placement, so an empty key causes all of these olh entries to be misplaced in shard 0. After reshard, all of the olh recovery/cleanup logic would be sent to the correct shard, and these misplaced olh entries would never be cleaned up.
Preserving the key's name on last unlink allows the olh entry to be resharded correctly and cleaned up normally.
Fixes: https://tracker.ceph.com/issues/46456
Checklist
Show available Jenkins commands
jenkins retest this pleasejenkins test classic perfjenkins test crimson perfjenkins test signedjenkins test make checkjenkins test make check arm64jenkins test submodulesjenkins test dashboardjenkins test dashboard backendjenkins test docsjenkins render docsjenkins test ceph-volume alljenkins test ceph-volume tox