Backport #16547
closed
- Copied from Bug #16002: ObjctCacher: doesn't correctly handle read replies on split BufferHeads added
- Tracker changed from Bug to Backport
- Description updated (diff)
- Status changed from Pending Backport to New
original 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.
- Status changed from New to 7
- Assignee changed from Greg Farnum to Nathan Cutler
- Description updated (diff)
- Status changed from 7 to In Progress
- Status changed from In Progress to Resolved
- Target version set to v10.2.3
- Subject changed from jewel:ObjctCacher: doesn't correctly handle read replies on split BufferHeads to jewel:ObjectCacher: doesn't correctly handle read replies on split BufferHeads
Also available in: Atom
PDF