Backport #16546
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.
- Assignee deleted (
Greg Farnum)
- Priority changed from Normal to High
- Has duplicate Bug #17545: Data corruption using RBD with caching enabled added
- Subject changed from hammer: ObjctCacher: doesn't correctly handle read replies on split BufferHeads to hammer: ObjectCacher doesn't correctly handle read replies on split BufferHeads
- Description updated (diff)
- Status changed from New to In Progress
- Assignee set to Nathan Cutler
- Description updated (diff)
- Assignee changed from Nathan Cutler to Alexey Sheplyakov
- Status changed from In Progress to Resolved
- Target version set to v0.94.10
Also available in: Atom
PDF