Skip to content
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/ECTransaction: only read partial stripes when below *original* object size #15712

Merged
merged 2 commits into from Jun 19, 2017

Conversation

liewegas
Copy link
Member

…ject size

If we touch a partial stripe that is before the stripe-aligned object size
we need to read it in to do a read/modify/write that overalys the new data
onto the old.  However, if we have two writes, both touching the same
stripe but not completely covering it, and that stripe is past the original
end of file, there is no old data to read.  The previous code was using
the projected size to decide whether to do a stripe read, and would end
up trying to read data that wasn't there.

Fix by basing the stripe read decision on the original object size instead
of the projected_size.

Fixes: http://tracker.ceph.com/issues/19882
Signed-off-by: Sage Weil <sage@redhat.com>
@liewegas
Copy link
Member Author

http://pulpito.ceph.com/sage-2017-06-16_19:23:03-rbd:qemu-wip-19882---basic-smithi/

looks good in the rbd/qemu test that was triggering the original bug. still needs normal rados qa and review!

@liewegas
Copy link
Member Author

@liewegas liewegas merged commit ef2d22d into ceph:master Jun 19, 2017
@liewegas liewegas deleted the wip-19882 branch June 19, 2017 18:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
2 participants