From: Mark Nelson Date: Wed, 24 Apr 2019 15:08:22 +0000 (-0500) Subject: common/PriorityCache: fix over-aggressive assert when mem limited X-Git-Tag: v15.1.0~2775^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=75f60f37767997eccb799e427bb1a4e79b275921;p=ceph.git common/PriorityCache: fix over-aggressive assert when mem limited Fixes: https://tracker.ceph.com/issues/39437 Signed-off-by: Mark Nelson --- diff --git a/src/common/PriorityCache.cc b/src/common/PriorityCache.cc index 9ce6905a8d8d..a12b6807462e 100644 --- a/src/common/PriorityCache.cc +++ b/src/common/PriorityCache.cc @@ -262,7 +262,13 @@ namespace PriorityCache // Each cache is going to get a little extra from get_chunk, so shrink the // available memory here to compensate. mem_avail -= get_chunk(1, tuned_mem) * caches.size(); - ceph_assert(mem_avail >= 0); + + if (mem_avail < 0) { + // There's so little memory available that just assigning a chunk per + // cache pushes us over the limit. Set mem_avail to 0 and continue to + // ensure each priority's byte counts are zeroed in balance_priority. + mem_avail = 0; + } // Assign memory for each priority level for (int i = 0; i < Priority::LAST+1; i++) {