Actions
Bug #16002
closedObjctCacher: doesn't correctly handle read replies on split BufferHeads
% Done:
0%
Source:
Support
Tags:
Backport:
jewel,hammer
Regression:
No
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
Pull request ID:
Crash signature (v1):
Crash signature (v2):
Description
In ObjectCacher::bh_read_finish, we have a nonsense snippet
} else { bh->bl.substr_of(bl, oldpos-bh->start(), bh->length()); mark_clean(bh); }
Here we're trying to map the offsets of an incoming OSD op reply's bufferlist with our BufferHeads. But oldpos==bh->start at all times. The correct offset calculation is "bh->start()-start" ("start" being a function parameter corresponding to bl's position within the object).
The patch is obviously simple enough, but I want tests verifying it as well.
Actions