Project

General

Profile

Actions

Bug #3567

closed

librbd: striping completions modifying global state outside lock

Added by Dan Mick over 11 years ago. Updated over 11 years ago.

Status:
Resolved
Priority:
Urgent
Assignee:
Category:
-
Target version:
-
% 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.


Related issues 1 (0 open1 closed)

Related to Ceph - Bug #3428: osdc/Striper.cc: 275: FAILED assert(p->first == end - p->second.second)ResolvedDan Mick10/30/2012

Actions
Actions #1

Updated by Dan Mick over 11 years ago

  • Status changed from New to In Progress
  • Assignee set to Dan Mick
Actions #2

Updated by Dan Mick over 11 years ago

  • Status changed from In Progress to Resolved
Actions

Also available in: Atom PDF