]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
osd: set the blocked_by relationship when rolling back to a degraded
authorZhiqiang Wang <zhiqiang.wang@intel.com>
Tue, 2 Jun 2015 08:20:35 +0000 (16:20 +0800)
committerSamuel Just <sjust@redhat.com>
Tue, 18 Aug 2015 18:25:23 +0000 (11:25 -0700)
commitaff8aa1a7b408e7a61ecec40c6ebd8b9fe4afe6f
treed30db43d6215eba17295d903aba6b05412384068
parentfa5b6e6d5e59c1dc501c834f2e8625efe601df38
osd: set the blocked_by relationship when rolling back to a degraded
object

In a scenario like below:
- A rollback op comes in, and is enqueued.
- Several other ops on the same object come in, and are enqueued.
- The rollback op dispatches, and finds the object which it rollbacks to is
degraded, then this op is pushbacked into a list to wait for the degraded
object to recover.
- The later ops are handled and responded back to client.
- The degraded object recovers. The rollback op is enqueued again and finally
responded to client.
This breaks the op order. Need to set the blocked_by relationship to enqueue
the later ops until the degraded object recovers.

Signed-off-by: Zhiqiang Wang <zhiqiang.wang@intel.com>
src/osd/ReplicatedPG.cc