summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/extent.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/extent.c b/src/extent.c
index a2dbde12..9237f903 100644
--- a/src/extent.c
+++ b/src/extent.c
@@ -445,6 +445,16 @@ extents_first_fit_locked(tsdn_t *tsdn, arena_t *arena, extents_t *extents,
extent_t *ret = NULL;
pszind_t pind = sz_psz2ind(extent_size_quantize_ceil(size));
+
+ if (!maps_coalesce && !opt_retain) {
+ /*
+ * No split / merge allowed (Windows w/o retain). Try exact fit
+ * only.
+ */
+ return extent_heap_empty(&extents->heaps[pind]) ? NULL :
+ extent_heap_first(&extents->heaps[pind]);
+ }
+
for (pszind_t i = (pszind_t)bitmap_ffu(extents->bitmap,
&extents_bitmap_info, (size_t)pind);
i < SC_NPSIZES + 1;