From bd5d6f116416d1b410d57ce00cb3e2abf6de102b Mon Sep 17 00:00:00 2001 From: Greg Farnum Date: Thu, 15 May 2014 16:50:43 -0700 Subject: [PATCH] OSD: fix an osdmap_subscribe interface misuse When calling osdmap_subscribe, you have to pass an epoch newer than the current map's. _maybe_boot() was not doing this correctly -- we would fail a check for being *in* the monitor's existing map range, and then pass along the map prior to the monitor's range. But if we were exactly one behind, that value would be our current epoch, and the request would get dropped. So instead, make sure we are not *in contact* with the monitor's existing map range. Signed-off-by: Greg Farnum Reviewed-by: Samuel Just (cherry picked from commit 290ac818696414758978b78517b137c226110bb4) --- src/osd/OSD.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index d4078dbc1aaa8..e6e884db3790d 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -3465,7 +3465,7 @@ void OSD::_maybe_boot(epoch_t oldest, epoch_t newest) } // get all the latest maps - if (osdmap->get_epoch() > oldest) + if (osdmap->get_epoch() + 1 >= oldest) osdmap_subscribe(osdmap->get_epoch() + 1, true); else osdmap_subscribe(oldest - 1, true); -- 2.39.5