New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

osd/PrimaryLogPG: clear oi from trim_object() #15519

Merged
merged 1 commit into from Jun 13, 2017

Conversation

Projects
None yet
2 participants
@liewegas
Member

liewegas commented Jun 6, 2017

trim_object() is unique in that its resulting OpContxtUPtr is fed to
simple_opc_submit() but does not first pass through finish_ctx(). Almost
none of what finish_ctx is helpful for us because we are the only place
where we delete a clone, and for that reason it is not terribly useful to
put what we do into finish_ctx. However, one thing that finish_ctx()
does do that we don't (didn't) is clear out the object_info_t io on
delete. This would leave things like version with a value that would
bleed into future instantiations of the object and break things like
the prior_version in pg_log_entry_t's and, much later, break asserts
when loading the missing set off of disk.

Fix by clearing oi.

Fixes: http://tracker.ceph.com/issues/19947
Signed-off-by: Sage Weil sage@redhat.com

@jdurgin

jdurgin approved these changes Jun 6, 2017

I think I was running into similar issues with my peering deletes branch as well.

osd/PrimaryLogPG: clear oi from trim_object()
trim_object() is unique in that its resulting OpContxtUPtr is fed to
simple_opc_submit() but does not first pass through finish_ctx().  Almost
none of what finish_ctx is helpful for us because we are the only place
where we delete a clone, and for that reason it is not terribly useful to
put what we do into finish_ctx.  However, *one* thing that finish_ctx()
does do that we don't (didn't) is clear out the object_info_t io on
delete.  This would leave things like version with a value that would
bleed into future instantiations of the object and break things like
the prior_version in pg_log_entry_t's and, much later, break asserts
when loading the missing set off of disk.

Fix by clearing oi.

Fixes: http://tracker.ceph.com/issues/19947
Signed-off-by: Sage Weil <sage@redhat.com>

@liewegas liewegas merged commit aeb4029 into ceph:master Jun 13, 2017

2 of 3 checks passed

make check make check failed
Details
Signed-off-by all commits in this PR are signed
Details
Unmodified Submodules submodules for project are unmodified
Details

@liewegas liewegas deleted the liewegas:wip-19595 branch Jun 13, 2017

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment