Actions
Bug #3567
closedlibrbd: striping completions modifying global state outside lock
% Done:
0%
Source:
Development
Tags:
Backport:
Regression:
Severity:
Reviewed:
Affected Versions:
ceph-qa-suite:
Pull request ID:
Crash signature (v1):
Crash signature (v2):
Description
C_AioRead::finish places bits of a striped AioRead into the StripedReadResult
object's partial field for later assembly; however it does so without holding a lock
so the updates race and can damage the state. The damage is noticed in assemble_result(),
but happened earlier in add_partial_sparse_result.
The fix is to modify partial only while holding the AioCompletion lock while modifying
destriper->partial.
Actions