Project

General

Profile

Actions

Bug #61744

open

PGAdvanceMap::start() 'from' epoch adjustment

Added by Matan Breizman 11 months ago.

Status:
New
Priority:
Low
Assignee:
-
Category:
-
Target version:
-
% Done:

0%

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

Description

/*
* PGAdvanceMap is scheduled at pg creation and when
* broadcasting new osdmaps to pgs. We are not able to serialize
* between the two different PGAdvanceMap callers since a new pg 
* will get advanced to the latest osdmap (at it's creation).
* As a result, we may need to adjust the PGAdvance operation
* 'from' epoch according to the following scenarios:
* 1) The pg is already advanced to the current osdmap.
* 2) The pg is advanced to *some* osdmap which is newer
     or older than this operation 'from' epoch.
*/

Consider the following as an example:

At the pg (1.x) creation: PGAdvanceMap (id=1, from=10, to=12)
Broadcasted map to pgs: PGAdvanceMap (id=2, from=10, to=13)
Broadcasted map to pgs: PGAdvanceMap (id=3, from=14, to=15)

PGAdvanceMap(id=2) won't be scheduled on the pg (1.x) since it's still being created.
PGAdvanceMap(id=3) will be scheduled on the pg (1.x).
The pg's osdmap epoch is 12 while from is 14,
therefore we must adjust 'from' epoch to the pg's osdmap epoch.

An attempt to tolerate this issue: https://github.com/ceph/ceph/pull/51961/commits/aa35013b5421560071642c95945411ab3d35aabf

Optimally, we should be able to serialize the two PGAdvance users to have continuous epoch ranges scheduled between them, without adjusting the 'from' epoch within PGAdvance::start().

No data to display

Actions

Also available in: Atom PDF