Project

General

Profile

Actions

Fix #6059

closed

osd: block reads while repgather is writing across replicas

Added by Sage Weil over 10 years ago. Updated over 10 years ago.

Status:
Resolved
Priority:
High
Assignee:
Category:
OSD
Target version:
% Done:

0%

Source:
Development
Tags:
Backport:
Reviewed:
Affected Versions:
ceph-qa-suite:
Pull request ID:
Crash signature (v1):
Crash signature (v2):

Description

Currently we use the ondisk_write/read locks to do mutual exclusion over the local filestore which avoids reading data that is being modified. We also need to block reads while we are waiting for replcias to commit. Otherwise object state can appear to go back in time.

- start a write locally, and on remotes
- finish local write
- another op reads (new) locally written value
- all osds crash
- replica osds restart, but old primary does not
- they recover
- client reads prior object value

we do not see this in our testing because on failure/peering our clients resubmit their requests.

Actions #1

Updated by Ian Colle over 10 years ago

  • Translation missing: en.field_story_points set to 8.00
Actions #2

Updated by Samuel Just over 10 years ago

Note, just extending the obc->write_lock() region doesn't really work since it can cause the op_tp to be blocked preventing the op_wq threads from processing the OSDSubOpReply message.

Actions #3

Updated by Ian Colle over 10 years ago

  • Assignee set to David Zafman
Actions #4

Updated by Sage Weil over 10 years ago

  • Target version changed from v0.70 to v0.71
Actions #5

Updated by Samuel Just over 10 years ago

  • Assignee changed from David Zafman to Samuel Just
Actions #6

Updated by Ian Colle over 10 years ago

  • Status changed from New to In Progress
Actions #7

Updated by Ian Colle over 10 years ago

  • Status changed from In Progress to Fix Under Review
Actions #8

Updated by Sage Weil over 10 years ago

  • Status changed from Fix Under Review to Resolved
Actions

Also available in: Atom PDF