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 2 commits into from Jun 19, 2017


None yet
2 participants

liewegas commented Jun 15, 2017

osd/ECTransaction: only read partial stripes when below *original* ob…
…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.

Signed-off-by: Sage Weil <>

This comment has been minimized.


liewegas commented Jun 16, 2017

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

@liewegas liewegas added the needs-qa label Jun 16, 2017

@liewegas liewegas requested a review from jdurgin Jun 16, 2017


This comment has been minimized.

@liewegas liewegas merged commit ef2d22d into ceph:master Jun 19, 2017

4 checks passed

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

@liewegas liewegas deleted the liewegas:wip-19882 branch Jun 19, 2017

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