Project

General

Profile

Actions

Bug #4618

closed

Journaler: _is_readable() and _prefetch() don't communicate correctly

Added by Andras Elso about 11 years ago. Updated about 11 years ago.

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

0%

Source:
Community (dev)
Tags:
Backport:
Regression:
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
Component(FS):
Labels (FS):
Pull request ID:
Crash signature (v1):
Crash signature (v2):

Description

The Journaler has mechanisms to try and read extra data if an event is large enough that it exceeds the current prefetch, but they don't work properly. _is_readable() is setting the temp_fetch_len member based on how much more data it needs, but _prefetch() is interpreting it from read_pos. Seeing this bug requires having some pretty large Events in the log, and there's an easy workaround (increase the prefetch period config setting), but it's hard to diagnose and a bit embarrassing. ;)

I haven't got any patches to fix this issue, yet.

Original bug:

Our mds replay the journal forever, doesnt want to active.
There are 5 mons, and 5 osd.
max_mds is 2.

'ceph-mds2' mds.0.272 up:resolve seq 12
'ceph-mds1' mds.1.241 up:replay seq 25

The logs are here: http://elbandi.net/ceph/
Version everywhere: 0.56.4

Actions

Also available in: Atom PDF